Sql domaine-clé forme normale (dk / NF) et la forme anormale

Après une base de données SQL est en troisième forme normale, vous avez éliminé la plupart, mais pas tous, les chances d'anomalies de modification. Formes normales au-delà de la troisième sont définis pour écraser ces quelques bugs restants.

Sommaire

Forme normale domaine-clé (DK / NF)

Boyce-Codd forme normale (BCNF), quatrième forme normale (4NF), et la cinquième forme normale (5NF) sont des exemples de ces formes. Chaque forme élimine une éventuelle anomalie de modification, mais ne garantit pas la prévention de toutes les anomalies de modification possibles. Forme normale domaine-clé, cependant, fournit une telle garantie.

Une relation est en domaine-clé forme normale (DK / NF) si chaque contrainte sur la relation est une conséquence logique de la définition de clés et de domaines. UN contrainte dans cette définition est une règle qui est assez précis que vous pouvez évaluer si oui ou non il est vrai. UN clé est un identifiant unique d'une ligne dans une table. UN domaine est l'ensemble des valeurs autorisées d'un attribut.

Regardez cette base de données, qui est en 1NF, pour voir ce que vous devez faire pour mettre cette base de données en DK / NF.

image0.jpg

Table: VENTES (N ° de client, Produit, Cours)




Key: N ° de client

Contraintes:

  • N ° de client détermine Produit

  • Produit détermine Cours

  • N ° de client doit être un entier> 1000

Pour appliquer la contrainte 3 (qui N ° de client doit être un entier supérieur à 1000), vous pouvez simplement définir le domaine pour N ° de client d'intégrer cette contrainte. Cela rend la contrainte une conséquence logique du domaine de la N ° de client colonne. Produit dépend de N ° de client, et N ° de client est une clé, de sorte que vous aurez aucun problème avec la contrainte 1, qui est une conséquence logique de la définition de la clé.

Contrainte 2 est un problème. Cours dépend (est une conséquence logique de) Produit, et Produit est pas de clé. La solution consiste à diviser la table des ventes en deux tableaux. On utilise de table N ° de client en tant que clé, et les autres utilisations Produit comme une clé. La base de données, en plus d'être en 3NF, est également en DK / NF.

Concevez vos bases de données de sorte qu'ils sont en DK / NF si possible. Si vous pouvez faire cela, l'application de clés et de domaine restrictions provoque toutes les contraintes à respecter, et des anomalies de modification ne sont pas possibles. Si la structure de la base de données est conçu pour vous empêcher de mettre en DK / NF, alors vous avez à construire les contraintes dans le programme d'application qui utilise la base de données. La base de données elle-même ne garantit pas que les contraintes seront satisfaites.

Forme anormale

Comme dans la vie, donc dans des bases de données: Parfois, être anormal est payante. Vous pouvez laisser emporter par la normalisation et aller trop loin. Vous pouvez briser une base de données en autant de tableaux que la chose entière devient lourd et inefficace. Les performances peuvent chuter. Souvent, la structure optimale pour votre base de données est un peu dénormalisée.

En fait, les bases de données pratiques (les très grands de ceux, en tout cas) ne sont presque jamais normalisées tout le chemin à DK / NF. Vous souhaitez normaliser les bases de données que vous concevez, autant que possible, cependant, pour éliminer la possibilité de corruption de données qui résulte d'anomalies de modification.

Après vous normaliser la base de données autant que vous le pouvez, de faire quelques récupérations comme une marche à sec. Si les performances ne sont pas satisfaisantes, examiner votre conception pour voir si dénormalisation sélective améliorerait les performances sans sacrifier l'intégrité. En ajoutant prudemment redondance dans des endroits stratégiques et dénormaliser juste assez, vous pouvez arriver à une base de données qui est à la fois efficace et sûre d'anomalies.


» » » » Sql domaine-clé forme normale (dk / NF) et la forme anormale