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 SQL


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 5
    Points : 8
    Points
    8
    Par défaut Question SQL
    Bonjour,

    J'ai commencé à m'intéresser au SQL il y a quelques semaines (juste pour mon épanouissement personnel). J'ai suivi plusieurs tuto et fais quelques exercices. Maintenant que j'ai quelques bases, j'aimerai intégrer les bases de données à l'un de mes projets:

    Je voudrais faire une base de données de carte Magic pour ensuite essayer d'y rajouter un système recherche poussée. (Je sais ça existe déjà et ça n'a pas l'ai compliqué mais le but est de m’entraîner aux subtilités du SQL)

    Ma base de donnée est constitué de plusieurs tables de une colonne:
    COULEUR (contenant toute les couleurs qu'une carte peut avoir)
    EDITION (contenant toute les éditions existantes aujourd'hui)
    TYPE , SOUS-TYPE , ...
    ainsi qu'une table CARTE de 17 colonnes (une pour chaque caractéristique de la carte : nom, cout, edition, ...) qui va contenir toute les cartes.
    Jusque là, rien de bien compliqué.

    Cependant j'ai une petite exigence à mettre sur la table CARTE et je ne sais pas si c'est possible de les coder en SQL, et si oui, comment le fait-on :

    Par exemple, je voudrais que la colonne edition de la table CARTE ne puisse contenir que des valeurs présentes dans la table EDITION. Je sais qu'avec ENUM on peut définir une liste de valeurs autorisées, mais la table EDITION peut changer au cours du temps (au fur et à mesure des nouvelles sorties et mise à jour par exemple) et donc les valeurs autorisées aussi. Je voudrais éviter d'avoir à modifier la construction de la table CARTE mais juste ajouter ou modifier les valeurs de la table EDITION .


    Voilà. Pour info, j'utilite SQLite.

    Merci d'avance

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Ma base de donnée est constitué de plusieurs tables de une colonne:
    COULEUR (contenant toute les couleurs qu'une carte peut avoir)
    EDITION (contenant toute les éditions existantes aujourd'hui)
    TYPE , SOUS-TYPE , ...
    Erreur de modélisation !
    Tu devrais commencer par faire un modèle conceptuel de données et nous le proposer dans le forum Schéma.

    Une table telle que COULEUR est une table de référence. Chaque table d'une BDD devant avoir une clé primaire, le nom de la couleur est une mauvaise clé. Il convient donc de lui ajouter un identifiant numérique auto-incrémenté.

    La structure de la table COULEUR est donc celle-ci :
    COULEUR (clr_id, clr_nom)

    Idem pour les autres tables de référence :
    EDITION (edt_id, edt_libelle)
    TYPE (typ_id, typ_libelle)

    Un sous-type étant un type, tu as le schéma suivant :
    TYPE -0,1----avoir
    |--------0,n-------|

    Traduction en français :
    Un TYPE peut avoir plusieurs (sous) TYPEs et un (sous)TYPE peut être rattaché à un seul TYPE.

    Comme je l'explique dans mon blog, une telle association entraîne la création d'une table associative donc la clé primaire est l'identifiant du (sous) TYPE.

    SOUS_TYPE (stp_id_sous_type, stp_id_sur_type)

    Etc...

    Dans tous les schémas ci-dessus, les clés primaires sont soulignées et les clés étrangères sont en italique.

    ainsi qu'une table CARTE de 17 colonnes (une pour chaque caractéristique de la carte : nom, cout, edition, ...) qui va contenir toute les cartes.
    Dans les quelques propriétés que tu donnes, edition sera une clé étrangère référençant la clé primaire de la table de référence EDITION.

    Par exemple, je voudrais que la colonne edition de la table CARTE ne puisse contenir que des valeurs présentes dans la table EDITION.
    C'est justement le rôle d'une clé étrangère.

    Je sais qu'avec ENUM on peut définir une liste de valeurs autorisées,
    Ne surtout pas utiliser ce type non standard !

    Encore beaucoup à apprendre tu as, jeune padawan !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 5
    Points : 8
    Points
    8
    Par défaut
    Merci de ta réponse

    J'avais compris que mettre une clé primaire sur chaque table était plus que conseillé (pas obligatoire) mais pour des tables si petites je n'en voyais pas l’intérêt.

    Je vais me renseigner sur les clés étrangères.

Discussions similaires

  1. Question SQL Loader
    Par MoonUnit dans le forum SQL*Loader
    Réponses: 3
    Dernier message: 08/10/2007, 18h31
  2. Réponses: 8
    Dernier message: 25/07/2007, 15h05
  3. Question : SQL dans VB excel
    Par aurele21 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/06/2007, 12h25
  4. Question SQL (facile) mais pas pour moi
    Par fabianrs dans le forum Langage SQL
    Réponses: 15
    Dernier message: 30/03/2006, 03h44
  5. Question sql
    Par rico3434 dans le forum Langage SQL
    Réponses: 19
    Dernier message: 18/09/2005, 20h10

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