# Pog6 Dzień dobry, witam was w mojej kuchni. ## Zadanie 1 ![](https://i.imgur.com/ATAI6PE.png) ![](https://i.imgur.com/xxB3G1V.png) ![](https://i.imgur.com/EWWfOri.png) ![](https://i.imgur.com/1kkprxZ.png) Uznaje ze nadklucz to zbiór atrybutów relacji który jest kluczem lub zawiera klucz (z [wikipedii](https://pl.wikipedia.org/wiki/Posta%C4%87_normalna_(bazy_danych)#Posta%C4%87_normalna_Boyce%E2%80%99a-Codda_(BCNF_lub_3.5NF)) ) $$F = \{gang \rightarrow szef, szef \rightarrow dochód, proceder \rightarrow roi\}$$ Mamy zal. funkcyjną Gang -> Dochód z przechodniości, sama kolumna Gang nie jest ani kluczem ani nie zawiera klucza, więc nie jest nadkluczem, co daje nam że relacja nie jest w BCNF. Mafia(City, Gang, Criminal Activity) Bossix(Gang, Boss) Incomix(Boss, Income) ROIx(Criminal Activity, ROI) Jak skleimy do kupy natural joinem to dostaniemy poprzedni stan przed normalizacja czyli jest odwracalna. I łatwo tez widać ze suma zbiorów tych zaleznosci funkcyjnych tez bedzie taka sama wiec fajrancik. $$ Mafia \bowtie Bossix \bowtie Incomix \bowtie ROIx $$ ## Zadanie 2 ![](https://i.imgur.com/78M2w4Q.png) ![](https://i.imgur.com/fK4OP7A.png) Redundancja jest oczywista bo ten sam gang w tym samym mieście może jednoczeście handlować narkotykami i dziennikarzami i wyciętymi nerkami, więc w każdej krotce będzie się powtarzało nazwa miasta i gang. ## Zadanie 3 ![](https://i.imgur.com/zYJHB2b.png) Możemy rozbić dalej relacje Mafia(City,Gang,Crim_actv) na Mafia(City,Gang) Criminal_ac(Gang,Crim_actv) ## Zadanie 4 ![](https://i.imgur.com/zpkklHZ.png) $$ \pi_{proc, roi} (\sigma_{proc = proc1 \land roi \neq roi1}(Mafia \times \rho_{proc\rightarrow proc1, roi\rightarrow roi1}(Mafia))) $$ ## Zadanie 5 ![](https://i.imgur.com/KeRXkMF.png) tweet(tw_id, p_id, created_at, text, retweeted_tw_id, in_reply_to_tw_id) person(p_id, p_name, p_desc, loc_name) hashtags(h_id, tw_id, h_name) mentions(m_id, tw_id, men_p_id) *MAYBE OPT* person(p_id, p_name, p_desc, loc_id) loc(loc_id, loc_name) opłacalne gdy inty > stringi 1. Od autora_id zależy jego imię i opis, oraz lokacja zamieszkania $$ a\_id \rightarrow a\_name, a\_desc, a\_loc $$ 2. złożone typy are chujowe, so we are wypierdalamy je i zastępujemy tabelami hashtags i mentions 3. tweet $\bowtie$ author $\bowtie$ hashtags $\bowtie$ mentions $\rightarrow$ to jest to samo tylko z rozgrupowanymi hastagami i mentionsami