J'ai ce qui suit STUDENT
relatif à la première forme normale, où id
a été identifié comme clé primaire (email
ici est également unique pour tous les tuples):
STUDENT(id, email, first_name, last_name)
Je veux normaliser cette relation/tableau de telle sorte qu'il soit dans une troisième forme normale (3NF).
Les dépendances que j'ai pu identifier à partir de ce qui précède STUDENT
relatif/tableau sont les suivantes
Full:
{ id } → { email }
Transitif:
{ email } → { first_name, last_name }
Voici la partie où je suis confus. J'ai identifié email
comme une dépendance transitive, car il peut être identifié par la clé primaire (id
) et l'attribut/colonne email
peut identifier et déterminer le first_name
Et last_name
.
... Si je devais continuer avec cette idée, je serais éventuellement à une 3NF qui ressemble à:
[.____]STUDENT(id, email)
STUDENT_INFO(email, first_name, last_name)
Toutefois, la relation/table STUDENT
semble très redondante, car tout ce qu'il fait est indiqué à une autre relation/table. Mon processus de normalisation est-il correct? Ou ai-je eu la fausse dépendance de mes dépendances? Il semble que je rencontre toujours ce problème lorsque la relation/table initiale dispose de deux clés candidates qui pourraient être la clé primaire (id
ou email
_ Les deux pourraient identifier de manière unique chaque ligne).
Voici où j'ai mal tourné:
La chose importante sur les dépendances transitives est ces deux facteurs clés:
Dans mon exemple, j'ai identifié ce qui suit comme une dépendance transitive:
{ email } → { first_name, last_name }
Cependant, ce n'est pas le cas, comme email
est une clé candidate , et si nous utilisons id
comme clé primaire, nous avons une dépendance complète:
{ id } → { email, first_name, last_name }