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

 SGBD Discussion :

Champs prenant une liste de valeurs fixées ?


Sujet :

SGBD

  1. #1
    Invité
    Invité(e)
    Par défaut Champs prenant une liste de valeurs fixées ?
    Salut à tous,

    Bon, ma question est très basique mais je n'arrive pas à trouver quelle approche serait la plus propre / la plus correcte... Je suis en train de modéliser une base de données, et certains des champs de cette base de données prendront leur valeur dans une liste de valeurs "fixe" et limitée.

    Pour donner un exemple, je pourrais avoir un champ "type" pouvant prendre 4 valeurs. Je vois 3 modélisations possibles :
    • Je stocke directement une chaîne de caractères correspondant au type (cette chaîne sera fournie via une liste déroulante dans mon interface utilisateur)
    • Je crée une table "type (id, libellé)" et je crée dans ma 1° table une clé étrangère "pointant" vers l'ID du type
    • J'enregistre un code arbitrairement choisi correspondant à un type


    L'approche la plus correcte me semble la 2°, mais si ma liste de types n'est pas amenée à évoluer, est-ce que ce n'est pas écraser une mouche avec un marteau ?

    Merci de votre aide,


    PierreAd

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    En effet, la seconde solution est la plus sure. D'autant qu'une liste de valeurs qui n'est pas amenée à évoluer... finit toujours par évoluer dans le temps
    Par ailleurs, cela t'évite de stocker un libellé de multiples fois dans ta table de données, d'où un gain en volume.
    De plus, si tu dois faire une restriction sur cette colonne, comme c'est une clé étrangère elle sera (devrait être) indexée et ta requête sera plus performante.

    Que des avantages !
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    En effet, la seconde solution est la plus sure. D'autant qu'une liste de valeurs qui n'est pas amenée à évoluer... finit toujours par évoluer dans le temps
    Par ailleurs, cela t'évite de stocker un libellé de multiples fois dans ta table de données, d'où un gain en volume.
    De plus, si tu dois faire une restriction sur cette colonne, comme c'est une clé étrangère elle sera (devrait être) indexée et ta requête sera plus performante.

    Que des avantages !
    Merci de la réponse... ça confirme donc ce que je pensais ! Mais en utilisant cette méthode, est-ce qu'on ne risque pas de multiplier les tables de façon assez conséquente ?

    Edit : Et est-ce que ça vaut vraiment le coup même dans le cas où j'aurais simplement 2 valeurs possibles (et cette fois-ci liste réellement fixe, pas amenée à être modifiée ?)... Genre je dois stocker une valeur et l'unité dans laquelle elle est enregistrée (j'ai 2 types d'unités au choix). ça me chagrine de créer une table juste pour ça quand même...!
    Dernière modification par Invité ; 09/07/2008 à 12h15.

Discussions similaires

  1. Champ content une liste de valeurs
    Par srappaille dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/10/2010, 10h51
  2. recuperer la valeur du champ dans une liste déroulante
    Par zambudio dans le forum VBA Access
    Réponses: 1
    Dernier message: 26/11/2008, 20h26
  3. associer une liste de valeurs à un champ d'une table
    Par bastaji dans le forum VBA Access
    Réponses: 4
    Dernier message: 29/11/2007, 10h33
  4. Valeurs des champs dans une liste
    Par Sly2k dans le forum Access
    Réponses: 21
    Dernier message: 11/08/2006, 14h15
  5. créer une liste de valeurs autorisées pour un champ
    Par elitol dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 01/06/2006, 17h37

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