Question

J'ai une table qui a une catégorie d'attributs.E.g une table où je sauve les chansons qui a un genre d'attribut:

Songs(
ID (INT), 
Name (STRING), 
Genre: (STRING)
)

est la table en 3ème forme normale?

Je veux dire que je sais qu'il est préférable de sauvegarder la Genrein une autre table et la relation entre les tables comme:

Songs(
ID (INT), 
Name (STRING), 
Genre_ID: (INT)
)

Genre(
ID (INT),
Name (String)
)

où gen 100oDiceCode.

Mais je ne peux pas déterminer si le premier cas (avec une table) enfreint toute règle de la 3ème forme normale!

Est-ce que ça?Si oui, lequel?

merci, Mike

Était-ce utile?

La solution

Quelles sont les clés?Quelles dépendances est la table censée satisfaire?Ce sont les choses que nous devons savoir pour répondre à votre question.

Je suppose que cette identification est la seule clé et que l'identifiant -> {nom, genre} et qu'il n'y a pas d'autres dépendances non triviales et non clés.Si c'est correct, les chansons sont en 3NF.Plus important encore, c'est dans BCNF et 5NF.

Remplacement du genre d'attribut String avec un entier Genre_ID n'a absolument rien à voir avec une forme normale.

Autres conseils

Répétez après moi.

"Les numéros d'identification n'ont rien à voir avec la normalisation. Les numéros d'identification n'ont rien à voir avec la normalisation. Les numéros d'identification n'ont rien à voir avec la normalisation."

Si votre objectif est de stocker un genre par nom de chanson, cette table

song_name           genre
--
Toxic               Pop
Itsy Bitsy Spider   Children's

où Song_Name est la clé principale, est en 5NF.(Et 4NF, et 3NF, et ainsi de suite).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top