GeeksforGeeks
La première forme normale (1NF) n’élimine pas la redondance, mais c’est plutôt qu’elle élimine les groupes répétitifs.
Au lieu d’avoir plusieurs colonnes du même type de données dans un enregistrement, (0NF ou forme non normalisée) vous retirez les informations répétées dans une relation séparée et les représentez comme des lignes. C’est ce qui constitue 1NF.
La deuxième forme normale (2NF):
La deuxième forme normale (2NF) est basée sur le concept de dépendance fonctionnelle complète. La forme normale seconde s’applique aux relations avec des clés composées, c’est-à-dire des relations avec une clé primaire composée de deux attributs ou plus. Une relation avec une clé primaire à un seul attribut est automatiquement dans au moins 2NF. Une relation qui n’est pas en 2NF peut souffrir des anomalies de mise à jour.
Pour être en seconde forme normale, une relation doit être en première forme normale et la relation ne doit pas contenir de dépendance partielle. Une relation est en 2NF si elle n’a pas de dépendance partielle, c’est-à-dire qu’aucun attribut non premier (attributs qui ne font partie d’aucune clé candidate) ne dépend d’un sous-ensemble propre d’une clé candidate de la table.
En d’autres termes,
Une relation qui est en première forme normale et chaque attribut non primaire est entièrement dépendant fonctionnellement de la clé primaire, alors la relation est en deuxième forme normale (2NF).
Note – Si le sous-ensemble approprié de la clé candidate détermine l’attribut non primaire, on parle de dépendance partielle.
La normalisation des relations 1NF en 2NF implique la suppression des dépendances partielles. Si une dépendance partielle existe, on supprime le ou les attributs partiellement dépendants de la relation en les plaçant dans une nouvelle relation avec une copie de leur déterminant.
Considérez les exemples donnés ci-dessous.
Exemple-1:
Considérez le tableau suivant ci-dessous.
STUD_NO COURSE_NO COURSE_FEE1 C1 10002 C2 15001 C4 20004 C3 10004 C1 10002 C5 2000
{Notez que, il y a beaucoup de cours ayant le même prix de cours. }
Ici,
COURSE_FEE ne peut pas décider seule de la valeur de COURSE_NO ou de STUD_NO;
COURSE_FEE conjointement avec STUD_NO ne peut pas décider de la valeur de COURSE_NO;
COURSE_FEE conjointement avec COURSE_NO ne peut pas décider de la valeur de STUD_NO ;
Hence,
COURSE_FEE serait un attribut non premier, car il n’appartient pas à la seule clé candidate {STUD_NO, COURSE_NO} ;
Mais, COURSE_NO -> COURSE_FEE, c’est-à-dire.e., COURSE_FEE dépend de COURSE_NO, qui est un sous-ensemble approprié de la clé candidate. L’attribut non premier COURSE_FEE dépend d’un sous-ensemble propre de la clé candidate, ce qui est une dépendance partielle et donc cette relation n’est pas en 2NF.
Pour convertir la relation ci-dessus en 2NF,
nous devons diviser la table en deux tables telles que :
Table 1 : STUD_NO, COURSE_NO
Table 2 : COURSE_NO, COURSE_FEE
Table 1 Table 2STUD_NO COURSE_NO COURSE_NO COURSE_FEE 1 C1 C1 10002 C2 C2 15001 C4 C3 10004 C3 C4 20004 C1 C5 2000 2 C5
Note – La 2NF essaie de réduire les données redondantes qui sont stockées en mémoire. Par exemple, s’il y a 100 étudiants qui suivent le cours C1, nous n’avons pas besoin de stocker son prix comme 1000 pour tous les 100 enregistrements, au lieu de cela une fois nous pouvons le stocker dans la table comme le prix du cours pour C1 est 1000.
Exemple-2:
Considérez les dépendances fonctionnelles suivantes dans la relation R (A, B, C, D )
AB -> C BC -> D
Dans la relation ci-dessus, AB est la seule clé candidate et il n’y a pas de dépendance partielle, c’est-à-dire que tout sous-ensemble approprié de AB ne détermine aucun attribut non premier.