# BD 09.03.2021
## Zadanie 1
#### Maurycy Borkowski
Nie da się. Zauważmy, że wszystkie operatory są monotonicznie niemalejące tzn. dla niemniejszego (w sensie liczności rekordów) argumentu zwrócą niemniejszą relacje:
Niech $R, S$ dowolne relacje tż. $R \subseteq S$ wtedy:
$\sigma_{F}(R) \subseteq \sigma_{F}(S)$
$\Pi_{l}(R) \subseteq \Pi_{l}(S)$
$R \times X \subseteq S \times X$
$R \cup X \subseteq S \cup X$
$R - X \subseteq S - X$
ale (ponieważ po lewej potencjalnie większy zbiór)
$X - R \subsetneq X - S$
Zatem nigdy nie uda nam się z kombinacji operatorów monotonicznie niemalejących uzyskać operatora, który zwróci mniejszą relacje dla większego argumentu.
**Intuicyjnie**
Tylko $\sigma_F$ zmniejszy nam liczbę rekordów relacji, ale nie da się za pomocą skończonej liczby warunków w $F$ zapisać różnicy, która by *działała* dla **dowolnych** $R, S$
## Zadanie 2
#### Jakub Kaczmarek
Przykładowy przebieg kwerendy:
$X,Y,Z$:
| | $X$ | $Y$ | $Z$ |
| - | - | - | - |
| A | 1, 2, 6 | 1, 3 | 2, 4|
$A=X \times \rho_{Y(A_Y)}(Y) \times \rho_{Z(A_Z)}(Z)$:
| $X.A$|$Y.A_Y$|$Z.A_Z$|
| - | - | - |
| 1 | 1 | 2 |
| 1 | 1 | 4 |
| 1 | 3 | 2 |
| 1 | 3 | 4 |
| 2 | 1 | 2 |
| 2 | 1 | 4 |
| 2 | 3 | 2 |
| 2 | 3 | 4 |
| 6 | 1 | 2 |
| 6 | 1 | 4 |
| 6 | 3 | 2 |
| 6 | 3 | 4 |
$B=\sigma_{X.A=Y.A_Y\lor X.A=Z.A_Z}(A)$:
| $X.A$|$Y.A_Y$|$Z.A_Z$|
| - | - | - |
| 1 | 1 | 2 |
| 1 | 1 | 4 |
| 2 | 1 | 2 |
| 2 | 3 | 2 |
$\pi_{X.A}(B)$:
| $X.A$|
| -|
| 1|
| 2|
Rozwiązanie jest niepoprawne ponieważ w przypadku gdy np $X=Y \land Z=\emptyset$ $X \times \rho_{Y(A_Y)}(Y) \times \rho_{Z(A_Z)}(Z)=\emptyset$ co jest sprzeczne z poprawnym wynikiem
#### Krzysztof Łyskawa
Zapytanie jest niepoprawne - jeśli jeden ze zbiorów $Y$ lub $Z$ będzie pusty, to cały iloczyn kartezjański będzie pusty.
Zauważmy, że $X \cap (Y \cup Z) \equiv X \backslash ((X \backslash Y) \cap (X \backslash Z))$ (dowód mogę przedstawić w formie rysunkowej)
$X \backslash (\pi_{A} (\sigma_{X.A=X1.A1} (\rho_{X(A)}(X \backslash Y) \times \rho_{X1(A_{1})} (X \backslash Z))))$ to właściwe zapytanie.
Alternatywnie:
$X \backslash (X \backslash Y \backslash Z)$
## Zadanie 3
A)
Maciej Zientara
$G_{count_{sok}(bar)}(\pi_{(bar,sok)}(B \Join P))$
zwraca nam liczbę soków podawaną w barach, do których ktoś chodzi
B) Łukasz Stasiak
$A=\pi_{osoba,sok,bar}(P \Join L)$
$B=G_{count_{sok}{(osoba,bar)}}(A)$
$C=\sigma_{n>=5}(B)$
więc zapytanie to:
$\pi_{osoba,bar}(C)$
C)
Krzysztof Wiśniewski
$\pi_{(osoba, sok, cena)} (G_{min_{cena}(osoba,sok)}(\pi_{(osoba, sok, cena)}(B \bowtie P)))$
Musimy złączyć B i P ponieważ chcemy mieć relację, która mówi nam, że w barze, w którym osoba bywa podają sok za cena, potem wystarczy wziąć z tej relacji kolumny osoba, sok i cena, a następnie dla tych samych soków i osób wziąć minimum z cena
D)
Martyna Firgolska
Zapytanie zwracające krotki (osoba, sok, bar) takie, że wśród wszystkich barów, w których bywa osoba *osoba* sok *sok* jest najtańszy w barze *bar*
$\pi_{sok, bar, osoba}((G_{min_{cena}(sok, osoba)}B\bowtie P)\bowtie P \bowtie B)$
## Zadanie 4
#### b)
$\pi_{first\_name, last\_name}$
$((\pi_{actor\_id, \, first\_name, \, last\_name} \, (\rho_{actor\_id \leftarrow id} \, actors))$ $\setminus$
$\pi_{actor\_id, \, first\_name, \, last\_name}$
$(\sigma_{df\_name=\texttt{'Quentin'} \, \land \, dl\_name=\texttt{'Tarantino'}}$
$((\rho_{actor\_id \leftarrow id} \, actors) \Join roles \Join$
$(\rho_{movie\_id \leftarrow id} \, movies) \Join movies\_directors \Join$
$(\rho_{director\_id \leftarrow id, \, df\_name \leftarrow first\_name, \,
dl\_name \leftarrow last\_name} \, directors))))$
#### c)
(πfirst_name, last_name actors)-(πfirst_name, last_name ( actors ⨝ actors.id= roles.actor_id
( (σ roles.actor_id = roles1.actor_id ∧ roles.movie_id ≠ roles1.movie_id
(roles ⨯ (ρ roles1 roles))))))
{"metaMigratedAt":"2023-06-15T20:55:38.446Z","metaMigratedFrom":"Content","title":"BD 09.03.2021","breaks":true,"contributors":"[{\"id\":\"1312d788-8426-4d3d-966a-71e7e97a16c3\",\"add\":619,\"del\":58},{\"id\":\"0203505b-5be5-45d7-9bbf-ae9dc2ca6a29\",\"add\":206,\"del\":0},{\"id\":null,\"add\":429,\"del\":17},{\"id\":\"0556d041-b131-47d3-afca-e7930713779a\",\"add\":77,\"del\":8},{\"id\":\"041a7688-bfc8-4a61-8171-43b00ff85d2a\",\"add\":152,\"del\":0},{\"id\":\"bd38f5c3-4a93-48af-86a0-893c1b4b6702\",\"add\":365,\"del\":0},{\"id\":\"e0bdc5f7-3b9c-4a67-a7a5-54465a931eb2\",\"add\":765,\"del\":0},{\"id\":\"eb65cf7a-cc5d-4999-ba0e-9f10ea7e8640\",\"add\":846,\"del\":0},{\"id\":\"0519b9ec-c2f3-4549-bb83-cae8788efe6b\",\"add\":439,\"del\":0}]"}