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

 MySQL Discussion :

Cette structure est-t-elle correcte ? (Foreign Keys)


Sujet :

MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 71
    Points : 42
    Points
    42
    Par défaut Cette structure est-t-elle correcte ? (Foreign Keys)
    Bonjour,

    Je viens de découvrir les foreign keys, je refais donc la structure de ma base de données pour en profiter.

    Voici, en simple, ce dont je dispose, et ce que je souhaite :

    Un Utilisateur peut posséder plusieurs comptes.
    Un compte possède plusieurs lignes.

    Voici donc la structure que je pense obtenir :

    • User :
      • UserID : int, AutoIncrement, PrimaryKey
    • Compte :
      • UserID : Foreign Key
      • CompteID : tinyint, AutoIncrement, PrimaryKey
    • Ligne :
      • UserID : Foreign Key
      • CompteID : Foreign Key
      • LigneID : smallint, AutoIncrement, PrimaryKey


    J'utilise phpMyAdmin, il faudra donc mettre les tables avec les moteur de stockage InnoDB.

    Je souhaite que lorsqu'on supprime un User, alors on supprime également les comptes et lignes associées.
    De la même manière si l'on supprime un compte, on supprime les lignes associées (mais pas l'User). Attention cependant, il se peut qu'un User possède 0 comptes, et un Compte, 0 lignes.

    J'ai donc mis dans les clé étrangère : ON DELETE CASCADE, mais rien dans le champ ON UPDATE. J'ai juste ?

    Enfin, je souhaite que chaque ligneID s'autoincremente à partir de 1 pour chaque compte, et que chaque compte s'autoincremente à partir de 1 pour chaque utilisateur. (Ce que j'avais réussi à faire en mettant plusieurs champs de la même table en Primary Key), mais je ne sais pas si cela marchera également avec les foreign key comme indiqué dans la structure ci-dessus.

    "Ta qu'à tester" me direz vous... Oui mais voila, je n'arrive pas à créer cette structure sous phpMyAdmin, j'obtiens sans cesse le message d'erreur :

    #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
    ...au moment de modifier ma table en InnoDB, alors qu'il y a bien un seul champ Auto-Increment dans chacune des table.

    La structure proposée est-t-elle bonne pour l'usage que je souhaite en faire ?

    Pourquoi cette erreur #1075 lorsque j'essaye de la réaliser sous phpMyAdmin (je précise que les tables existent déja, car crées avant que je ne découvre l'existance des clés étrangères, je cherche donc à modifier la structure actuelle, et non tout recréer).

    Merci pour vos conseils,

    Fred

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Il y a en fait deux questions différentes : 1) ta structure et 2) l'erreur que tu rencontres.

    1) ta structure me semble OK, sauf la colonne UserID de la table Ligne, qui est inutilement redondante. Le UserID de la ligne est celle du compte auquelle la ligne est rattachée.

    2) donne-nous les CREATE TABLE générés par phpMyAdmin

Discussions similaires

  1. Est ce que les Foreign keys sont indexées
    Par olibara dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/08/2009, 11h29
  2. Cette expression split est elle correcte ?
    Par chris81 dans le forum Linq
    Réponses: 5
    Dernier message: 21/01/2009, 11h32
  3. Quel est l'intérêt de foreign key ?
    Par bracket dans le forum Langage SQL
    Réponses: 12
    Dernier message: 06/12/2008, 13h33
  4. [XML] ma structure est t-elle bonne ?
    Par guy2004 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 16/03/2006, 11h24
  5. cette requête est-elle correcte?
    Par spilliaert dans le forum Requêtes
    Réponses: 1
    Dernier message: 02/02/2006, 22h33

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