Nowe posty

Autor Wątek: [Bazy danych] Zależność wielowartościowa i proces normalizacji  (Przeczytany 7771 razy)

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 111
    • Zobacz profil
Pojawia się następujący problem. Jest nim traktowanie zależności wielowartościowej w procesie normalizacji.

Według poznanej definicji 1NF zakłada się, że każdy atrybut musi być funkcjonalnie zależny od klucza głównego. Ponieważ zależność wielowartościowa jest pojęciem szerszym od zależności funkcjonalnej, to muszę to jakoś rozwiązać. Rozwiązuję to w ten sposób, że włączam atrybut wskazywany zależnością wielowartościową do klucza głównego. I wszystkow  porządku. Pojawia się jednak pytanie czy mogę od tak rozbić klucz główny? Innym problemem jest definicja 4NF, która zakłada, że zależność wielowartościowa wcale nie musi wskazywać na atrybut kluczowy.

Jeżeli przyjmę natomiast, że 1NF definiuje tylko, iż każdy atrybut powinien być atomowy, to pojawia się problem z 2NF. Decyduje on, iż każdy atrybut niekluczowy powinien być w pełni funkcjonalnie zależny od klucza głównego. Oznacza to konieczność pozbycia się zależności wielowartościowych i wskazuje, że wskazany atrybut powinien być atrybutem kluczowym.

W 4NF ponoć możemy się jednak spotkać z sytuacją, gdzie atrybut niekluczowy zależny od jakiejś grupy atrybutów , ale wielowartościowo.

Mógłby ktoś rzucić jakimś przykładem? Mi zawsze "zdrowy rozsądek" nakazuje włączyć taką zależność do klucza głównego, by w 4NF zdekomponować schemat relacji z dwiema zależnościami wielowartościowymi na klika mniejszych schematów(dwa mniejsze).

Wiem, że w każdej bazie danych prócz klucza głównego relacja ma często unikalny numer, który jest ukrywany i nie widoczny nawet dla użytkownika. Natomiast, to już jest kwestia konkretnej implementacji. W relacji, która jest zbiorem nie ma powtarzających się elementów.

Jak ominąć założenie 2NF, by dojść z atrybutem niekluczowym zależnym wielowartościowo od innego atrybutu do 4NF?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3066
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
[Bazy danych] Zależność wielowartościowa i proces normalizacji
« Odpowiedź #1 dnia: 2010-08-29, 18:32:24 »
Podaj przykład tego, co rozumiesz przez "zależność wielowartościową"? Czy chodzi o rekord zawierający wśród pól zbiór bądź tablicę?

Generalnie relację wiele-do-jednego rozwiązuje się prostym odwołaniem, zaś wiele-do-wielu i jeden-do-wielu rozwiązuje się dodatkową tablicą łączników (jeżeli koniecznie trzeba rozróżnić jeden-do-wielu i wiele-do-jednego).

Prosimy o przykład pierwotnej relacji do dekompozycji!
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 111
    • Zobacz profil
[Bazy danych] Zależność wielowartościowa i proces normalizacji
« Odpowiedź #2 dnia: 2010-08-29, 18:46:49 »
Pesel, Samochód, Koła, Domy

Pesel -> Samochód
Samochód ->-> Koła
Pesel ->-> Domy

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 111
    • Zobacz profil
[Bazy danych] Zależność wielowartościowa i proces normalizacji
« Odpowiedź #3 dnia: 2010-08-29, 18:48:32 »
Pracujemy na różnych płaszczyznach. Ty pytasz się o określenie związków między encjami, a ja pytam się o zależności między atrybutami. Wiem, że to jest w sumie bez różnicy, jednak inaczej się definiuje.

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 111
    • Zobacz profil
[Bazy danych] Zależność wielowartościowa i proces normalizacji
« Odpowiedź #4 dnia: 2010-08-29, 18:49:46 »
W moim przykładzie mamy:

Pesel -> Samochód(jeden do wielu)
Samochód ->-> Koła(wiele do wielu)
Pesel ->-> Domy(wiele do wielu)

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 111
    • Zobacz profil
[Bazy danych] Zależność wielowartościowa i proces normalizacji
« Odpowiedź #5 dnia: 2010-08-29, 20:07:22 »
Chyba już wszystko rozumiem:
1. Atrybut wskazywany zależnościom wielowartościową musi być częścią klucza głównego relacji
2. Klucz relacji można zdekomponować, jednak odbywa się to dopiero w 4NF

Do tej pory miałem właśnie z tym problem - z jednej strony klucz główny nie powinno się dekomponować, lecz z drugiej strony mamy problem z 2NF i zależnością wielowartościową. Przeanalizowałem to raz jeszcze, a doszedłem do wniosku, że klucz głowny dekomponujemy dopiero w 4NF.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3066
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
[Bazy danych] Zależność wielowartościowa i proces normalizacji
« Odpowiedź #6 dnia: 2010-08-30, 07:42:21 »
Heh, pośrednio o to mi chodziło. Najlepiej coś się rozumie próbując to wytłumaczyć komuś innemu. Pozdrawiam!
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy