Dana jest tabela \(\displaystyle{ R}\) z atrybutami \(\displaystyle{ A,B,C,D,E}\) i zależnościami funkcyjnymi
\(\displaystyle{ A \rightarrow B}\)
\(\displaystyle{ B \rightarrow C}\)
\(\displaystyle{ E \rightarrow D}\)
\(\displaystyle{ D \rightarrow E}\)
1.Podaj wszystkie klucze tej tabeli.
2.Które z podanych zależności naruszają trzecią postać normalną(3NF)?
Jak to zrobić?
[SQL] Dana jest tabela R i zależności funkcyjne
-
- Użytkownik
- Posty: 3388
- Rejestracja: 26 maja 2016, o 01:25
- Płeć: Mężczyzna
- Lokalizacja: Kraków
- Podziękował: 975 razy
- Pomógł: 3 razy
Re: [SQL] Dana jest tabela R i zależności funkcyjne
No dobra to definicja klucza jest taka:
Podzbiór \(\displaystyle{ K}\) zbioru atrybutów relacji \(\displaystyle{ R(A_1,A_2,...,A_n)}\) nazywamy jej kluczem jeśli jest nadkluczem i żaden jego podzbiór nie jest nadkluczem.
Podzbiór \(\displaystyle{ N}\) zbioru atrybutów relacji \(\displaystyle{ R(A_1,A_2,...,A_n)}\) nazywamy jej nadkluczem jeśli zachodzi zależność funkcyjna
\(\displaystyle{ N \rightarrow A_1A_2...A_n}\).
No to jak rozumiem tutaj będzie kluczem będzie:
\(\displaystyle{ \left\{ A,D\right\}}\) lub \(\displaystyle{ \left\{ A,E\right\}}\), a na przykład \(\displaystyle{ \left\{ A,B,D\right\}}\) jest nadkluczem. Czyli jak rozumiem nadkluczem jest zbiór od którego zależą wszystkie atrybuty danej relacji, zgadza się? A czy \(\displaystyle{ A \rightarrow A}\)? Myślę, że tak.
Dobra to trzecia postać normalna to:
Relacja jest w trzeciej postaci normalnej, jeśli jest w drugiej postaci normalnej i atrybuty niekluczowe zalezą wyłącznie od klucza i niczego więcej.
No to na bazie tej definicji powiedziałbym, że \(\displaystyle{ B \rightarrow C}\) narusza trzecią postać normalną bo niekluczowy atrybut \(\displaystyle{ C}\) zależy od \(\displaystyle{ B}\), który jest niekluczowy. Czy tak jest dobrze?
Podzbiór \(\displaystyle{ K}\) zbioru atrybutów relacji \(\displaystyle{ R(A_1,A_2,...,A_n)}\) nazywamy jej kluczem jeśli jest nadkluczem i żaden jego podzbiór nie jest nadkluczem.
Podzbiór \(\displaystyle{ N}\) zbioru atrybutów relacji \(\displaystyle{ R(A_1,A_2,...,A_n)}\) nazywamy jej nadkluczem jeśli zachodzi zależność funkcyjna
\(\displaystyle{ N \rightarrow A_1A_2...A_n}\).
No to jak rozumiem tutaj będzie kluczem będzie:
\(\displaystyle{ \left\{ A,D\right\}}\) lub \(\displaystyle{ \left\{ A,E\right\}}\), a na przykład \(\displaystyle{ \left\{ A,B,D\right\}}\) jest nadkluczem. Czyli jak rozumiem nadkluczem jest zbiór od którego zależą wszystkie atrybuty danej relacji, zgadza się? A czy \(\displaystyle{ A \rightarrow A}\)? Myślę, że tak.
Dobra to trzecia postać normalna to:
Relacja jest w trzeciej postaci normalnej, jeśli jest w drugiej postaci normalnej i atrybuty niekluczowe zalezą wyłącznie od klucza i niczego więcej.
No to na bazie tej definicji powiedziałbym, że \(\displaystyle{ B \rightarrow C}\) narusza trzecią postać normalną bo niekluczowy atrybut \(\displaystyle{ C}\) zależy od \(\displaystyle{ B}\), który jest niekluczowy. Czy tak jest dobrze?
-
- Moderator
- Posty: 2828
- Rejestracja: 15 cze 2008, o 15:45
- Płeć: Mężczyzna
- Lokalizacja: Seattle, WA
- Podziękował: 3 razy
- Pomógł: 356 razy
Re: [SQL] Dana jest tabela R i zależności funkcyjne
Wydaje się okej, ale dawno się w to nie bawiłem, więc gwarancji nie daję. Wypadałoby podać jeszcze definicję drugiej postaci normalnej (a potem pewnie pierwszej), bo nie wiem, czego tam używacie.
-
- Użytkownik
- Posty: 3388
- Rejestracja: 26 maja 2016, o 01:25
- Płeć: Mężczyzna
- Lokalizacja: Kraków
- Podziękował: 975 razy
- Pomógł: 3 razy
Re: [SQL] Dana jest tabela R i zależności funkcyjne
Warunkiem na drugą postać normalną, jest to, aby każdy niekluczowy atrybut, zależał funkcyjnie od całego klucza. Warunkiem pierwszej postaci normalnej, jest to, aby każdy atrybut w relacji przyjmował tylko wartości niepodzielne.
To jak, zgodnie z tymi definicjami jest dobrze?
To jak, zgodnie z tymi definicjami jest dobrze?
-
- Moderator
- Posty: 2828
- Rejestracja: 15 cze 2008, o 15:45
- Płeć: Mężczyzna
- Lokalizacja: Seattle, WA
- Podziękował: 3 razy
- Pomógł: 356 razy
Re: [SQL] Dana jest tabela R i zależności funkcyjne
Wygląda na to, że druga postać normalna nie jest spełniona, bo \(\displaystyle{ C}\) nie zależy od całego klucza. Jeżeli tak jest w istocie, to trudno tutaj dyskutować, która zależność nie spełnia 3 formy normalnej.
-
- Użytkownik
- Posty: 3388
- Rejestracja: 26 maja 2016, o 01:25
- Płeć: Mężczyzna
- Lokalizacja: Kraków
- Podziękował: 975 razy
- Pomógł: 3 razy
Re: [SQL] Dana jest tabela R i zależności funkcyjne
No, ale to można chyba powiedzieć, że zależność \(\displaystyle{ B \rightarrow C}\) narusza trzecią postać normalną, pozostałe są w porządku, czy tak?
-
- Moderator
- Posty: 2828
- Rejestracja: 15 cze 2008, o 15:45
- Płeć: Mężczyzna
- Lokalizacja: Seattle, WA
- Podziękował: 3 razy
- Pomógł: 356 razy
Re: [SQL] Dana jest tabela R i zależności funkcyjne
Nie wiem. Według Twoich definicji druga postać normalna nie jest spełniona, jeżeli tak jest w istocie, to dyskutowanie o trzeciej postaci normalnej niespecjalnie ma dla mnie sens. Jeżeli zaś zapytamy o to, które atrybuty nie spełniają „zalezą wyłącznie od klucza i niczego więcej”, to Twoja odpowiedź wydaje się poprawna.