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

Schéma Discussion :

Aide sur une modélisation entre tables


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 13
    Points : 12
    Points
    12
    Par défaut Aide sur une modélisation entre tables
    Bonjour à toutes et à tous,

    Je suis débutant en conception de base, et afin de concevoir une application web basée sur du php/mysql, j'ai voulu tout d'abord poser à plat afin d'avoir un code optimiser. J'aimerai d'abord optimiser au mieux la base de donnée correspondante, et ainsi utiliser plus tard de l'objet sql et des procédures stockées, mais je n'en suis pas encore à là.

    Légende :

    NN = Non Nulle
    PK = Clé primaire
    Int = entier
    Varchar = Chaine de caractère

    Mon problème du moment est assez simple, j'ai trois tables :

    table utilisateurs : idUtilisateurs en PK Int AI, identifiant en attribut unique et varchar(45) NN, email en attribut unique et varchar(65) NN

    table fans : idFans en pk Int AI, FanStar en Int NN

    table fansites : idFansite en PK Int AI, Nom en attribut unique et varchar(45) NN, Catégorie en attribut unique et varchar(45) NN

    Les relations :
    1 - Un utilisateur peut devenir un fan.
    2 - Un fan est obligatoirement un utilisateur.
    3 - Un fan peut être fans de plusieurs fansites.
    4 - Un fansite peut avoir plusieurs fans.

    Pour la relation n:n entre fan et fansites, je passe par une table intermédiaire fansites_has_fan avec idFans et idFansites en PK. Est-ce que ça me permettra ensuite via une procédure stockée d'avoir la liste de tous les fansites dont le fan est "fan" en questionnant la table fansites_has_fan ? Ou encore la liste de tous les fans appartenant à un fansite en questionnant la table fansites_has_fan ? Si non, comment faire ?

    Pour la relation entre l'utilisateur et le fan, je ne sais pas comment faire, j'ai beau réfléchir, je tombe sur une relation de type 1:1, ce qui est une erreur de conception et donc, que je peux fusionner mes deux tables. Mais dans ce cas là, comment je fais pour la relation 1, vu qu'un utilisateur peut ne pas être un fan ?

    Merci pour votre aide

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    Une relation de type 1..1 n'est pas une faute de conception.
    C'est juste assez rare d'en rencontrer c'est tout.
    Dans ce cas, tout consiste à mettre la foreign key du côté le plus "utile" si je puis dire, pour toi... quand tu développe, puisque dans le cas de cette relation "spéciale" entre une table A et B, on peut aussi bien mettre la foreign key de A dans B ou mettre la foreign key de B dans A. Le sens n'a pas de réelle importance, si ce n'est stratégique.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 13
    Points : 12
    Points
    12
    Par défaut Hum
    D'après toi, ce n'est pas une erreur que de concevoir une relation 1:1 ?
    Dans ce cas là, d'après ce que je veux faire, penses-tu que le fait de mettre ma FK dans la table des fans serait bon pour :
    - avoir un utilisateur qui peut devenir un fan,
    - un fan est obligatoirement un utilisateur.
    Ce qui équivaut à une relation 0:1 (pour utilisateur:fan) dans un MCD...?

    Si toi ou d'autres pouvaient un peu plus éclairer avec des exemples "concrètes", ça m'aidera à comprendre mieux.
    Ah oui, aussi pour l'autre question concernant la relation n:n svp

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    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 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Au sujet des associations 1:1, tu trouveras toutes les réponses que tu cherches dans cette autre discussion qui y est justement consacrée.

    Par contre, puisque les fans sont tous des utilisateurs, je dirais que fan est une spécialisation de utilisateur et qu'il y a donc un héritage entre ces deux entités.
    Fan -(1,1)----Etre----0,1- Utilisateur

    Cela entraîne le fait que l'identifiant de fan est celui, en tant que clé étrangère, de utilisateur :
    utilisateur (idUtilisateur, identifiant, email)
    fan (idUtilisateur, FanStar)

    Au passage, 'identifiant' n'est peut-être pas le nom idéal parce que justement 'idUtilisateur' veut dire 'idenfiant utilisateur' !
    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 !

  5. #5
    Membre actif Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Points : 214
    Points
    214
    Par défaut
    Citation Envoyé par dd_angel Voir le message

    Pour la relation entre l'utilisateur et le fan, je ne sais pas comment faire, j'ai beau réfléchir, je tombe sur une relation de type 1:1, ce qui est une erreur de conception et donc, que je peux fusionner mes deux tables. Mais dans ce cas là, comment je fais pour la relation 1, vu qu'un utilisateur peut ne pas être un fan ?

    Merci pour votre aide
    penses à modéliser la règle par un héritage "fan Est_Un utilisateur", voilà un exemple bien expliqué dans la FAQ
    Un thésard a souvent un problème de motivation jusqu'au moment où il aura un problème de temps....

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Effectivement, j'avais lu l'héritage quelque part et n'y avait pas prêté attention.
    Je regarde ça de près, puis je vous posterai un avant goût de mon schéma mld, afin de voir avec vous s'il y a des erreurs à revoir.
    Ah oui, est-ce que l'on pourra aussi parler sur ce même topic des procédures stockées qui découleront de cet mld ?

    Merci d'avance

    Edit : et personne ne m'a répondu concernant la relation n:n si mon raisonnement était bon ou non :o

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    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 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par dd_angel Voir le message
    Ah oui, est-ce que l'on pourra aussi parler sur ce même topic des procédures stockées qui découleront de cet mld ?
    Non. Dans le forum consacré à ton SGBD.
    Mais avant les procédures stockées, pense aux vues.
    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 !

  8. #8
    Membre régulier
    Homme Profil pro
    Relationland initiate
    Inscrit en
    Novembre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Relationland initiate

    Informations forums :
    Inscription : Novembre 2006
    Messages : 83
    Points : 120
    Points
    120
    Par défaut
    Bonjour,

    Citation Envoyé par dd_angel Voir le message
    et personne ne m'a répondu concernant la relation n:n si mon raisonnement était bon ou non :o
    Ton raisonnement est tout à fait correct et te permettra bien de retrouver :
    - la liste des fans d'un fansite (par filtrage sur un fansite)
    - la liste des fansites d'un fan (par filtrage sur un fan)


    Une remarque quand même sur ta table fansite :
    si Catégorie est unique cela signifie qu'il n'y a qu'un site par catégorie

    Cordialement,
    Fais mourir ton ennemi de plaisir ! Si tu le rates, il mourra d'ennui...
    __________________

    Pensez à cliquer sur

Discussions similaires

  1. avis et aide sur une table
    Par meryDev dans le forum Windows Forms
    Réponses: 12
    Dernier message: 10/06/2009, 14h44
  2. Besoin d'aide sur une table en SAS
    Par 8twilight8 dans le forum Macro
    Réponses: 8
    Dernier message: 29/04/2009, 16h04
  3. Réponses: 5
    Dernier message: 08/04/2009, 18h39
  4. Besoin d'aide sur les relations entre mes tables
    Par Jenojen dans le forum Bases de données
    Réponses: 102
    Dernier message: 06/09/2008, 13h27
  5. Aide sur une fenetre
    Par Ray-j dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 29/11/2002, 09h51

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