Normaliser le tableau à la 3ème forme normale
Cette question est évidemment l'un des devoirs de la question. Je ne peux pas comprendre mon professeur et n'ont aucune idée de ce qu'il a dit pendant la campagne électorale. J'ai besoin de faire des instructions étape par étape afin de normaliser le tableau suivant d'abord en 1FN, puis 2FN, puis 3FN.
J'apprécie toute l'aide et de l'instruction.
OriginalL'auteur David Tunnell | 2013-03-07
Vous devez vous connecter pour publier un commentaire.
Bon, j'espère que je me souviens de tous les d'eux correctement, nous allons commencer...
Règles
Faire très court (et pas très précis, juste pour vous donner une première idée de ce que c'est):
Instructions
Exemples
NF1
une colonne "
state
" a des valeurs comme "WA, Washington". La NF1 est violé, parce que c'est deux valeurs, le sigle et le nom.Solution: pour répondre À la NF1, créez deux colonnes,
STATE_ABBREVIATION
etSTATE_NAME
.NF2
Imaginez que vous avez une table avec ces 4 colonnes, exprimant international des noms de modèles de voitures:
COUNTRY_ID
(numérique, clé primaire)CAR_MODEL_ID
(numérique, clé primaire)COUNTRY_NAME
(varchar)CAR_MODEL_NAME
(varchar)La table peut avoir ces deux lignes de données:
Qui dit, le modèle de la "Fox" est appelé "Fox" aux états-unis, mais le même modèle de voiture est appelé "Polo" en Allemagne (ne me souviens pas si c'est vrai).
De la NF2 est violé, parce que le nom du pays ne dépend pas de la voiture de l'ID de modèle et d'identification des pays, mais seulement sur l'identification des pays.
Solution: pour répondre À la NF2, déplacer
COUNTRY_NAME
dans une table distincte "PAYS" avec des colonnesCOUNTRY_ID
(clé primaire) etCOUNTRY_NAME
. Pour obtenir l'ensemble des résultats, y compris le nom du pays, vous aurez besoin de relier les deux tables à l'aide d'une JOINTURE.NF3
Dire que vous avez une table avec ces colonnes, exprimant les conditions climatiques des états:
STATE_ID
(varchar, clé primaire)CLIME_ID
(clé étrangère, l'ID de la zone climatique comme "désert", "forêt", etc.)IS_MOSTLY_DRY
(bool)NF3 est violé, parce que IS_MOSTLY_DRY ne dépend que de la CLIME_ID (au moins supposer que), mais pas sur le STATE_ID (clé primaire).
Solution: pour répondre à CF3, mettre la colonne
MOSTLY_DRY
dans la zone climatique de la table.Voici quelques réflexions autour de la table réelle donnée à l'exercice:
J'applique le ci-dessus mentionné NF règles sans contester les colonnes de clé primaire. Mais en fait ils n'ont pas de sens, comme nous le verrons plus tard.
Donc, si vous supprimez toutes les colonnes qui violent la NF2 ou CF3, seule la clé primaire reste (EMP_ID et DEPT_CD). Que reste viole la règles commerciales: cette structure devait permettre à un employé de travailler dans plusieurs départements à la fois.
Nous allons examiner à partir d'une distance. Votre modèle de données sur les employés, les départements, les compétences et les relations entre ces entités. Si vous normaliser, vous vous retrouverez avec une table pour les employés (contenant DEPT_CD en tant que clé étrangère), une pour les départements, l'un pour les compétences, et un autre pour la relation entre les employés et les compétences, la tenue de la "compétence ans" pour chaque tuple de EMP_ID et SKILL_CD (mon professeur aurait appelé la ci une "entité associative").
très détaillé, je trouve cela très utile! Merci
OriginalL'auteur user1992821
En regardant les deux premières lignes de votre table,
et en regardant les colonnes qui sont marqués "PK" dans ce tableau,
et en supposant que les "PK" signifie "Clé Primaire",
et en regardant les valeurs qui s'affichent pour ces deux colonnes dans ces deux lignes,
je recommanderais votre professeur pour sortir de l'enfer de la base de données de l'enseignement et de ne pas revenir jusqu'à ce qu'il lui-même éduqués correctement sur le sujet.
Cet exercice ne peut pas être pris au sérieux parce que l'énoncé du problème lui-même contient désespérément des informations contradictoires.
(Observer qu'en conséquence, il n'est tout simplement pas une telle chose comme une "bonne" ou "bonne" réponse à cette question !!!)
OriginalL'auteur Erwin Smout
Une autre réponse simpliste à venir.
En 3FN table relationnelle, tous les non-clé de la valeur est déterminée par la clé, la clé, et la clé (aidez-moi donc Codd ;)).
1FN: La clé. Cela signifie que si vous spécifiez la valeur de la clé, et une colonne nommée, il y a au plus une valeur à l'intersection de la ligne et de la colonne. Un à valeurs multiples, comme une série de valeurs séparées par des virgules, est rejetée, parce que vous ne pouvez pas obtenir directement la valeur avec juste une touche et acolumn nom.
2FN: toute La clé. Si une colonne qui n'est pas partie de la clé est déterminée par un bon sous-ensemble des colonnes de clé, puis 2FN est violé.
3FN: Et de rien, mais la clé. Si une colonne est déterminée par un ensemble de non colonnes de clé, puis 3FN est violé.
OriginalL'auteur Walter Mitty
3FN satisfait que si elle est en 2ème forme normale et ne ont aucune dépendance transitive et tous les attributs non-clé doit dépendre de la clé primaire.
Transitive de la dépendance:
R=(A,B,C).
A->B ET B->C, ALORS (A->C
OriginalL'auteur user3016962