1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    octobre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : octobre 2008
    Messages : 65
    Points : 56
    Points
    56

    Par défaut Spécialisations d'objets

    Bonjour,
    je cherche à créer une base de donnée, et même si elle n'est pas énorme, je voudrais créer son schéma de façon optimisée (entrainement, etc)
    je bloque sur une chose, simple, car je me demande si dans ce cas, optimiser, complique pas le schema. je m'explique

    j'ai une table principale "Item", qui a comme attribut : nom, isActive, etc
    je peux la trier par une suite de catégories et sous catégories comme suit :
    Section > Categorie > Type qui comportent chacunes les attributs : nom, isActive en commun
    puis des elements complementaires lies à item : foundOn, Source, qui possedent encore les mêmes attributs : nom, isActive.

    je me suis donc dit que pour optimiser je ferais une table mere avec nom, isActive et des tables enfants, liées entre elles par des cardinalitées. mais au final je me retrouve avec des cles primaires et etrangères qui proviennent d'une même table et ca devient difficilement lisible

    Quel serait la meilleure solution pour ce cas? sui-je suis la bonne voie?
    merci pour votre aide

  2. #2
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    3 667
    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 : 3 667
    Points : 8 315
    Points
    8 315
    Billets dans le blog
    1

    Par défaut

    Bonjour,

    Se serait plus simple si vous communiquiez votre modèle logique sous forme de schéma, plus facile à lire qu'un discours

    Et si la question concerne la modélisation proprement dite, il faut publier votre sujet ici : https://www.developpez.net/forums/f6...sation/schema/

    Citation Envoyé par lamouche42 Voir le message
    je me suis donc dit que pour optimiser je ferais une table mere avec nom, isActive et des tables enfants, liées entre elles par des cardinalitées.
    C'est ce qu'il faut faire en effet, non pas pour "optimiser", mais pour respecter les formes normales, du moins les 3 premières ce qui est indispensable.

    Citation Envoyé par lamouche42 Voir le message
    mais au final je me retrouve avec des cles primaires et etrangères qui proviennent d'une même table et ca devient difficilement lisible
    D'une même table ? Difficilement lisible ? Comment ça ?

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    octobre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : octobre 2008
    Messages : 65
    Points : 56
    Points
    56

    Par défaut

    merci de votre réponse, c'est vrai que c'est pas tres compréhensible avec des mots... voicile MCD de la partie concernée :
    Nom : screen-15.55.37[30.04.2018].png
Affichages : 43
Taille : 46,4 Ko
    sur ce MCD, nous voyons que l'entité "objet_base" est la mere de toutes les autres entités,
    j'etais parti de l'idée de mettre un clé primaire à chaque entité enfant, mais powerAMC transforme ma clé primaire simple en clé primaire composée lors de la génération du MCD (id entité enfant + id entité mere)

    ce qui me fait pour l'entité categorie une clé primaire composée (id_cat + fk_objetbase) + la foreign key section qui elle aussi est composée (id_sec + fk_objetbase)
    je trouve cela assez lourd.
    n'est ce pas plus simple désigner la foreign key de l'entité mere présent dans chaque entité enfant comme primary key? sachant que tous les enfants sont mutuellement exclusifs

    Quelle est la méthode "normale" pour ce type de problème?

    ps : sur ce schema, je n' ai pas mis de primary key ds les entités enfants pour mon second test

  4. #4
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    3 667
    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 : 3 667
    Points : 8 315
    Points
    8 315
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par lamouche42 Voir le message
    merci de votre réponse, c'est vrai que c'est pas tres compréhensible avec des mots... voicile MCD de la partie concernée :
    sur ce MCD, nous voyons que l'entité "objet_base" est la mere de toutes les autres entités,
    j'etais parti de l'idée de mettre un clé primaire à chaque entité enfant, mais powerAMC transforme ma clé primaire simple en clé primaire composée lors de la génération du MCD (id entité enfant + id entité mere)
    Et c'est tout à fait normal ! dans un héritage, l'identifiant primaire des entités-type filles est l'identifiant primaire hérité de l'entité-type mère. Il ne faut donc pas définir de nouvel identifiant dans les filles.

    Ce qui m'inquiète se sont les relations que vous avez placées entre les différentes entité-type filles, surtout avec des cardinalité max n
    C'est aberrant et infaisable

    Pour pouvoir travailler plus avant sur votre MCD, il faut que vous expliquiez le rôle de chaque individu dans votre modèle (les entités-type) et que vous décriviez les relations (c'est à dire vos règles de gestion). Ajoutez aussi quelques attributs (les principaux) dans vos entités-type.
    Ce sujet doit être déplacé dans le forum modélisation qui se trouve ICI

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    octobre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : octobre 2008
    Messages : 65
    Points : 56
    Points
    56

    Par défaut

    ok pour le déplacement, je suppose qu il va être fait automatiquement...

    l'association "regroupe" 0,n / 1,n deviendra forcement une table d'association car un modele peut regrouper 0 ou plusieurs classes et 1 classe peut appartenir à 1 ou plusieurs modeles mais n'est pas porteuse de donnée.

    pour ce qui est des entités section/categorie/modele/classe/source/foundon, elles ne possedent que les attributs fournis par l'entité mère (ce ne sont que des regroupement en cascades).

    je vais finir mon MCD (il n'est pas complet) et reviendrais le soumettre de facon plus complete

    Merci en tout cas

  6. #6
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    3 667
    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 : 3 667
    Points : 8 315
    Points
    8 315
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par lamouche42 Voir le message
    pour ce qui est des entités section/categorie/modele/classe/source/foundon, elles ne possedent que les attributs fournis par l'entité mère (ce ne sont que des regroupement en cascades).
    En ce cas n'utilisez pas l'héritage, il faut seulement créer autant de relations que nécessaire vers chaque typologie, par exemple
    OBJET_BASE 1,1 --- appartenir --- 0,n SECTION
    OBJET_BASE 1,1 --- categoriser --- 0,n CATEGORIE
    etc...



    Citation Envoyé par lamouche42 Voir le message
    je vais finir mon MCD (il n'est pas complet) et reviendrais le soumettre de facon plus complete
    Apportez surtout des explications, définissez ce que sont les différents acteurs et précisez vos règles de gestion sous la forme (exemples)
    R001 : un OBJET_BASE appartient à une et une seule SECTION
    R002 : une SECTION peut concerner zéro à plusieurs OBJET_BASE
    R003 : etc...

    n'hésitez pas à illustrer par quelques exemples concrets

Discussions similaires

  1. [EBJ3][Annotations] Optimisation de tables
    Par Jester dans le forum Hibernate
    Réponses: 4
    Dernier message: 02/11/2006, 17h55
  2. Optimiser une table sur SQL server trop gourmande en CPU
    Par molarisapa dans le forum MS SQL-Server
    Réponses: 2
    Dernier message: 02/06/2006, 16h17
  3. Optimiser les tables mysql, nécessaire ?
    Par Michaël dans le forum Requêtes
    Réponses: 5
    Dernier message: 15/07/2005, 18h11
  4. Optimisation des tables
    Par le-roy_a dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 24/01/2005, 10h04
  5. Optimiser les tables
    Par blizar dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 04/06/2004, 08h34

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