Comment savoir si 1NF (1ère forme normale), 2NF ou 3NF ?
Bonjour,
J'aimerai savoir si ma méthode est bonne pour démontrer si les modèles suivants sont de 1NF, 2NF ou 3NF ?
1) Etudiant(idEtudiant, numéroSécu, numéroEtudiant, nomEtudiant, prénomEtudiant)
=> Ici tous les attributs sont atomiques, non répétitives et constante dans le temps, donc le modèle est déjà en 1NF. De plus, tout les attribut non clé n'est pas une partie de clé donc 2NF aussi. Par contre, j'ai un doute si on est en 3NF ou pas ?
2) Affectation(idPersonne, idEtablissement, nomPersonne, prénomPersonne, nomEtablissement, dateEntrée)
=> Ici tous les attributs sont atomiques, non répétitives et constante dans le temps, donc le modèle est déjà en 1NF. Par contre on est pas en 2NF
Pour que ce soit 2NF, il faut que :
Affectation(idPersonne, nomPersonne, prénomPersonne)
Etablissement(idEtablissement,nomEtablissement, dateEntrée)
3) Don(nom, prénom, ville ,rue, montants, dates)
=> N'est pas en 1NF car, l'attribut ville n'est pas atomique.
4)
Patient(nom, prénom, maladie)
Ville(nom, hopital
Hopital(nom)
Hospitalisatiion(nomPatient, nomVille, nomHopital)
=> Ici la condition 1NF et 2NF sont valides, mais comment savoir si ce modèle est en 3NF ?
Merci d'avance, TS.
Normalisation et règles de gestion des données
Citation:
Envoyé par treeselectif
Ici tous les attributs sont atomiques, non répétitifs et constants dans le temps, donc le modèle est déjà en 1NF.
Vous affirmez que l’attribut prénomEtudiant respecte la première forme normale.
Nonobstant, prenez l’exemple de la famille Cavaignac : Jean-Baptiste Cavaignac, fut le père de Jacques Louis Éléonore Godefroy Cavaignac et de Louis Eugène Cavaignac. Disons que tous trois furent étudiants. Il est nécessaire que vous fournissiez l’énoncé très précis de votre règle de gestion des données portant sur les prénoms et permettant de justifier votre affirmation sans qu’on puisse vous contredire, ne serait-ce qu’à partir de ce modeste exemple.
Je vous renvoie au paragraphe Première forme normale de l’article Bases de données relationnelles et normalisation : de la première à la sixième forme normale.
Citation:
Envoyé par treeselectif
De plus, tout les attribut non clé n'est pas une partie de clé donc 2NF aussi.
Le respect de la deuxième forme normale ne concerne pas « la » seule clé {IdEtudiant}, mais bien chaque clé de la relvar (variable relationnelle) Etudiant. Vous devez donc commencer par fournir l’ensemble des règles de gestion des données permettant de déterminer la liste des clés (attributs, plus exactement les ensembles d’attributs) candidats à être clés. Votre mutisme sur ces règles fait que, à titre d’exemple, rien n’empêche d’attribuer le même numéro d’étudiant ou le même numéro de sécurité sociale à deux étudiants.
Citation:
Envoyé par treeselectif
Pour que ce soit 2NF, il faut que :
Affectation(idPersonne, nomPersonne, prénomPersonne)
Etablissement(idEtablissement, nomEtablissement, dateEntrée)
Il manque un attribut important dans la variable relationnelle Affectation...
A quoi correspond l’attribut dateEntrée de la variable relationnelle Etablissement ? S’agit-il de la date d’entrée d’un établissement dans le répertoire de l’INSEE ? On peut en douter, mais alors ? S’il s’agit de la date d’entrée d’une personne dans un établissement, alors l’effectif d’un établissement ne pourrait être composé que d’une seule personne (du fait de la dépendance fonctionnelle {idEtablissement} -> {dateEntrée})...
Citation:
Envoyé par treeselectif
Don(nom, prénom, ville ,rue, montants, dates)
=> N'est pas en 1NF car, l'attribut ville n'est pas atomique.
Veuillez fournir la règles de gestion des données validant votre affirmation. Supposons que l’ensemble des villes soit exactement {Paris, Lyon, Marseille}, en quoi la première forme normale serait-elle ici violée ?
J’observe par ailleurs que si la paire {nom, prénom} constitue une clé de la variable relationnelle Don, deux donateurs distincts ne peuvent pas avoir le même nom et le même prénom. Ça fera des adhérents en moins, donc moins de sous pouvant rentrer dans la caisse...
J’observe encore, eu égard à la première forme normale, qu’un donateur ne peut faire qu’un seul don (un seul montant et à une seule date par-dessus le marché, revoyez le rôle des dépendances fonctionnelles).
Citation:
Envoyé par treeselectif
comment savoir si ce modèle est en 3NF ?
Reste à établir la liste des règles de gestion des données, puis s’assurer de la première forme normale.
Quant à la troisième forme normale, elle n’est qu’un appauvrissement de la forme normale de Boyce-Codd qui l’implique et que je vous recommande d’étudier avec attention.
A noter que selon votre variable relationnelle Ville(nom, hopital), si {nom} est clé, une ville, quelle qu’elle soit, ne peut avoir qu’un seul hôpital, ce qui n’est pas vérifié dans les faits (pensez à Paris, Versailles, etc.) De la même façon, un patient n’a le droit d’être malade qu’une seule fois dans sa vie. Je rappelle encore que selon votre système, deux patients n’ont pas le droit d’avoir le même nom et le même prénom.
Citation:
Envoyé par treeselectif
Ici la condition 1NF et 2NF sont valides
Vu tout ce qui précède, on n’en a aucune preuve. Je répète : commencez par fournir la liste exhaustive des règles de gestion des données pour qu’on entame rationnellement le travail de validation.
En passant, votre variable relationnelle Hospitalisation (nomPatient, nomVille, nomHopital) présente quelques défauts :
Si vous maintenez qu’une ville ne peut être dotée que d’un seul hôpital, alors le triplet {nomPatient, nomVille, nomHopital} n’est pas clé de la variable relationnelle Hospitalisation, il n’en est qu’une surclé. En outre, ce qui est grave, c’est que la deuxième forme normale est violée : je vous laisse en chercher la cause et le remède à apporter...
Précisez la règle de gestion des données relative la nature des rapports entre un patient et des villes (résider ? si c’est cela, un patient peut-il résider simultanément dans plus d’une ville ?)
Citation:
Envoyé par treeselectif
comment savoir si ce modèle est en 3NF ?
Revoyez la définition de la troisième forme normale. Encore mieux, intéressez-vous à celle de la forme normale de Boyce-Codd. Etude qui nécessite une fois de plus de disposer du corpus des règles de gestion des données...
A défaut, vous seriez dans la position de celui qui voudrait gravir le Mont-Blanc en baskets.
La modélisation est un art de haute précision.
En passant, dans la même phrase vous écrivez « tous les attributs sont atomiques », puis « tout les attribut non clé » : soyez cohérent non seulement avec la modélisation, mais aussi avec l’orthographe (même s’il est à déplorer que des excités de Mai 68 ont décrété que celle-ci était un vice bourgeois et furent écoutés, hélas ! Leurs victimes, passées, présentes et à venir, sont innombrables...) Nous avons tous droit à l’erreur, mais nous pouvons aussi nous améliorer...
En tout cas, bon courage !