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

SQL Procédural MySQL Discussion :

Auto-référencement de table


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2003
    Messages : 608
    Par défaut Auto-référencement de table
    Est-ce que l'auto-référencement de table est autorisé dans MySQL ?

    Exemple : j'ai une table contenant des unités dans mon projet.
    Je désire que cette table contiennent ses propres valeurs de conversion vers l'unité standard d'un type donné:

    Par exemple: la ligne
    kg - kilogramme - poids - 2 - 1000.0 - g

    fait donc référence à la ligne
    g - gramme - poids - 2 - 1.0 - g
    (qui est l'unité standard du poids).

    Donc, est-ce que cette table est correcte et envisageable ?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE Unite (
      unite              VARCHAR NOT NULL AUTO_INCREMENT,
      description        VARCHAR NULL,
      type_2             ENUM NULL DEFAULT distance, surface, volume, poids, autre,
      decimales          INTEGER UNSIGNED NULL,
      facteur_conversion FLOAT NULL,
      unite_conversion   VARCHAR NOT NULL,
      PRIMARY KEY(unite),
      FOREIGN KEY(unite_conversion)
        REFERENCES Unite(unite)
          ON DELETE NO ACTION
          ON UPDATE NO ACTION
    );
    Mais qu'en est-il de la 1ère ligne qui sera créée ? Puisqu'aucune instance n'existe encore ?

    Peut-être dois-je enlever le NOT NULL du champs unite_conversion ?

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 878
    Par défaut
    Sans répondre directement à ta question ( qui peut être résolue en testant et en regardant si ça plante ) j'ai plusieurs questions sur ton modèle :

    Pourquoi ne pas avoir de clé primaire unique sur un entier ? C'est beaucoup mieux pour l'indexation, et beaucoup plus puissant ( je trouve ).

    Pourquoi avoir une reflexive, alors que tu as une relation de type 1,* ? Comment vas-tu faire quand il y aura plusieurs unités de conversion possibles ?

    Je verrais plutôt quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    TABLE UNITE
    INTEGER idunite
    VARCHAR libelle
    VARCHAR description
    ENUM    type
    INTEGER decimales
     
    TABLE UNITE_CONVERSION
    INTEGER idunite
    INTEGER idunite_conversion
    FLOAT   facteur_conversion
    Du coup tu pourrais avoir autant d'unités de conversion pour une même unité.

    Qu'en penses-tu ?

  3. #3
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2003
    Messages : 608
    Par défaut
    J'essaie toujours au minimum de limiter le nombre de mes tables, mais je dois avouer que ta proposition de construction est beaucoup plus propre !!

    Un petit brin de réflexion cet après-midi sur cette façon de construire, et je crois que je vais l'adopter...
    ;-)

    Merci pour ton conseil.

    Calogero

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. sélection cellules en auto dans pivot table
    Par ulysseus13 dans le forum Excel
    Réponses: 1
    Dernier message: 13/06/2007, 21h20
  2. Date et Heure Auto dans une table
    Par zoreille6 dans le forum Access
    Réponses: 5
    Dernier message: 11/01/2007, 12h45
  3. N° auto d'une table
    Par kmaniche dans le forum C++Builder
    Réponses: 9
    Dernier message: 26/12/2006, 19h18
  4. auto-increment enregistrement table
    Par guitz dans le forum Requêtes
    Réponses: 12
    Dernier message: 17/07/2006, 19h49
  5. access remplissage auto d'une table
    Par bjornd dans le forum Access
    Réponses: 2
    Dernier message: 09/11/2005, 08h05

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