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

Video: Merise : 5 FN d'un MCD

Il existe trois sources d`anomalies de modification dans SQL Ceux-ci sont définis comme premier, deuxième et troisième formes normales (1NF, 2NF, 3NF). Ces formes normales agissent comme des remèdes à la modification des anomalies.

Première forme normale

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

  • Le tableau est à deux dimensions de rangées et de colonnes.

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

  • Chaque colonne contient des données pour un seul attribut de la chose, 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 du même genre. 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.

  • Deux lignes peuvent être identiques (autrement dit, chaque rangée doit être unique).

  • L`ordre des colonnes et l`ordre des lignes 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 de vente est en première forme normale, et la table est soumis à des anomalies de deletion et d`insertion. Première forme normale peut se révéler utile dans certaines applications, mais peu fiables dans d`autres.

Deuxième forme normale

Pour apprécier la deuxième forme normale, vous devez comprendre l`idée de la dépendance fonctionnelle. UNE dépendance fonctionnelle une relation entre ou parmi les 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 second attribut, vous pouvez déterminer la valeur du premier attribut.

Supposons, par exemple, qu`une table a des attributs (colonnes) StandardCharge, NumberOfTests, et Charge totale qui se rapportent par l`équation suivante:

TotalCharge = StandardCharge * NumberOfTests

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

Chaque table dans la première forme normale doit avoir une clé primaire unique. Cette clé peut consister en une ou plusieurs colonnes. Une clé consistant en plus d`une colonne est appelée clé composite. Pour 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 unique est automatiquement dans la deuxième forme normale.

Si une relation a une clé composite, tous les attributs non-clés doivent 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. Pensez à la table des ventes. 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 ont N ° de client valeurs de 1001-1007) bénéficient d`une réduction sur le prix normal.

Video: MVC

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

Dans le cas contraire le fait que certains clients sont admissibles à un rabais et d`autres ne sont pas, la table ne seraient pas en seconde forme normale, parce que Prix (Un attribut non-clé) dépend seulement sur une partie de la clé (Produit). Parce que certains clients ne sont pas admissibles à un rabais, Prix dépend à la fois N ° de client et Produit, et la table est dans la deuxième forme normale.

Troisième forme normale

Les tableaux de la deuxième forme normale sont particulièrement vulnérables à certains types d`anomalies de modification - en particulier ceux qui viennent de dépendances transitif.

UNE dépendance transitive se produit quand un attribut dépend d`un second attribut qui dépend d`un troisième attribut. Délétions dans une table avec une telle dépendance peut entraîner une perte d`information non désirée. Un rapport en troisième forme normale est une relation de la deuxième forme normale sans dépendances transitives.

Regardez à nouveau à la table de vente, que vous connaissez est en première forme normale. Tant que vous contraignez les 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. Cependant, le tableau est encore soumis à des anomalies. Que si le client 1010 est satisfait de 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 1010 acheté l`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. Prix dépend de Produit, qui, à son tour, dépend de la clé primaire N ° de client.

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

Articles connexes