Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Normalizacja do BCNF
jg44
post 7.07.2012, 08:07:46
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 14
Dołączył: 14.07.2011
Skąd: Gliwice / Wrocław

Ostrzeżenie: (0%)
-----


Witam,
czy mógłby mi ktoś przybliżyć, jak wygląda znormalizowanie bazy do 3.5NF (BCNF)? Znalazłem kilka definicji w necie, ale jakoś nie do końca potrafię je ogarnąć:

1) "Relacja jest w BCNF wtedy i tylko wtedy, gdy każdy jej atrybut zależy funkcjonalnie tylko od jej klucza głównego." - to czasami nie jest definicja 3NF? Poza tym co to znaczy, że relacja ma klucz główny? W relacji łączymy więcej niż jedną tabelę, więc może być przecież tak, że w każda z łączonych tabel będzie miała swój klucz główny. Oznacza to zatem, że aby relacja była w BCNF, to musi być tylko jeden klucz główny?

2) "BCNF - jedynymi elementami determinującymi są klucze kandydujące." - czy elementy determinujące (np. A i B) to takie, że pewne wartości z A zawsze występują z pewnymi wartościami z B? Rozumiem, że A występują w jednej tabeli a B w drugiej?

3) No i wikipedia: "Jeśli dla dwóch atrybutów X i Y, Y zależy fukncyjnie od X i nie jest w nim zawarty, to X jest kluczem lub zawiera klucz." - dla mnie to jest dalej definicja 3NF.

Z góry dziękuję
pozdrawiam

Ten post edytował jg44 7.07.2012, 08:08:15
Go to the top of the page
+Quote Post
alegorn
post 9.07.2012, 12:48:15
Post #2





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


uuuf, nie pamietam dokladnie na tyle by to jasno wytlumaczyc.
tak naprawde to z lekka akademickie podejscie w 99% powyzej 3ciej postaci nie ma sensu prowadzic normalizacji.

o ile pamietam (nie mam tej ksiazki pod reka niestety) dobrze to bylo opisane w tej książce

pozdrawiam,
J.
Go to the top of the page
+Quote Post
jg44
post 9.07.2012, 17:29:10
Post #3





Grupa: Zarejestrowani
Postów: 122
Pomógł: 14
Dołączył: 14.07.2011
Skąd: Gliwice / Wrocław

Ostrzeżenie: (0%)
-----


Zgadza się, normalizacja powyżej 3NF raczej nie ma sensu, jednak podobno jest tak, że "jeśli baza jest znormalizowana do 3NF, to prawie zawsze spełnia również wymogi BCNF". Projektując bazę znormalizowałem ją właśnie do 3NF i z ciekawości chciałbym wiedzieć, czy może przypadkiem jest też BCNF smile.gif
Go to the top of the page
+Quote Post
alegorn
post 10.07.2012, 09:32:21
Post #4





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


jak tylko dostane ta ksiazke w lapki - to przedrukuje zawartosc regulki :]

j.
Go to the top of the page
+Quote Post
hind
post 10.07.2012, 10:07:18
Post #5





Grupa: Zarejestrowani
Postów: 142
Pomógł: 24
Dołączył: 30.03.2009
Skąd: Rokitno Szlacheckie

Ostrzeżenie: (0%)
-----


Osobiście dodam że powyżej 3nf jeszcze 6nf (dknf) ma jakiś sens.
Go to the top of the page
+Quote Post
alegorn
post 11.07.2012, 10:03:25
Post #6





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


chole*a duzo tego.. troche to przeredaguje.

Cytat
nieco bardziej restrykcyjna wersja trzeciej postaci normalnej jest nazywana postacią [ciach] BCNF
w trzeciej postaci normalnej wszystkie atrybuty spoza klucza muszą zależeć od klucza danej tabeli
w postaci normalnej BCNF tej regule podlegaja takze kolumny nalezace do klucza
ten dodatkowy warunek na znaczenie w sytuacji gdy tabela zawiera wiele zbiorow kolumn ktore moga pelnic funkcje prawidlowych kluczy tej tabeli


z powyzszego wiele ine wynika, wiec przyklad:

Cytat
mamy trzy typy tagow
* opisujace skutki bledow
* wskazujace podsystemy na ktore wplywaja poszczegolne bledy
* tagi opisujace sposoby rozwiazania problemow

decydujemy ze kazdy blad moze miec przypisany ci najwyzej jeden tag kazdego typu.
dobrym kandydatem na primary moze byc : id_bledu i tag ale takze id_bledu i typ_tagu


WIELE POTENCJALNYCH KLUCZY

id bledu| tag | typ_tagu
1234 | awaria| skutki
3456 | druk | podsystem
3456 | awaria| skutki
5678 | raport| podsystem
5678 | awaria| skutki
5678 | dane | rozwiazanie

ANOMALIA

id bledu| tag | typ_tagu
1234 | awaria| skutki
3456 | druk | podsystem
3456 | awaria| skutki
5678 | raport| podsystem << ANOMALIA
5678 | awaria| podsystem << ANOMALIA
5678 | dane | rozwiazanie

postac normalna BCNF

TagiBledow
id_bledu| tag
1234 | awaria
3456 | druk
3456 | awaria
5678 | raport
5678 | awaria
5678 | dane

Bledy
tag | typ_tagu
awaria | skutki
druk | podsystem
raport | podsystem
dane | rozwiazanie

tabele w relacji :
TagiBledow n:1 Bledy



piwo sie nalezy.wink.gif

j.
Go to the top of the page
+Quote Post
jg44
post 12.07.2012, 10:07:20
Post #7





Grupa: Zarejestrowani
Postów: 122
Pomógł: 14
Dołączył: 14.07.2011
Skąd: Gliwice / Wrocław

Ostrzeżenie: (0%)
-----


No, zgadza się smile.gif
dziękuję smile.gif
Go to the top of the page
+Quote Post
pai1009
post 29.07.2014, 15:16:39
Post #8





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 29.07.2014

Ostrzeżenie: (0%)
-----


W zrozumieniu bcnf na pewno pomoże ten artykuł: http://www.vertabelo.com/blog/boyce-codd-normal-form-bcnf

Tłumaczenie jest rewelacyjne. Autor w prosty i przyjazny sposób opisuje The Boyce-Codd normal form.

Trochę inne podejście znajdziesz tutaj: https://www.youtube.com/watch?v=hTFyG5o8-EA (to fragment ze wstępu do relacyjnych baz danych prowadzony przez Jennifer Widom - wpółautorka znanych książek o bazach danych).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 1.05.2025 - 04:47