I am trying to understand what BCNF is and I have a relation like this:
Student(id, ssn, email, name, surname)
where
- id is a primary surrogate key with not null and auto increment properties,
- ssn is a unique key with not null property, and
- email is also a unique key with not null propery.
Are there anything that violates BCNF and if so, how can I overcome this situation with a better design?
EDIT
I am trying to write my functional dependencies but please correct me if I'm wrong.
There are three attributes which determine the others, so it's confusing that ssn and email both exist at left hand side and right hand side of the equations. It seems that this relation is not in bcnf but there must be something wrong :)
id -> (ssn, email, name, surname)
ssn -> (id, email, name, surname)
email -> (id, ssn, name, surname)