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

Langage SQL Discussion :

Passage du schéma à la BD


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    Par défaut Passage du schéma à la BD
    Bonjour,

    J'ai une question concernant le passage du schéma conceptuel à la création de la base de données.

    Dans le schéma j'ai une entité mère A, deux entités B et C qui héritent de A et une quatrième entité D qui hérite de B.
    J'ai ajouté cet héritage à la conception pour éviter la répétition d'attributs : B, C et D ont plusieurs attributs en commun.

    Je veux avoir dans la base de données une table A qui contient toutes les entités qu'il y aura dans les tables B, C et D en plus de ces dernières. Est-ce que si je remplie les sous tables, la table A sera remplie automatiquement ?

    Et est-ce que cette conception vous semble-t-elle correcte ?

    Cordialement.

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Quel SGBD utilises tu?

    Je pense qu'il faut évité l'héritage de le modèle entité association! Tu dois avoir un moyen beaucoup plus simple (sans héritage)!

    N'hésite pas à poster le détail de tes tables si tu veux qu'on t'aide à trouver un autre modèle de donnée

  3. #3
    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 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par yo_haha Voir le message
    Dans le schéma j'ai une entité mère A, deux entités B et C qui héritent de A et une quatrième entité D qui hérite de B.
    Tu devrais donc avoir ces tables :
    A (a_id, colonnes communes...)
    B (b_id_A, colonnes spécifiques à B...)
    C (c_id_A, colonnes spécifiques à C...)
    D (d_id_B, colonnes spécifiques à D...)

    Est-ce que si je remplie les sous tables, la table A sera remplie automatiquement ?
    Ce n'est pas la peine puisque dans les sous-tables il n'y a que les colonnes spécifiques à ces sous-tables.
    Il faut d'abord insérer dans A puis dans B ou C puis éventuellement dans D.

    Pour récupérer tous les attributs de D, utilise une vue qui fera une jointure entre D et B et entre B et A.

    Si ton SGBD supporte les triggers INSTEAD OF sur les vues, tu pourras faire une requête qui insère dans la vue de D et le trigger répartira les données dans les trois tables.

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 091
    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 091
    Points : 31 510
    Points
    31 510
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par David55 Voir le message
    Je pense qu'il faut éviter l'héritage de le modèle entité association!
    Quelles sont les raisons déterminant votre position ?

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 949
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 949
    Points : 5 848
    Points
    5 848
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Il faut d'abord insérer dans A puis dans B ou C puis éventuellement dans D.
    ...
    Si ton SGBD supporte les triggers INSTEAD OF sur les vues, tu pourras faire une requête qui insère dans la vue de D et le trigger répartira les données dans les trois tables.
    Sinon il faut faire les insertions au sein d'une même transaction à fin de pouvoir annuler (rollback) l'insertion dans A si l'insertion dans B, C ou D échoue. Ce qui exclut l'utilisation du moteur MyIsam sur MySql si tel était ton choix de départ.

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    Par défaut
    Je vous remercie de vos réponses.

    J'utilise ArcCatalog de ArcGIS pour créer la GéoDataBase.

    David55 a dit :
    Je pense qu'il faut évité l'héritage de le modèle entité association! Tu dois avoir un moyen beaucoup plus simple (sans héritage)!
    Pourquoi dois-je abandonner le modèle entité association et l'héritage ?

    CinePhil a dit :
    Il faut d'abord insérer dans A puis dans B ou C puis éventuellement dans D.
    Je vais essayer de créer la bd et la remplir comme vous l'expliquez.
    Sinon, pour les trigger, je ne sais pas si ArcCatalog les supporte ou pas.

    skuatamad a dit :
    Sinon il faut faire les insertions au sein d'une même transaction à fin de pouvoir annuler (rollback) l'insertion dans A si l'insertion dans B, C ou D échoue. Ce qui exclue l'utilisation du moteur MyIsam sur MySql si tel était ton choix de départ.
    Pourriez-vous m'expliquer la façon de faire cela ?

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    A lire sur l'héritage et les différentes techniques de passage du MCD au MPD :
    http://sqlpro.developpez.com/cours/m...tion/heritage/

    Pour ce qui est de l'insertion des données dans les multiples tables, le mieux est de créer une vue et implémenter un trigger INSTEAD OF, comme décrit ici :
    http://blog.developpez.com/sqlpro/p9...pping-ro-dire/

    A +

  8. #8
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Bonsoir,



    Quelles sont les raisons déterminant votre position ?
    Bonjour,

    C'est en général comme ça qu'on me l'a appris dans toutes les écoles que j'ai faites ! On me disait que c’était souvent plus compliqué et inutile de le faire ainsi pour générer une base (Je parle bien du MEA et non du diagramme de classe). De plus, dans toutes les entreprises dans lesquelles j'ai travaillé on n'a jamais utilisé d’héritage!
    Ce qui est sur c'est qu'on peut le faire mais d’après mon apprentissage je l’éviterai !
    Il se peut que j'aie tort ou que j'aie mal compris ! Dans ce cas je suis ravi de le savoir

    C'est en ça que ce site est bien, on en apprend toujours plus!

    Bon courage (et je suis de près cette conversation car apparemment j'ai tort )

  9. #9
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 091
    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 091
    Points : 31 510
    Points
    31 510
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par David55 Voir le message
    C'est en général comme ca qu on me l'as appris dans toutes les écoles que j'ai faites!
    On va dire que vous n’avez pas eu de chance d’avoir fréquenté tant d’écoles aussi mal informées...

    Citation Envoyé par David55 Voir le message
    De plus, dans toutes les entreprises dans lesquelles j'ai travaille on n'a jamais utiliser d’héritage!
    On va dire que vraiment vous n’avez pas eu non plus de chance d’être intervenu dans tant d’entreprises systématiquement si peu au courant des bienfaits de l’héritage...

    Mais à votre âge, tous les espoirs vous sont permis.

    Je pense que vous tirerez profit de la lecture de la discussion avec Heledir, lequel a découvert avec grand intérêt l’héritage (plus précisément le principe de généralisation/spécialisation), voyez le message #10 et la réaction d'Heledir (message #11 et suivants). Si vous avez des questions, des états d’âme, n’hésitez pas à le faire savoir, tous autant que nous sommes, nous vous aiderons à repartir d’un bon pied.


    Considérez maintenant deux modèles conceptuels, figurant dans l’ouvrage de référence « La Méthode Merise, Tome 1, Principes et outils », modèles exprimant la même chose :

    Des constructeurs d’automobiles fabriquent des voitures de différents modèles. Ces constructeurs vendent les voitures à des garages, lesquels les revendent à des particuliers qui à leur tour peuvent les revendre à d’autres particuliers ou à des garages.

    Ces deux modèles conceptuels font l’objet de quelques réserves, mais lequel des deux vous paraît le plus clair ?

    1) Sans héritage (version « Beaubourg »)




    2) Avec héritage (généralisation)



    A titre d'exercice, je vous laisse le soin de procéder à la dérivation de ces modèles conceptuels en modèles "logiques" (et d'en profiter le cas échéant pour remédier à telle ou telle faiblesse de conception).

  10. #10
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Merci pour l'info

    PS: il ne faut pas remettre en question mes écoles et entreprises, ça peut être moi qui ait mal compris !

    Maintenant je le sais

  11. #11
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 091
    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 091
    Points : 31 510
    Points
    31 510
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par David55 Voir le message
    PS: il ne faut pas remettre en question mes écoles et entreprises, ça peut être moi qui ait mal compris !
    C'est bien comme cela que je l'entendais. C'était du 2e degré...

    Allez en paix...

  12. #12
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    J'ai utilisé l'héritage avec Postgresql et la table mère se remplit automatiquement lorsque je remplis la table fille.

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

Discussions similaires

  1. [Débutant] Passage d'un schéma 2d à un schéma 3d
    Par mzrock dans le forum MATLAB
    Réponses: 0
    Dernier message: 29/02/2012, 20h18
  2. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  3. Pb BDE suite a passage en Windows 2000 pro
    Par ARIF dans le forum Paradox
    Réponses: 4
    Dernier message: 18/11/2002, 11h39
  4. [VB6]Passage par référence d'une prop. d'objet à une fct
    Par -gYs- dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 02/09/2002, 08h55
  5. Passage de parametre a une anim Flash 5
    Par debug dans le forum Intégration
    Réponses: 4
    Dernier message: 03/06/2002, 17h59

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