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 :

Gestion de catégories [MCD]


Sujet :

Schéma

  1. #1
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Points : 72
    Points
    72
    Par défaut Gestion de catégories
    Salut tout le monde,

    J'ai une liste de catégorie qui peut avoir 2 types de sous-catégories:
    - Catégorie: une liste de catégories ( A, B, C )
    - Sous-Catégorie1: les catégories ( A, B, C ) doivent avoir une sous-catégorie
    - Sous-Catégorie2: Seulement une de ces catégories, supposons A, peut avoir une sous-catégorie: A1, A2, A3. Les autres catégories ne peuvent pas avoir ce type de sous-catégories, il est exclusif a A.


    Exemple:
    Catégorie | Sous-Catégorie1 | Sous-Catégorie2
    A - AAA - AA
    A - AAL - AL
    B - BBB - NULL
    C - CCC - NULL

    Il existe une relation many-to-many entre catégorie et Sous-Catégorie1.

    Pourtant je veux que associer la combinaision [ Catégorie - Sous-Catégorie1 - Sous-Catégorie2 ] forme un ID.

    Combien de tables je dois créer ?

  2. #2
    Membre habitué
    Inscrit en
    Décembre 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2007
    Messages : 94
    Points : 134
    Points
    134
    Par défaut
    La relation entre catégorie et sous catégorie ne devrait pas être 1 - n par hasard? Je suppose que la sous catégorie appartient à une seule catégorie (si tu voudrais par ex que AAA soit exclusif à A).

    Tu gères le retse par programmation en utilisant les fonctions sur les string

  3. #3
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par Mstreatboy Voir le message
    La relation entre catégorie et sous catégorie ne devrait pas être 1 - n par hasard? Je suppose que la sous catégorie appartient à une seule catégorie (si tu voudrais par ex que AAA soit exclusif à A).

    Tu gères le retse par programmation en utilisant les fonctions sur les string
    Oui je veux que AAA soit exclusif a A et que A - AAA - A represente une seule entité.

  4. #4
    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 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Commençons au premier niveau...

    les catégories ( A, B, C ) doivent avoir une sous-catégorie
    ...
    Il existe une relation many-to-many entre catégorie et Sous-Catégorie1.
    Si j'en crois ce que tu as écrit, une sous-catégorie peut appartenir à plusieurs catégories ?


    Règle de gestion :
    Une catégorie a de une à plusieurs sous-catégories de niveau 1 et une sous-catégorie de niveau 1 peut appartenir à plusieurs catégories.

    MCD 1 :
    Catégorie -1,n----Avoir----1,n- Sous_categorie1

    Tables :
    Categorie (cat_id, cat_libelle)
    Sous_categorie_1 (sc1_id, sc1_libelle)
    cat_avoir_sc1 (cas1_id_categorie, cas1_id_sous_categorie_1)

    Passons au second niveau...
    - Sous-Catégorie2: Seulement une de ces catégories, supposons A, peut avoir une sous-catégorie: A1, A2, A3. Les autres catégories ne peuvent pas avoir ce type de sous-catégories, il est exclusif a A.


    Exemple:
    Catégorie | Sous-Catégorie1 | Sous-Catégorie2
    A - AAA - AA
    A - AAL - AL
    B - BBB - NULL
    C - CCC - NULL
    On a le même type d'association entre les sous-catégories_1 et les sous_categories_2 :
    MCD 2 :
    sous_categorie_1 -0,n----Avoir----1,n- sous_categorie_2

    Tables :
    Sous_categorie_1 (sc1_id, sc1_libelle)
    Sous_categorie_2 (sc2_id, sc2_libelle)
    sc1_avoir_sc2 (sas_id_sous_categorie_1, sas_id_sous_categorie_2)

    La difficulté vient dans l'expression de l'exclusivité d'une seule sous-catégorie 1 qui serait sous-catégorisable.

    Pourtant je veux que associer la combinaision [ Catégorie - Sous-Catégorie1 - Sous-Catégorie2 ] forme un ID.
    Ceci va nous sauver car le schéma établi jusque là ne répond pas à cette exigence ; il faut le modifier en transformant en entité la première association.

    Nouveau MCD 1 :
    Categorie -1,n----Avoir----(1,1)- sous_categorie_1 -(1,1)----deriver----1,n- sous-categorie

    Nota : les cardinalités entre parenthèses signifient qu'il s'agit d'une identification relative.

    Tables :
    Categorie (cat_id, cat_libelle)
    Sous_categorie (sc_id, sc_libelle)
    Sous_categorie_1 (sc1_id_categorie, sc1_id_sous_categorie, sc1_sous_categorisable)

    Nota : sc1_sous_categorisable est une colonne de type booléen. Il faudra faire une contrainte pour vérifier qu'il n'existe pas déjà une sc1_id_categorie qui a cette colonne à TRUE.

    Nouveau MCD 2 :
    sous_categorie_1 -0,n----Avoir----0,n- sous_categorie

    Les sous-catégories 2 sont matérialisées par l'association Avoir.

    Table supplémentaire :
    Sous_categorie_2 (sc2_id_categorie, sc2_id_sous_categorie_1, sc2_id_sous_categorie_2)

    Nota : Il faudra une contrainte pour vérifier dans la table Sous_categorie_1 que le couple (sc2_id_categorie, sc2_id_sous_categorie_1) est bien sous_catégorisable.

    Combien de tables je dois créer ?
    Si je compte bien, ça en fait 4.

    Nota : Si une sous-catégorie ne peut appartenir qu'à une seule catégorie et une sous_catégorie_2 à une seule sous_categorie_1, il n'en faut plus que trois.

    MCD :
    Categorie -1,n----Avoir----(1,1)- Sous_categorie_1 -0,n----Avoir----(1,1)- Sous_categorie_2

    Tables :
    Categorie (cat_id, cat_libelle)
    Sous_categorie_1 (sc1_id_categorie, sc1_id_sous_categorie_1, sc1_sous_categorisable, sc1_libelle)
    Sous_categorie_2 (sc2_id_categorie, sc2_id_sous_categorie_1, sc2_id_sous_categorie_2, sc2_libelle)

    C'est plus simple, avec les mêmes contraintes de vérification.

    Comme l'identifiant d'une table est là pour distinguer des jumeaux parfaits, rien n'interdit, du fait de l'identification relative, d'avoir plusieurs fois le même libellé.
    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 habitué
    Inscrit en
    Décembre 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2007
    Messages : 94
    Points : 134
    Points
    134
    Par défaut
    CinePhil a exposé de façon plus claire et explicite ce dont je parlais plus haut dans le dernier volet de ta réponse.
    Je pense que tu devrais céer trois table:
    Categorie----1-n----avoir----1-1----SousCategorie1;
    SousCategorie----1-n----avoir----1-1----SousCategorie2

    On modélise en merise bien sur.

  6. #6
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Points : 72
    Points
    72
    Par défaut
    Merci pour vos reponses.

    Catégorie | Sous-Catégorie1 | Sous-Catégorie2
    A - AAA - AA
    A - AAL - AL
    B - BBB - NULL
    C - CCC - NULL

    Categorie (cat_id, cat_libelle) represente A, B, C

    Sous_categorie (sc_id, sc_libelle): AAA, AAL, BBB, CCC

    Sous_categorie_1 (sc1_id_categorie, sc1_id_sous_categorie, sc1_sous_categorisable) reprente l'association Categorie et Sous-Categorie:
    A- AAA / A - AAL / B - BBB / C - CCC

    Sous_categorie_2 (sc2_id_categorie, sc2_id_sous_categorie_1, sc2_id_sous_categorie_2) represente l'assication A - AAA - AA


    Est-ce que j'ai bien compris votre MCD?

  7. #7
    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 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Ton exemple de données :
    Catégorie | Sous-Catégorie1 | Sous-Catégorie2
    A - AAA - AA
    A - AAL - AL
    B - BBB - NULL
    C - CCC - NULL
    Mon schéma :
    Tables :
    Categorie (cat_id, cat_libelle)
    Sous_categorie_1 (sc1_id_categorie, sc1_id_sous_categorie_1, sc1_sous_categorisable, sc1_libelle)
    Sous_categorie_2 (sc2_id_categorie, sc2_id_sous_categorie_1, sc2_id_sous_categorie_2, sc2_libelle)
    Dans la table Categorie :
    cat_id / cat_libelle
    1 / A
    2 / B
    3 / C

    Dans la table Sous_categorie_1 :
    sc1_id_categorie / sc1_id_sous_categorie_1 / sc1_sous_categorisable / sc1_libelle
    1 / 1 / TRUE / AAA
    1 / 2 / TRUE / AAL
    2 / 1 / FALSE / BBB
    3 / 1 / FALSE / CCC

    Dans la table Sous_categorie_2 :
    sc2_id_categorie / sc2_id_sous_categorie_1 / sc2_id_sous_categorie_2 / sc2_libelle
    1 / 1 / 1 / AA
    1 / 2 / 1 / AL
    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
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Points : 72
    Points
    72
    Par défaut
    Merci bcp pour votre aide et pour votre temps CinePhil.

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

Discussions similaires

  1. Gestion de catégories peu intuitive
    Par Bktero dans le forum Blogs du Club
    Réponses: 3
    Dernier message: 10/11/2014, 17h14
  2. [MediaWiki] [1.14] Gestion des catégories
    Par LHG-Emz0 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 28/08/2009, 19h28
  3. [MySQL] [CMS] Gestion de Catégories/Sous catégories
    Par aenema dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 31/08/2008, 09h25
  4. SELECT: gestion de catégories et sous-catégories
    Par cissou06 dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 05/02/2008, 17h29
  5. [Conception] Gestion de catégories
    Par Him dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 13/12/2007, 17h13

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