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 on est en 2NF ?


Sujet :

Schéma

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Sans emploi - Autonome
    Inscrit en
    Mars 2018
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sans emploi - Autonome

    Informations forums :
    Inscription : Mars 2018
    Messages : 130
    Par défaut Comment savoir si on est en 2NF ?
    Bonjour,

    On dit qu'un système est en 1 NF lorsque :

    • Toutes les données sont atomiques c'est à dire qu'une info initiale ne peut pas être divisé si elle n'apporte pas plus d'info
    • Contiennent des valeurs non répétitives
    • Constante dans le temps (ex :l'âge)


    Jusque la j'ai pigé.

    Ensuite, on dit qu'un système est en 2 NF lorsque :

    • 1NF est validé
    • Un attribut non clé dépend totalement (et pas partiellement ) de la clé ?


    Je n'arrive pas à comprendre comment un attribut dépend de la clé ?

    j'ai besoin d'un exemple pour comprendre ? pouvez vous m'aider svp ?

    Merci.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Je vous renvoie à la bible de fsmrel : https://fsmrel.developpez.com/basesr...normalisation/
    Notamment, pour ce qui concerne votre question, à la partie où est présentée la deuxième forme normale : https://fsmrel.developpez.com/basesr...n/?page=3#L3.4

    Je pense d'ailleurs qu'il va vous répondre incessamment sous peu...
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Homme Profil pro
    Sans emploi - Autonome
    Inscrit en
    Mars 2018
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sans emploi - Autonome

    Informations forums :
    Inscription : Mars 2018
    Messages : 130
    Par défaut
    Bonjour,

    Je fais l'effort de comprendre honnêtement, mais cela revient toujours à la même définition :

    Une relation R est en deuxième forme normale si elle est en première forme normale et si chaque attribut n'appartenant à aucune clé candidate est en dépendance totale de chaque clé candidate de R.

    ou

    Une relation R est en deuxième forme normale si elle est en première forme normale et si chaque attribut n'appartenant pas à la clé primaire de R est en dépendance totale de celle-ci.

    Si je prend un exemple :

    Nom ; Prénom ; date de naissance avec Nom en clé primaire

    prénom dépend de Nom
    date de naissance dépend de Nom

    On à une dépendance fonctionnel donc le système est en 2NF ?

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Si Nom est en clé primaire, cela veut dire qu'il ne peut y avoir deux fois le même nom. Et donc, la personne nommée Dupont n'a bien qu'un seul prénom et qu'une seule date de naissance.
    Nous sommes bien en 2NF, il me semble.

    Ceci ne voulant pas dire que si je cherche le prénom Philippe, il n'y aura qu'un seul nom et une seule date de naissance puisque Philippe n'est pas clé de la relvar.

    Ce qui est important, c'est la définition de chaque ligne de manière unique.

    Si j'ai deux Philippe Leménager nés tous deux le 24/07/1963, je ne peux pas les distinguer autrement qu'en ajoutant un identifiant unique à chaque personne.

    Si j'ai la relation suivante {id, nom, prénom, date_naissance}, ma clé primaire étant id (au niveau table de BDD, qui sera de type entier et auto-incrémentée, par exemple), Chaque personne ayant les trois mêmes informations sémantiques (nom, prénom, date_naissance) aura un identifiant unique dans toute la relation et je pourrai associer différemment chaque homonyme avec d'autres relations.


    Mais revenons un instant sur votre message d'origine...
    On dit qu'un système est en 1 NF lorsque :

    Toutes les données sont atomiques c'est à dire qu'une info initiale ne peut pas être divisé si elle n'apporte pas plus d'info
    Contiennent des valeurs non répétitives
    Constante dans le temps (ex :l'âge)
    Où avez-vous trouvé cette définition ?

    Admettons pour l'atomicité mais :
    - Que voulez-vous dire par "valeurs non répétitives" ?

    - Que voulez-vous dire par "Constante dans le temps" ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre confirmé
    Homme Profil pro
    Sans emploi - Autonome
    Inscrit en
    Mars 2018
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sans emploi - Autonome

    Informations forums :
    Inscription : Mars 2018
    Messages : 130
    Par défaut
    - Où avez-vous trouvé cette définition ?

    La définition provient d'un cours en base de donnée que j'ai obtenu en cours du soir.

    - Que voulez-vous dire par "valeurs non répétitives" ?

    Une valeur qui sera déclarer qu'une seul fois en attribut et qu'on ne retrouva plus.

    - Que voulez-vous dire par "Constante dans le temps" ?

    Une variable qui varie dans le temps, comme par exemple l'âge d'une personne.

    J'ai une série d'exercice à faire et j'aimerai trouver une méthode pour reconnaitre si un système est en 1NF, 2NF et 3 NF, mais c'est mal parti pour moi ...

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    La définition provient d'un cours en base de donnée que j'ai obtenu en cours du soir.
    J'ai l'impression que cette définition est alors sujette à critiques...

    - Que voulez-vous dire par "valeurs non répétitives" ?

    Une valeur qui sera déclarer qu'une seul fois en attribut et qu'on ne retrouva plus.
    Soit une relation (ou table) Personne (id, nom, prenom, date_naissance).
    Chaque colonne porte bien une information atomique.
    Il est pourtant probable qu'il y aura dans la table issue de cette relation plusieurs personnes portant le même nom et plusieurs personnes portant le même prénom.
    Et cette relation ne serait pas en 1NF ?

    - Que voulez-vous dire par "Constante dans le temps" ?

    Une variable qui varie dans le temps, comme par exemple l'âge d'une personne.
    Une valeur constante, c'est une valeur qui varie ?

    Je vous renvoie à la bible de fsmrel de nouveau : https://fsmrel.developpez.com/basesr...sation/?page=2
    À la fin du chapitre, il donne cette définition de la 1NF :
    Citation Envoyé par fsmrel
    Si l'on reprend les définitions formelles données par Chris Date dans [Date 2004] au chapitre 6, « Relations », et reprises ici en annexe (paragraphe A), le bilan concernant les relations est le suivant :

    Tout tuple contient exactement une valeur pour chacun de ses attributs.

    Il s'ensuit que dans chaque relation, chaque tuple contient exactement une valeur pour chacun de ses attributs.

    Une relation qui vérifie cette propriété est dite normalisée, ou de façon équivalente, est en première forme normale (1NF).

    Il s'ensuit que toutes les relations en conformité avec (a) sont en 1NF.
    Il parle de tuple, c'est à dire, si on transpose ça dans l'univers de la table d'une base de données, une ligne de cette table.

    Soit les 2 tuples suivants, dans la relation R définie plus haut :
    {1, 'Dupont', 'Jean', '1975-12-07'}
    {2, 'Dupont', 'Jean', '1975-12-07'}

    Il y a là deux personnes portant le même nom, le même prénom et étant nés le même jour mais ayant un identifiant différent. Peut-être que l'un est né à Paris et l'autre à Toulouse ; l'information ne figure pas ici mais ce sont a priori deux personnes différentes.

    Chaque attribut contient bel et bien une seule valeur pour chaque tuple donc la relation est en 1NF.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [CR10] Comment savoir si c'est une nouvelle page ?
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 23/09/2005, 18h18
  2. [Process] comment savoir si exec est termine
    Par v1nc3kr0 dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 29/06/2005, 16h54
  3. Réponses: 2
    Dernier message: 24/03/2005, 15h48
  4. comment savoir quel menu est en surbrillance?
    Par LRobi dans le forum MFC
    Réponses: 2
    Dernier message: 27/01/2005, 09h04
  5. [C#] Comment savoir si on est logué ou pas?
    Par pc152 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 22/05/2004, 09h47

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