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

Langage SQL Discussion :

Question de vocabulaire, voire plus


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Question de vocabulaire, voire plus
    Bonjour à vous! J'ai une question en Base de Donnée assez précise, et je n'arrive pas à mettre le doigt sur une réponse sur Internet (j'ai aussi un livre, Modern Database Management, mais sans le mot que je recherche, je tourne en rond)
    Je vais donc vous expliquer mon problème.
    Disons que je veux modéliser le personnel d'un aéroport.
    Il y a d'abord le personnel (qui a un nom, un num_sécu, une adresse)
    et le personnel navigant (qui a la même chose, avec en sus un Int nombre_d'heure_de_vol)

    Et je vois deux manières de modéliser mon personnel navigant
    soit:
    PERSONNEL NAVIGANT:
    Employé ; Nombre_d'heure

    Soit
    PERSONNEL NAVIGANT:
    Num_secu ; Nombre_d'heure
    (num sécu est la clé étrangère)

    En gros, employé est soit un attribut direct du personnel navigant, soit on utilise le num_secu du personnel navigant pour se référer à ses caractéristiques. La première me parait plus "jolie" programmatiquement parlant, mais je ne sais pas peser le pour et contre de ce système.

    Et donc pour finir, pourriez vous juste m'indiquer vers quoi pointer mes recherches afin d'enfin savoir les tenants et aboutissants de cette méthode!

    D'avance merci
    Amicalement,
    Fabien

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Moi je ferais :
    personel (id_personel,num_secu,nom,adresse)
    avec id_personel en PK(primary key) et num_secu en UK (unique key, aka contrainte d'unicité)

    personnel_navigant(id_personel,nb_heure)
    avec id_personel PK ET FK (foreign key, aka clé d'intégrité référentielle vers la table personnel)

    Mais oui num_secu est une clé candidate (donc au minimum une clé unique) mais il n'est pas obligatoire d'en faire une primary key, la question majeure pour toi en tant que développeur est : est ce que num_secu est ET sera toujours unique et jamais réattribué ?

    La logique veut que oui, donc num_secu peut être une PK et une FK mais si jamais ça n'est pas vrai...il faudra faire de grosses mises à jours.
    Recherche sur le forum et tu verras que le num_siret des entreprises est aussi sensé ne jamais changer....mais au bout du compte.....il peut être réaffecté.

    Concernant le num_secu je ne sais pas s'il est amené à être réaffecté, normalment non, donc il pourait être une PK/FK.

    En tout cas il ne faut pas dupliquer les colonnes comme nom et adresse.

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Je pense que le mot que vous cherchez est héritage.

    Si votre modèle est aussi simple que vous le décrivez (une seule information différente entre le personnel et le personnel navigant), vous pouvez envisager une seule table PERSONNEL.

    Ceux dont la colonne nombre_d'heure_de_vol est non nulle forment le personnel navigant.

    skuatamad, le numéro de sécu n'est pas une bonne idée, c'est pile le contre-exemple choisi par SQLPro sur la notion de clef naturelle :
    http://sqlpro.developpez.com/cours/clefs/#L2

  4. #4
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Mais oui num_secu est une clé candidate (donc au minimum une clé unique)
    De toute façon le numéro de sécurité sociale n'est pas unique (eh oui...).

    C'était jusqu'à très peu encore le problème de l'identito-vigilance dans le domaine de la santé qui ne disposait pas d'un identifiant unique pour un patient.

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Effectivement, j'avais utilisé le conditionnel pour la PK, mais en fait le num_secu n'est même pas vraiment une clé candidate...
    Merci pour l'info.

Discussions similaires

  1. Question sur TRIGGER (Voire Procédure)
    Par LinuxUser dans le forum PL/SQL
    Réponses: 13
    Dernier message: 09/01/2008, 14h11
  2. question de vocabulaire : le batch
    Par PsyClown dans le forum API graphiques
    Réponses: 7
    Dernier message: 20/05/2007, 13h19
  3. Question de vocabulaire
    Par koala01 dans le forum C++
    Réponses: 4
    Dernier message: 08/01/2007, 17h52
  4. Quelques questions de vocabulaire C++
    Par EsKa68 dans le forum C++
    Réponses: 3
    Dernier message: 14/03/2005, 11h44

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