Jaki jest dobry opis pocałunku Boyce-Codd w normalnej formie?

Co to jest KISS (Keep it Simple, Stupid) sposób na przypomnienie sobie, co to jest Boyce-Codd normal form i jak wziąć nieznormalizowaną tabelę i BCNF?

Wikipedia 's info: niezbyt pomocne dla mnie.

Author: manlio, 2009-02-12

6 answers

Definicja Chrisa Date jest całkiem dobra, o ile rozumiesz, co on ma na myśli:

Każdy atrybut

Twoje dane muszą być podzielone na oddzielne atrybuty / kolumny / wartości, które nie zależą od innych atrybutów. Twoje pełne imię jest atrybutem. Twoja data urodzenia jest atrybutem. Twój wiek nie jest atrybutem, zależy od aktualnej daty, która nie jest częścią twojej daty urodzenia.

Musi reprezentować fakt

Każdy atrybut jest jednym faktem, a nie zbiór faktów. Zmiana jednego bitu w atrybucie zmienia całe znaczenie. Twoja data urodzenia jest faktem. Czy twoje pełne imię jest faktem? Cóż, w niektórych przypadkach tak jest, ponieważ jeśli zmienisz nazwisko, Twoje pełne imię będzie inne, prawda? Ale dla genealoga masz nazwisko i nazwisko rodowe, a jeśli zmienisz nazwisko, Twoje nazwisko nie ulegnie zmianie, więc są to oddzielne fakty.

O kluczu,

Jeden atrybut jest wyjątkowy, to klucz. Klucz jest atrybutem, który musi być unikalny dla wszystkich informacji zawartych w danych i nie może się zmienić. Twoje pełne imię nie jest kluczem, ponieważ może się zmienić. Twój numer ubezpieczenia społecznego nie jest kluczem, ponieważ są one ponownie wykorzystywane. Twoja data urodzenia SSN plus nie jest kluczem, nawet jeśli kombinacja nigdy nie może być ponownie użyta, ponieważ atrybut nie może być kombinacją dwóch faktów. GUID to klucz. Liczba, którą zwiększasz i nigdy nie używasz ponownie, jest kluczem.

Cały klucz,

Sam klucz musi być wystarczający [i konieczny!] do określ swoje wartości; nie możesz mieć tych samych danych reprezentowanych przez różne klucze, ani podzbiór kolumn kluczy nie może być wystarczający do zidentyfikowania faktu. Załóżmy, że masz książkę adresową z kluczem GUID, nazwą i wartościami adresu. W porządku jest, aby ta sama nazwa pojawiała się dwa razy z różnymi kluczami, jeśli reprezentują różne osoby i nie są "tymi samymi danymi". Jeśli Mary Jones w księgowości zmienia imię na Mary Smith, Mary Jones w sprzedaży również nie zmienia imienia. Z drugiej strony, jeśli Mary Smith i John Smith mają ten sam adres i to naprawdę jest to samo miejsce, to nie jest dozwolone. Musisz utworzyć nową parę klucz / wartość z adresem ulicy i nowym kluczem.

Nie wolno również używać klucza dla tego nowego adresu jednej ulicy jako wartości w książce adresowej, ponieważ teraz ten sam klucz adresu ulicy będzie reprezentowany dwukrotnie. Zamiast tego musisz utworzyć trzecią parę klucz / wartość z wartościami klucza książki adresowej i klucza adresu ulicy; znajdziesz adres ulicy osoby poprzez dopasowanie klucza książki i klucza adresu w tej grupie wartości.

I nic poza kluczem

Nie może być nic innego jak klucz, który identyfikuje twoje wartości. Na przykład, jeśli masz dozwolony adres "Taj Mahal" (zakładając, że jest tylko jeden), nie masz prawa do wartości miasta w tym samym rekordzie, ponieważ, jeśli znasz adres, znasz również miasto. Otworzyłoby to również możliwość istnienia więcej niż jednego Taj Mahal w inne miasto. Zamiast tego musisz ponownie utworzyć dodatkowy klucz lokalizacji z unikalnymi wartościami, takimi jak Taj, Biały Dom W DC i tak dalej oraz ich miasta. Lub zabronić" adresów", które są unikalne dla miasta.

Pomóż mi, Codd.
 49
Author: Dour High Arch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-13 16:37:35

Oto kilka przydatnych fragmentów strony wikipedii na trzeciej normalnej postaci :

Bill Kent definiuje trzecią normalną formę w ten sposób:

Każdy niekluczowy atrybut " musi dostarczyć fakt o kluczu, cały klucz, i tylko klucz."

Wymaganie, aby atrybuty niebędące kluczami były zależny od "całego klucza" zapewnia że tabela jest w 2NF; dalej wymaganie, aby atrybuty inne niż kluczowe były zależny od " Nic oprócz klucza" zapewnia, że tabela znajduje się w 3NF.

Chris Date dostosowuje mnemonikę Kenta do zdefiniowania Boyce-Codd normalnej postaci:

" każdy atrybut musi reprezentować fakt o kluczu, o całym kluczu i tylko klucz."Tutaj wymóg dotyczy każdego atrybut w tabeli, nie tylko atrybuty inne niż kluczowe.

To wchodzi w grę, gdy tabela ma wiele złożonych kluczy kandydata, a atrybut w jednym kluczu kandydata jest zależny od części innego klucza kandydata. Trzecia normalna forma Nie zabraniałaby tego, ponieważ wyklucza kluczowe atrybuty. Ale BCNF stosuje regułę również do kluczowych atrybutów.

Jeśli chodzi o sposób, w jaki tabela spełnia BCNF, musisz reprezentować dodatkową zależność, z innym atrybutem i ewentualnie przez podział atrybutów na inną tabelę.

 12
Author: Bill Karwin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-12 00:06:28

Wygooglowałem "boyce codd normal form" i po Wikipedii jest to drugi wynik. Mój podręcznik podaje bardzo prostą definicję w kategoriach relacyjnych systemów zarządzania bazami danych:

Lewa strona każdego nietrywialnego FD musi być superkey.

- "Systemy baz danych Pełna książka" Garcia-Molina, Ullman i Widom.

 1
Author: Celeritas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-10 05:46:36

Zasadniczo Boyce-Codd jest "piątą normalną formą". Jest wizualnie rozpoznawalny przez istnienie "jednostek atrybutywnych" w modelu danych, dla rzeczy takich jak typy (np. role, status, stan procesu, Typ lokalizacji, typ telefonu itp.). Encje atrybutywne (podtypy) to listy skończonych zestawów wartości, które dalej kategoryzują encje na poziomie klasy. Możesz więc mieć typ konta e-mail ('mobile', 'desk', 'VOIP') ('business', 'personal', 'gaming'), rolę (project manager, data modelarz, super model) itp. Inną wskazówką morfologiczną jest istnienie nadrodzin, (aka. master-klasy, super-klasy, meta-podmioty), takie jak strony (podtypy to firma, osoba itp.).

To jest w zasadzie Taksonomia gone wild(.. no filmik nie jest tak ekscytujący) do poziomu atomowego lub liściowego; zobacz komentarz Billa Karwina powyżej, aby uzyskać bardziej techniczne Wyjaśnienie.

Modele poziomów Boyce-Codd są zasadniczo bardzo szczegółowymi modelami logicznymi, wywodzącymi się z bardziej uproszczonych biznesowe modele koncepcyjne. **Zazwyczaj nie są one implementowane w modelu fizycznym, ponieważ optymalizacja PDM pod kątem wydajności (lub prostoty funkcjonalnej) może spowodować, że super-typy i jednostki atrybucyjne będą zarządzane jako listy rozwijane w interfejsie użytkownika, lub w logice za kulisami w aplikacji, lub w ograniczeniach bazy danych i metodach wymuszających integralność odniesienia. (tj. mogą skończyć się jako tabele wyszukiwania w schemacie PDM, lub mogą być obsługiwane przez KOD, a nie reprezentowane w bazie danych).

Więc - dlaczego je robią, jeśli mogą nie skończyć w PDM? Z tego samego powodu budujesz dobry model 3NF przed "optymalizacją", aby struktura bazy danych odzwierciedlała rzeczywisty świat, a tym samym była bardziej stabilna niż typowe kludges, które dziedziczymy i musimy wykonywać heroiczne czyny, aby działać, gdy zmieniają się wymagania naszych klientów/biznesu.

 1
Author: an old data modeler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-09 00:27:50

Najlepszą nieformalną odpowiedzią jaką czytałem jest to, że w BCNF każda "strzałka" w każdej zależności funkcjonalnej jest "strzałką" z klucza kandydata. Nie pamiętam źródła, ale to było prawdopodobnie coś, co napisał Chris Date.

 0
Author: Mike Sherrill 'Cat Recall',
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-02 16:08:54

Często najłatwiej jest słuchać swojego jelita, a to przyjdzie naturalnie. Ogólnie rzecz biorąc, jeśli spotkasz 3NF, spotkałeś BCNF. Nie obejmuje to szczegółowej analizy ERD lub ma przykłady, ale zgodnie z Codd istnieje trzynaście zasad. Uważam, że najlepiej przestrzegać tych zasad, ale zawsze pamiętaj, że nie ma jednego poprawnego sposobu na robienie rzeczy, więc stosuj się do nich luźno. Więc jeśli chodzi o RDBMS, oto reguły:

Http://www.87android.com/12-rules-of-relational-database-model-by-codd/

To może nie odpowiedzieć bezpośrednio na pytanie, ale jeśli pytasz o to, jak dostać się do BCNF lub łatwy sposób, aby go zapamiętać, to nie rozumiesz normalizacji wystarczająco dobrze. To jednak nie ma znaczenia. Relacyjne bazy danych przybierają wiele form i bardzo niewiele jest dobrze zrobionych. Najlepsze, co możesz zrobić, to wiedzieć, co to znaczy być relacyjnym, przestrzegać powyższych zasad i nie martwić się o poziom normalizacji. Proces normalizacji eliminuje powielanie danych. Każdy poziom bardziej przez przejście do migracji zależności funkcjonalnych. Miej to na uwadze, a będzie dobrze, twoje jelita i intelekt zrobi resztę.

 0
Author: Anthony Mason,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-15 21:52:01