SQL premier, deuxième et troisième formes normales

Il existe trois sources d'anomalies de modification dans SQL Ceux-ci sont définis comme des premier, deuxième, troisième et formes normales

Sommaire

(1NF, 2NF, 3NF). Ces formes normales agissent comme des remèdes à la modification des anomalies.

Première forme normale

Pour être dans la première forme normale (1NF), une table doit avoir les qualités suivantes:

  • Le tableau est à deux dimensions avec des lignes et des colonnes.

  • Chaque ligne contient des données qui se rapporte à quelque chose ou une partie d'une chose.

  • Chaque colonne contient des données pour un seul attribut de la chose qu'il est décrit.

  • Chaque cellule (intersection d'une ligne et d'une colonne) de la table doit avoir une seule valeur.

  • Les entrées dans une colonne doivent tous être de la même espèce. Si, par exemple, l'entrée dans une rangée d'une colonne contient un nom de l'employé, toutes les autres lignes doivent contenir les noms des employés dans cette colonne, aussi.

  • Chaque colonne doit avoir un nom unique.




  • Pas de deux rangées peuvent être identiques (qui est, chaque rangée doit être unique).

  • L'ordre des colonnes et l'ordre des rangées ne sont pas significatifs.

Une table (relation) dans la première forme normale est à l'abri de certains types d'anomalies de modification, mais est encore soumise à d'autres. Le tableau des ventes est la première forme normale, et la table est soumise à suppression et d'insertion des anomalies. Première forme normale peut se révéler utile dans certaines applications, mais peu fiable dans d'autres.

image0.jpg

Deuxième forme normale

Pour apprécier la deuxième forme normale, vous devez comprendre l'idée de dépendance fonctionnelle. UN dépendance fonctionnelle est une relation entre deux ou plusieurs attributs. Un attribut est fonctionnellement dépendant d'un autre, si la valeur du deuxième attribut détermine la valeur du premier attribut. Si vous connaissez la valeur du deuxième attribut, vous pouvez déterminer la valeur du premier attribut.

Supposons, par exemple, une table qui a des attributs (colonnes) StandardCharge, NumberOfTests, et TotalCharge qui se rapportent à travers l'équation suivante:

TotalCharge = StandardCharge * NumberOfTests

TotalCharge est fonctionnellement dépendant à la fois StandardCharge et NumberOfTests. Si vous connaissez les valeurs de StandardCharge et NumberOfTests, vous pouvez déterminer la valeur de TotalCharge.

Chaque table en première forme normale doit avoir une clé primaire unique. Cette clé peut être constituée d'une ou plus d'une colonne. Une clé consistant en plus d'une colonne est appelée clé composite. Pour être dans la deuxième forme normale (2NF), tous les attributs non-clés doit dépendre de la clé entière. Ainsi, toute relation qui est en 1NF avec une clé d'attribut est automatiquement en deuxième forme normale.

Si une relation a une clé composite, tous les attributs non-clés doit dépendre de toutes les composantes de la clé. Si vous avez une table où certains attributs non-clés ne dépendent pas de toutes les composantes de la clé, briser la table en deux ou plusieurs tables de sorte que - dans chacune des nouvelles tables - tous les attributs non-clés dépendent de tous les composants de la clé primaire.

Cela semble confus? Regardez un exemple pour clarifier les choses. Envisager la table sales. Au lieu d'enregistrer seulement un achat unique pour chaque client, vous ajoutez une ligne à chaque fois qu'un client achète un article pour la première fois. Une autre différence est que les clients charter (ceux qui N ° de client valeurs de 1001 à 1007) bénéficient d'une réduction sur le prix normal.

image1.jpg

N ° de client ne permet pas d'identifier de manière unique une rangée. Dans deux rangées, N ° de client est 1001. Dans deux autres rangées, N ° de client 1010. La combinaison est de la N ° de client et la colonne Produit colonne identifie de manière unique une rangée. Ces deux colonnes sont ensemble une clé composite.

Si pas pour le fait que certains clients sont admissibles à un rabais et d'autres pas, la table ne seraient pas dans la deuxième forme normale, parce Cours (un attribut non-clé) dépendrait que sur une partie de la clé (Produit). Parce que certains clients ne sont admissibles à un rabais, Cours dépend à la fois N ° de client et Produit, et la table est la deuxième forme normale.

Troisième forme normale

Tables dans la deuxième forme normale sont particulièrement vulnérables à certains types d'anomalies de modification - en particulier ceux qui viennent de dépendances transitives.

UN transitive dépendance lorsque se produit un attribut dépend d'un second attribut qui dépend d'un troisième attribut. Les suppressions dans une table avec une telle dépendance peut entraîner un effet de la perte de l'information. Une relation en troisième forme normale est une relation dans la deuxième forme normale sans dépendances transitives.

Regardez à nouveau à la table de vente, qui vous le savez est la première forme normale. Tant que vous contraignez entrées pour permettre une seule ligne pour chaque N ° de client, vous avez une clé primaire unique attribut, et la table est la deuxième forme normale. Toutefois, le tableau est encore soumise à des anomalies. Qu'est-ce que si le client est satisfait de 1,010 l'eau de javel, par exemple, et renvoie l'article pour un remboursement?

Vous voulez supprimer la troisième ligne de la table, qui enregistre le fait que le client a acheté 1 010 d'eau de Javel. Vous avez un problème: Si vous supprimez cette ligne, vous perdez aussi le fait que l'eau de Javel a un prix de 4 $. Cette situation est un exemple d'une dépendance transitive. Cours dépend de Produit, qui, à son tour, dépend de la clé primaire N ° de client.

Briser le tableau des ventes en deux tables résout le problème de la dépendance transitive. Les deux tableaux constituent une base de données qui est en troisième forme normale.


» » » » SQL premier, deuxième et troisième formes normales