---
tags: BD, lista 2
---
# Bazy Danych lista2
## ZADANIA 5/6 : <span style="color:green">1</span>, <span style="color:green">2</span>, <span style="color:green">3</span>, <span style="color:green">4</span>, <span style="color:green">5</span>, 6
**Zadanie 1** Rozważmy relację R(A, B, C). Napisz zapytanie algebry relacji oraz zapytanie rrd/rrk, które zwróci pusty wynik wtedy i tylko wtedy gdy para atrybutów A, B jest kluczem relacji R. :rocket:
* **Klucz relacji**: Podzbiór atrybutów relacji, których wartosci zawsze pozwalają jednoznacznie zidentyfikować krotkę relacji
* Wypisać te krotki, które są przykładem na to, że para A, B nie jest kluczem relacji, czyli krotki o tych samych wartościach w kolumnie A i B a różnych wartościach w kolumnie C.
Jeśli A,B są kluczem -> zapytanie zwróci pusty wynik.
Jeśli zapytanie zwróci pusty wynik -> można jednoznacznie zidetyfikować każdą krotkę po parze <a,b>.
* zapytanie algebry relacji:
* ``` σ R.A=R2.A ∧ R.B=R2.B ∧ R.C≠R2.C (R ⨯ ρ R2 (R)) ```
* zapytanie rrd/rrk:
* ``` { x | x ∈ R ∧ (∃y)(y ∈ R ∧ x.A=y.A ∧ x.B=y.B ∧ x.C≠y.C } ```
**Zadanie 2** Rozważmy relacje R(A, B, C) oraz S(X, Z), przy czym atrybut A jest kluczem w R. Napisz zapytanie algebry relacji oraz zapytanie rrk/rrd, które zwróci pusty wynik wtedy i tylko wtedy gdy atrybut Z relacji S jest kluczem obcym wskazującym na atrybut A relacji R. :rocket:
* **Klucz obcy**: służy do połączenia danych z różnych relacji.
* Gdy każdy z kluczy w relacji S w kolumnie Z występuje w kolumnnie A relacji R, wtedy Z jest kluczem obcym dla R. ``` pi Z S ∩ R.A = pi Z S```
* Wypisać te krotki S, których wartość w kolumnie Z nie wsytępuje w R w kolumnie A.
* zapytanie algebry relacji:
* ``` S - (π X, Y (S ⨝ R S.Z=R.A)) ```
* zapytanie rrd/rrk:
* ``` { x | x ∈ S ∧ (∀y)(y ∈ R ∧ x.Z≠y.A } ```
**Zadanie 3** Dane są relacje *R*, *S* i *T* o schematach *R = AB* , *S = B1B2* i *T = BC*. Przeanalizuj znaczenie poniższych zapytań i postaraj się znależć naturalną interpretację dla relacji zapytań w języku polskim. Zastanów się, czy są to formuły niezależne od dziedziny. Zapisz równoważne im formuły w algebrze relacji zawsze jeżli to możliwe. :rocket:
1. ```{a | (∃b)(R(a, b) ∧ ¬((∃a')a' > a ∧ (∃b')(R(a', b'))) )}``` - maksymalna wartość z kolumny A tabeli R.
* **Dziedzinowo niezależne**, do ustalenia wyniku dla zapytania wystarczy znać *R*.
* ``` R - π R.A (σ R.A < R2.A (R ⨯ ρ R2 (R))) ``` - elementy z *R.A*, takie że w *.A* nie ma elementów większych od nich (czyli elment maksymalny)
3. ```{a, b | (∀c)(T (c, a) ∨ T (c, b) ∨ (∀d)(¬T (c, d)))}``` -
<!-- zbiór par *a*, *b* gdzie *a* należy do dziedziny *T.B*, *b* należy do dziedziny *T.C*. -->
CZY NAPEWNO ?? *a*, *b* <- jedyne 2 wartości występujące w kolumnie *C* tabeli *T*.
* (Dziedzinowo **zależne**), nie ma równoważnej formuły w algebrze relacji, gdy dziedziną drugiej kolumny *T* jest zbiór nieskończony a w tabeli *T* występuję tylko jeden wpis odpowiedzią zapytanie może być każda para typu *<a,b>* gdzie *a* występuje w tabeli a *b* dowolne z dziedziny
**Zadanie 4** :rocket:
1. Podaj dane aktorów (pseudonim, imię, nazwisko, rok urodzenia, narodowość), którzy pojawili się w filmach produkowanych tylko w jednym roku.
* ``` { a | a ∈ A ∧ (∀ f1,f2)(f1∈F ∧ f2∈F (∃ r1,r2)(r1∈R i r2∈R i r1.idf=f1.idf i r2.idf=f2.idf i r1.pseudo=a.pseudo i r2.pseudo=a.pseudo) ⇒ f1.rokProd=f2.rokProd)) } ```
* każde dwa filmy, w których wystapił dany aktor muszą mieć ten sam rok produkcji
3. Podaj pełne krotki filmów, które są najnowszymi filmami reżyserów.
* ``` {f | f∈F ∧ (∀ f')((f'∈F ∧ f'.rezyser=f.rezyser) ⇒ f.rokProd>f'.rokProd)}```
* zbiór filmów, t. że każdy inny film tego samego reżysera był wyprodukowany wcześniej
5. Dla każdego filmu znajdź aktora, który dostał najwyższą gażę w tym filmie (został najlepiej opłacony z obsady filmu). W relacji wynikowej podaj pseudonim aktora, idf oraz gażę.
* ```{ a.pseudo, r.idf, r.gaza | a∈A ∧ r∈R ∧ a.pseudo=r.pseudo ∧ (∃f)(f∈F ∧ f.idf=r.idf ∧ (∀r')((r'∈R ∧ r.idf=f.idf) ⇒ r'.gaza <= r.gaza))} ```
* aktor *a*, który zagrał rolę *r* - najlepiej opłacalną role ze wszystkich ról w tym filmie
6. Podaj pełne krotki aktorów, którzy nigdy nie obniżyli swojej minimalnej gaży (w późniejszych latach mogła ona najwyżej rosnąć). Na wynik nie wpływają lata, w których aktor nie podał minimalnej gaży.
* ``` { a | (∀ m1,m2)((m1∈M, m2∈M ∧ m1.pseudo=a.pseudo ∧ m2.pseudo=a.pseudo ∧ m1.rok<m2.rok) ⇒ m1.minGaza<m2.minGaza) }```
**Zadanie 5** :rocket:
Niech D, dziedzina Zarobki = {0,1}:
* Imię|Zarobki
* Jan | x
Niech Q:
* sigma Zarobki=0 D
Wtedy możliwe relacje w wyniku Qd = D lub Qd = pusta relacja. W każdym z przypadków równość rep(Qd) = Q(rep(D)) nie zachodzi.
## MATERIAŁY
* kalkulator algebry relacji: https://dbis-uibk.github.io/relax/help#relalg-reference