Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/05/2011, 17h04   #1
Membre du Club
 
Inscription : novembre 2008
Messages : 270
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 270
Points : 50
Points : 50
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.
yo_haha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 17h37   #2
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
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
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 24/05/2011, 20h36   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 001
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 001
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
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...)

Citation:
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.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 24/05/2011, 22h45   #4
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 2 882
Détails du profil
Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 2 882
Points : 5 116
Points : 5 116
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 ?
__________________
_
Faites simple, mais pas plus simple ! (A. Einstein)
E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

__________________

Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/05/2011, 00h09   #5
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
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.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 09h25   #6
Membre du Club
 
Inscription : novembre 2008
Messages : 270
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 270
Points : 50
Points : 50
Je vous remercie de vos réponses.

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

David55 a dit :
Citation:
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 :
Citation:
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 :
Citation:
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 ?
yo_haha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 11h29   #7
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
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 +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/05/2011, 18h06   #8
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
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 )
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 01h25   #9
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 2 882
Détails du profil
Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 2 882
Points : 5 116
Points : 5 116
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).
__________________
_
Faites simple, mais pas plus simple ! (A. Einstein)
E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

__________________

Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/05/2011, 12h54   #10
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
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
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/05/2011, 13h40   #11
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 2 882
Détails du profil
Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 2 882
Points : 5 116
Points : 5 116
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...
__________________
_
Faites simple, mais pas plus simple ! (A. Einstein)
E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

__________________

Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/06/2011, 22h55   #12
Membre du Club
 
Inscription : novembre 2008
Messages : 270
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 270
Points : 50
Points : 50
Bonjour,

J'ai utilisé l'héritage avec Postgresql et la table mère se remplit automatiquement lorsque je remplis la table fille.
yo_haha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h20.


 
 
 
 
Partenaires

Hébergement Web