# 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}]"}
Expand menu