2013-05-12 15 views
6

Próbuję zrozumieć, co BCNF jest i mam relację takiego:BCNF z One Surrogate Key oraz dwa unikalne klucze

Student (id, SSN, e-mail, imię, nazwisko)

gdzie

  • id jest podstawowym kluczem zastępczym z NOT NULL i auto inkrementacji właściwości,
  • SSN jest klucz unikalny o niezerowej własności i
  • e-mail jest również unikalnym kluczem o wartości niezerowej.

Czy istnieje coś, co narusza zasady BCNF, a jeśli tak, jak mogę przezwyciężyć tę sytuację przy lepszym projekcie?

EDIT

Próbuję napisać moje zależności funkcjonalne, ale proszę mnie poprawić, jeśli się mylę.

Istnieją trzy atrybuty, które określają pozostałe, więc mylące jest to, że ssn i e-mail istnieją zarówno po lewej, jak i po prawej stronie równań. Wydaje się, że relacja ta nie jest w BCNF ale musi być coś nie tak :)

id -> (ssn, email, name, surname) 
ssn -> (id, email, name, surname) 
email -> (id, ssn, name, surname) 

Odpowiedz

1

Tak, twoja tabela znajduje się w BCNF. Dzieje się tak dlatego, że nie ma nakładających się kluczy kandydatów - tzn. Nie ma atrybutów, które pojawiają się w dwóch różnych kluczach.

Jeśli masz jakiś inny atrybut, X, który tworzy część kluczy - np. (SSN, X) i (e-mail, X) - wtedy twoja tabela mogłaby nie powiodła się BCNF, ponieważ X powinno być takie samo dla danej pary SSN i ​​e-mail. Te kluczowe definicje pozwoliłyby na różne wartości X dla danego SSN i ​​e-maili.

Dla dobrego wyjaśnienia BCNF, przeczytaj this answer.

+0

Jeśli zestaw zależności sedran jest kompletny, to tak. Zasadniczo brak nakładających się kluczy nie oznacza automatycznie, że relacja jest w BCNF. Jeśli zdarzały się nie-kluczowe zależności lub częściowe zależności klucza, to nie spełniałoby to BCNF. – sqlvogel

+0

@sqlvogel - Nie mogę myśleć, jak możesz nie być w BCNF, jeśli nie ma nakładających się kluczy. Czy możesz mi pokazać przykład? –

+0

E.g. zależność A-> B, w której A i B są niebiałymi, byłaby naruszeniem BCNF (i 3NF) bez względu na to, jakie są klucze kandydata. – sqlvogel

2

Sposób odpowiedzieć na to pytanie poprawnie jest zidentyfikowanie co Zależności funkcyjne mają zastosowania. Napisz, jakie są Twoje zależności. Jeśli lewą stroną każdej nietrywialnej zależności jest superkey, relacja spełnia BCNF.

+0

dziękuję, zredagowałem moje pytanie – sedran

-4

Ograniczenia adresu e-mail lub SSN są unikalne lub NULL są zbyt silne. Możesz je wymusić, ale nie należy ich narzucać . (pomyśl: zagraniczni studenci.) Ogólnie nie jest dobrym pomysłem narzucanie ograniczeń na kluczowe domeny, które nie są pod Twoją jurysdykcją, nawet jeśli są bliskie unikalności (np. w przypadku SSN).

Jako przykład: literówki. Załóżmy, że ktoś chce się zapisać jako student, ale wygląda na to, że jej numer SSN jest już używany przez inną osobę, prawdopodobnie spowodowaną literówką. Czy chcesz odmówić przyjęcia nowego ucznia, czy usunąć starego? (lub czy zezwolić na to, aby pole SSN było unikalne lub NIEUŻYWALNE?)

update/Final note: Ten temat został oznaczony jako "datatbase-design" i "data-normalization". Zareagowałem na wybór projektu (który jest dyskusyjny).Inni próbowali reagować na aspektach BCNF (które są trywialne, biorąc pod uwagę Unikatowy klucz potencjalny i NOT NULL założenie)

normalizowanie złego danych modelu daje znormalizowany ale nadal zły model.

+2

Mądrość lub inne sposoby wybierania niektórych kluczy nie mają nic wspólnego z pytaniem o normalizację, ponieważ klucze są już wydane. Na pewno nie jest to zły pomysł, aby wymagać od studentów unikalnego adresu e-mail i unikalnego identyfikatora podatkowego. Wiele rzeczywistych systemów * do * wymaga unikalnych adresów e-mail jako identyfikatorów, ponieważ są one łatwo zapamiętywane, weryfikowane i względnie stabilne. Jeśli pojawi się zduplikowany numer SSN, rozsądnie jest nie zezwolić na to i wymagać od kogoś sprawdzenia, które z tych duplikatów może być źle wpisane lub nieważne. – sqlvogel

+0

OP jest przykładem zabawek i jest przykładem IMHO na * złe * zabawki, ponieważ zawiera domyślne założenia dotyczące "obcych" domen. W przypadku prawdziwych przykładów zabawek nauczyciel powinien używać prawdziwych problemów z zabawkami (takich jak sudoku, scrabble lub krzyżówki). – wildplasser

+3

Hmmm, powiedz Amazonowi lub Microsoftowi, że fakt, że wymagają one unikalnych adresów e-mail dla swoich systemów sprawia, że ​​są "zabawkami" ! Myślę, że to ty tworzysz założenia o problemie, który ustawia idealnie realistyczny przykład w teorii normalizacji. – sqlvogel