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 :

Question conceptions tables [MySQL-5.6]


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Par défaut Question conceptions tables
    Bonjour à vous tous et merci d'avance pour votre aide.

    J'ai une table "utilisateurs" avec deux types d'utilisateurs, les clients et les propriétaires de boutiques.
    Ainsi qu'une table "boutiques" en relation hasOne.

    Quel serait la conception la plus approprié ?

    • Créer une table d'association, boutiques_utilisateurs.
    • Un champ boutique_id dans la table utilisateurs et attribuer la valeur 0 pour les clients (car ne peuvent être propriétaire d'une boutique)


    Encore merci et bonne année à tous,

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 623
    Billets dans le blog
    10
    Par défaut
    Bonjour

    Que voulez vous dire par "Ainsi qu'une table "boutiques" en relation hasOne"
    Les cardinalités sous la forme (0,1) (1,1) (0,n) ou (1,n) me parleraient davantage

    Si une même personne peut être propriétaire de plusieurs boutiques, alors vous devez avoir une table issue de l'association (relation)

    Cela étant, les attributs d'un propriétaire de boutique et d'un clients sont ils vraiment communs ?
    N'aurait il pas été plus sage de modéliser 2 entités types différentes et d'en dériver 2 tables distinctes ?
    D'autant que les traitements qui concernent les clients et ceux qui concernent les propriétaires sont probablement différents et répartis dans des applications différentes
    Avec une table unique, vous créez des contraintes d'exploitation et des difficultés de partage

  3. #3
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 218
    Billets dans le blog
    16
    Par défaut
    Bonjour et bonne année,


    Comme le fait observer escartefigue, "une table "boutiques" en relation hasOne" c’est plutôt vague et ambigu...

    Puisque vous utilisez le terme « conception », alors proposez un modèle conceptuel.

    Exemple :





    Si vous vous intéressez aux fréquentations des boutiques par les clients :




    On a procédé à la spécialisation des utilisateurs :

    L’entité-type UTILISATEUR factorise les propriétés (et associations) valant à la fois pour les marchands et les clients ;

    L’entité-type MARCHAND est porteuse des propriétés (et associations) ne valant que pour les marchands ;

    L’entité-type CLIENT est porteuse des propriétés (et associations) ne valant que pour les clients.


    Si HasOne signifie qu’un marchand a au moins et au plus une boutique, il faut l’écrire ainsi :

    Un marchand a au moins et au plus une boutique.

    De même, si HasOne signifie qu’une boutique « a » au moins et au plus un marchand, il faut l’écrire ainsi :

    Une boutique est la propriété d’au moins et au plus un marchand.


    Dans les diagrammes ci-dessus, un marchand a au moins une boutique et au plus plusieurs ; une boutique est la propriété d’au moins et au plus un marchand ; un client peut fréquenter de 0 à N boutiques et une boutique peut être fréquentée par 0 à N clients.

    En fonction de votre préférence, on pourra fournir le diagramme relationnel qui convient.

  4. #4
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 899
    Par défaut
    Salut à tous.

    Bonne année 2016. Bonne santé. Mes meilleurs Vœux.

    Citation Envoyé par Rifton007
    Ainsi qu'une table "boutiques" en relation hasOne.
    Que veut dire 'hasOne' ?

    Je ne fais que réfléchir ici, en exposant quelques idées. Alors ne me tapez pas dessus !
    Je donne ma réflexion toute personnelle sur la table utilisateurs et boutiques, avec les deux statuts clients et propriétaires.

    Une boutique peut avoir un ou plusieurs propriétaires.
    Une boutique peut avoir zéro, un ou plusieurs clients.
    (une boutique nouvellement ouverte n'a pas encore de clients.)

    Un propriétaire 'possède' une ou plusieurs boutiques.
    (un propriétaire sans boutique n'est pas un propriétaire. Aucune raison de créer le statut propriétaire s'il ne l'est pas.)
    Un client 'fait ses courses' dans une ou plusieurs boutiques.
    (un client qui ne fait pas ses courses n'est pas un client. Même remarque que précédemment pour le statut client.)

    Est-ce qu'un client peut-être propriétaire et vice-versa ?
    (rien n'empêche qu'un intervenant ait les deux statuts.)

    1) si un propriétaire n'est jamais client (et vice-versa) , on peut créer deux tables, l'une des propriétaires et l'autres des clients.
    (ces deux tables ont aucune intersection. Elles sont disjointes.)
    Boutique sera une table association entre ses deux parents propriétaires et clients.

    2) Si un propriétaire peut être aussi client, là, ça se complique.
    Il faut être en mesure de faire la distinction entre ces deux statuts (client et propriétaire), sachant qu'il peut être les deux à la fois.
    Créer deux tables n'est pas une solution car il y aura des redondances.

    Créer une table utilisateur contenant les clients et les propriétaires, avec tout ce qui est commun à ces deux groupes.
    Ici, on ne précise pas le statut de l'utilisateur.

    Puis ensuite deux tables spécifiques (une par statut) :
    --> l'une spécifique aux clients et qui pointe sur la tables des utilisateurs.
    --> l'autre spécifique aux propriétaires et qui pointe aussi sur la table des utilisateurs.
    On met dans ces tables tout ce qui est spécifique à ces deux statuts.

    En ce qui concerne la table des boutiques, elle est une table association entre la table spécifique client et l'autre table spécifique propriétaire.
    Elle permet de montrer que le propriétaire d'une boutique peut aussi faire ses courses dans sa boutique.

    J'ai une préférence pour la seconde solution car elle me semble plus souple à l'usage.
    Que pensez-vous de dissocier les clients et les propriétaires en deux tables spécifiques sachant que la table utilisateurs contient le descriptif général ?

    3) donc faire une table regroupant les deux populations n'est pas une bonne idée.
    Avec les spécificités du propriétaire et du client, la table sera rempli qu'à moitié.
    Je pense qu'il faut disjoindre ces deux statuts en deux tables séparées.

    @+

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Par défaut
    Merci de votre participation et vos vœux,

    Pour être plus claire:
    1. un client ne peut organiser qu'un événement.
    2. un événement appartient toujours à un client.
    3. un marchand peut avoir une ou plusieurs boutiques.
    4. une boutique appartient toujours à un marchand.
    5. un utilisateur ne peut être qu'un client ou marchand.


    Le diagramme du haut est la structure actuel de ma base de données.
    Celui du bas est la nouvel structure en tenant compte de vos avis et conseils.
    Nom : Capture.PNG
Affichages : 229
Taille : 33,1 Ko

  6. #6
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 218
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    D’accord sur la structure du 2e diagramme, à condition de :

    — Factoriser l’attribut user_id, c'est-à-dire de le « remonter » dans l’entité-type UTILISATEUR (dealer) ;

    — Définir une contrainte de partitionnement (cf. la lunule symbolisant l’héritage) ;

    — Nonobstant <ai1>, définir un identifiant relatif pour l’entité-type BOUTIQUE (store) ;

    Par ailleurs, si un client organise au moins et au plus un événement (si on en croit votre MCD), l’entité-type CLIENT (customer) devrait absorber l’entité-type EVENEMENT (conséquence de la bijection établie entre les deux entités-types).

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Par défaut
    Merci pour ta réponse fsmrel.

    J'ai un peu de mal à comprendre les concepts de modélisation, voici les corrections que j'ai pu appliquer.
    Si tu es d'accord, pourrais tu regarder ce nouveau diagramme et me où se trouve mes erreurs.

    J'ai remplacer la cardinalité pour customer => event (0,1), un client peu ne pas avoir d'événement.
    J'ai remplacer "dealer" par "vendor", ça sonne mieux

    Nom : Capture.PNG
Affichages : 254
Taille : 19,8 Ko

    Dans ton précédent post, je n'ai pas très bien compris:
    Factoriser l’attribut user_id, c'est-à-dire de le « remonter » dans l’entité-type UTILISATEUR (dealer) ;
    l’entité-type CLIENT (customer) devrait absorber l’entité-type EVENEMENT
    Encore merci,

  8. #8
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 218
    Billets dans le blog
    16
    Par défaut
    Bonsoir Rifton,



    Citation Envoyé par Rifton007
    J'ai remplacé la cardinalité pour customer => event (0,1), un client peut ne pas avoir d'événement.
    D’accord. Mais dans ces conditions, EVENT est une entité-type faible (weak entity type) relativement à CUSTOMER, car sans le client, un événement n’a pas de sens. Pour éviter les cycles au niveau du MPD, avec PowerAMC il faut rendre EVENT dépendant de CUSTOMER, jouant le rôle de dominant :





    Le MCD devrait plutôt ressembler à ceci (j’ai francisé, mais peu importe) :





    Et le MPD :





    Je suis obligé d’interrompre, on reprendra demain.

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

Discussions similaires

  1. Problème conception table
    Par Ouark dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/01/2006, 16h49
  2. conception : table des dépendances
    Par gregolak dans le forum Langage SQL
    Réponses: 12
    Dernier message: 09/10/2005, 16h10
  3. Question sur Table-borders
    Par GDVL dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 20/10/2004, 15h10
  4. [Conception] Table de hachage et doublons de clés
    Par mammou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 13/05/2004, 19h16
  5. [Concept] Table de référence
    Par matlo dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 20/01/2003, 15h01

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