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 :

Attributs dynamiques pour une entité [MCD]


Sujet :

Schéma

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Par défaut Attributs dynamiques pour une entité
    Bonjour à tous,
    Je débute en conception de BDD et je ne sais pas trop si mon approche est juste sur ce coup.

    Supposons que j'ai un site d'annonces qui s'organise comme suit :

    • Chaque annonce possède certains attributs invariants (pour simplifier, on va dire prix et date_publication)
    • Une annonce appartient à une catégorie (ex : immobilier, emploi...)
    • Selon la catégorie, l'annonce possède des attributs supplémentaires. Si par exemple l'annonce appartient à la catégorie "Immobilier", celle-ci aura en plus les attributs type_de_bien, superficie mais uniquement dans le cas où elle appartient à cette catégorie.


    Ma question est toute bête : comment modéliser tout ça ?

    Dans ma tête, les attributs supplémentaires font en réalité partie de l'entité "Annonces" et c'est là où je me perds. Je n'arrive vraiment pas à schématiser le tout.
    D'avance merci pour ceux qui tenteront de m'aider.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Problème courant...

    Soit travailler par nomenclature si les types d'annonces sont nombreux, soit travailler par héritage s'il le sont peu.

    Nomenclature...

    Règle de gestion :
    Un type d'annonce peut posséder plusieurs attributs et un attribut peut être possédé par plusieurs types d'annonces.

    MCD :
    type_annonce -0,n----posséder----0,n- attribut

    Tables :
    te_type_annonce_tan (tan_id, tan_libelle...)
    te_attribut_atr (atr_id, atr_libelle...)
    tj_tan_posseder_atr_tpa (tpa_id_type_annonce, tpa_id_attribut...)


    Règle de gestion :
    Une annonce est catégorisée par un seul type d'annonce et un type d'annonce peut catégoriser plusieurs annonces.

    MCD :
    type_annonce -0,n----catégoriser----1,1- annonce

    Table supplémentaire :
    te_annonce_ann (ann_id, ann_id_type_annonce...)

    Règle de gestion :
    Une annonce possède de un à plusieurs attributs de son type d'annonce et un attribut peut être possédé par plusieurs annonces selon le type de celle-ci.

    MCD :
    annonce -1,n----posséder----0,n- attribut

    Et là il faut ajouter une contrainte, difficilement représentable en format texte, pour assurer que les attributs de l'annonce sont bien ceux du type de l'annonce.

    Table supplémentaire :
    tj_ann_posseder_atr_apa (apa_id_annonce, apa_id_attribut...)


    Héritage...

    Règles de gestion :
    Une annonce immobilière est une annonce et une annonce peut être une annonce immobilière.
    Une annonce d'emploi est une annonce et une annonce peut être une annonce d'emploi.

    MCD :
    annonce_immo -(1,1)----être----0,1- annonce
    annonce_emploi -(1,1)----être----0,1------|

    Tables :
    te_annonce_ann (ann_id, [propriétés communes à toutes les annonces]...)
    th_annonce_immo_aim (aim_id_annonce, [propriétés spécifiques aux annonces immo]...)
    th_annonce_emploi_aem (aem_id_annonce, [propriétés spécifiques aux annonces emploi]...)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Par défaut
    Tout d'abord merci pour la réponse claire et détaillée.
    Cependant, débutant que je suis, cela m'amène à me poser d'autres questions (sans doute de débutant).

    Concernant le choix de travailler par nomenclature, je me demande pourquoi il existe deux associations "Posséder". Est-ce que ce n'est pas suffisant d'établir cette association uniquement entre "Types d'annonce" et "Attributs" ?
    L'autre question relative à cette méthode et qui peut sembler très bête pour un initié, c'est où seront stockées les valeurs de ces attributs ? Je parles des valeurs propres à chaque annonce.

    L'autre méthode évoquée me paraît bien plus logique mais le nombre de types d'annonces est indéfini et peut donc être grand.

    En tout cas merci encore pour la réponse et ta patience.

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Rastaa_html Voir le message
    Concernant le choix de travailler par nomenclature, je me demande pourquoi il existe deux associations "Posséder". Est-ce que ce n'est pas suffisant d'établir cette association uniquement entre "Types d'annonce" et "Attributs" ?
    Ce sont deux associations différentes ; reprenons les...

    1) type_annonce -0,n----posséder----0,n- attribut
    Ici on modélise le fait que, par exemple, le type d'annonce immobilière possèdera les attributs "Nombre de pièces", "Surface du terrain"...

    2) annonce -1,n----posséder----0,n- attribut
    Et là, on modélise la valorisation des attributs de l'annonce.
    Par exemple, l'annonce immobilière 124 aura la valeur 1200 pour l'attribut "Surface du terrain" alors que l'annonce 54 aura la valeur 650 pour ce même attribut.

    Dans la table associative tj_ann_posseder_atr_apa figurera une colonne pour la valeur de l'attribut :
    tj_ann_posseder_atr_apa (apa_id_annonce, apa_id_attribut, apa_valeur...)

    Alors que dans la table tj_tan_posseder_atr_tpa pourra figurer une colonne donnant le type de l'attribut (numérique, texte libre, liste de choix...)
    Mais là on entre dans un domaine qui complexifie le modèle. Commencez à bien assimiler les premières notions données jusque là.

    L'autre question relative à cette méthode et qui peut sembler très bête pour un initié, c'est où seront stockées les valeurs de ces attributs ? Je parles des valeurs propres à chaque annonce.
    Réponse juste au dessus !

    L'autre méthode évoquée me paraît bien plus logique mais le nombre de types d'annonces est indéfini et peut donc être grand.
    L'avantage de l'héritage est qu'à chaque nouveau type d'annonce, il faut modifier le modèle de données et donc potentiellement les programmes de l'application alors que dans le cas de la nomenclature, il suffit de d'insérer un nouveau type d'annonce et ses éventuels nouveaux attributs puis de les mettre en relation. on ne touche ainsi ni au modèle de données, ni aux programmes de l'application.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    bach58, ce que vous décrivez correspond grosso-modo à la modélisation par héritage... avec le problème que je viens d'évoquer dans ma réponse à Rastaa_html : à chaque nouveau type d'objet, on ajoute le modèle descriptif de l'objet en BDD et il faut modifier les programmes de l'application en conséquence.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Par défaut
    CinePhil un immense merci à toi ! (ou à vous ? on se connaît quand même depuis deux messages ) Ça m'a complètement éclairé et c'est limite rageant tellement ça me paraît clair et évident . En tout cas ça me servira sûrement comme référence pour plus tard et quelque chose me dit que je ne tarderai pas à revenir.
    Bonne fin de journée.

  7. #7
    Membre averti Avatar de bach58
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 35
    Par défaut
    La réponse de CinePhil est suffisante pour l'exemple donné.

    Seulement, il y a un problème de conception à l'origine de cet exemple : une annonce est une offre qui porte sur un objet (appartement, voiture, emploi, etc.)
    Et c'est cet objet qu'il faut modéliser puisque c'est lui qui doit porter sa propre description.

    Schématiquement :
    1)Annonce(objet de l'annonce, attributs communs à toute annonce)
    2) L'objet de l'annonce est une entité abstraite qui peut être soit appartement(superficie, ..), emploi (date, intitulé..), Voiture(...), etc...
    3) Relier annonce et objet de l'annonce
    Ensuite, on n'a qu'à ajouter d'autres objets.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/02/2008, 13h34
  2. Réponses: 3
    Dernier message: 02/01/2008, 14h02
  3. créer un lien dynamique pour une fomule SI à partir du code
    Par alex.a dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/07/2007, 16h13
  4. Réponses: 1
    Dernier message: 22/09/2006, 13h05
  5. [XSL] Enlever l'attribut xmlns pour une transf. XSL
    Par Acalon dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 24/04/2006, 14h21

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