IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Schéma Discussion :

Comment savoir si 1NF (1ère forme normale), 2NF ou 3NF ?


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 21
    Points
    21
    Par défaut 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.

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 902
    Points
    30 902
    Billets dans le blog
    16
    Par défaut 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 !
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/11/2017, 19h45
  2. Comment savoir si une form est ouverte (créé)?
    Par UnSofteuxAmateur dans le forum Delphi
    Réponses: 1
    Dernier message: 30/09/2006, 11h24
  3. comment savoir si une Form existe?
    Par Mickey.jet dans le forum Delphi
    Réponses: 2
    Dernier message: 10/08/2006, 15h06
  4. [D7] comment savoir quel bouton appelle ma form ?
    Par dleu dans le forum Langage
    Réponses: 8
    Dernier message: 21/03/2006, 08h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo