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)
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
@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? –
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