Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
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 17/03/2011, 21h00   #1
Membre du Club
 
Homme Mickael
Étudiant
Inscription : décembre 2007
Messages : 256
Détails du profil
Informations personnelles :
Nom : Homme Mickael
Âge : 22

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : décembre 2007
Messages : 256
Points : 40
Points : 40
Par défaut Heritage et cle primaire

Bonjour,

Je ne suis pas sur d’être sur le bon forum car ma question n'est pas spécifique a MySQL.
J'utilise Hibernate pour la persistance objet-relationnel. Je sais que je parle de classes mais j'en ai besoin pour introduire le problème.
J'ai une classe A abstraite possédant les attributs a,b,c,d et une classe B qui hérite de A avec les attributs e,f,g (et ceux de A par héritage bien sur).
La classe abstraite A n'a aucun attribut (ou groupe d'attributs) pouvant l'identifier. Les instances de B sont identifiées a partir de l'attribut 'a' (de la classe A) et de l'attribut 'e' (de la classe B).
Comment représenter cet héritage dans le modèle relationnel? (laissons de cote Hibernate, je parle dans le cas ou je ferais le mapping manuellement)

Si je définis une table par classe (y compris la classe abstraite A), je me retrouve avec une table A et une table B (possédant une clé étrangère vers A). Le problème est qu'aucun des attributs (ou groupe d'attributs) de A ne peuvent identifier des lignes de A donc je me retrouve avec une table sans clé primaire, et c'est interdit. J'ai décidé donc d'ajouter une clé "artificiel"(je crois que ça s'appelle surrogate) qui n'a pas de représentation. Le problème est que le groupe d'attributs 'a' et 'e' (de A et B respectivement) est une clé candidate, il y a donc une contrainte d’unicité nécessaire; or je ne vois pas comment créer une contrainte d’unicité sur des attributs appartenant a des tables différentes.

Si vous aviez une solution en changeant l'architecture ou autre.


Merci d'avance
Miko95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 13h29   #2
Membre du Club
 
Homme Mickael
Étudiant
Inscription : décembre 2007
Messages : 256
Détails du profil
Informations personnelles :
Nom : Homme Mickael
Âge : 22

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : décembre 2007
Messages : 256
Points : 40
Points : 40
Personne n'a de solution? J'ai cherche sur internet, on parle de l'utilisation des triggers mais c'est valable pour des contraintes UNIQUE par exemple, ce n'est pas valable pour les contraintes de clé primaire.
Miko95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 18h48   #3
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
Faire un mapping RO dans MySQL relève de l'utopie. Il ne sait pas gérer les trigger INSTEAD OF nécessaire à cela et quand aux autres triggers c'est tellement limité qu'en pratique cela ne sert à pas grand chose...
Ce n'est pas avec MySQL que vous arriverez à faire proprement ce genre de chose.
Quand à l'utilisation d'Hibernate, c'est l'un des outils de mapping RO les plus médiocre !
Lisez les articles que j'ai écrit à ce sujet :
1) Mapping RO côté SGBDR : http://img1.lemondeinformatique.fr/f...s-epaisses.pdf
2) Critiques de MySQL : http://blog.developpez.com/sqlpro/p9...udre-aux-yeux/
3) comparaison outils de mapping : http://ormeter.net/
Bref, débarrassez vous de ces outils qui constitue le "vietnam informatique" !
http://www.theserverside.com/news/th...hread_id=41114

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 00
Vieux 20/03/2011, 22h53   #4
Membre du Club
 
Homme Mickael
Étudiant
Inscription : décembre 2007
Messages : 256
Détails du profil
Informations personnelles :
Nom : Homme Mickael
Âge : 22

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : décembre 2007
Messages : 256
Points : 40
Points : 40
Merci pour la réponse.
Dans ce cas, que me conseillez vous? Quel autre SGBD utiliser? Quel autre outil de mapping utiliser? Ou est ce que c'est mieux de créer sa base manuellement et de coder les accès a la base en SQL?
D’après votre réponse, je comprends que je dois utiliser les triggers? Mais dans ce cas, dois-je continuer a utiliser une clé "artificiel" et donc de vérifier l’unicité avec un trigger?
Aussi, je rencontre ces problèmes alors que je développe un projet open source, dans ce cas, n'y a t-il pas des limitations sur les bases de données a utiliser (j'ai choisi MySQL parce que elle est libre d'utilisation)?
Même question pour l'outil de mapping OR.

Merci
Miko95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 14h41   #5
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
Tout dépend de la montée en charge que vous voulez faire.... Il n'y a pas d'outils gratuit ou open source capable de mettre cela en œuvre aujourd'hui. PostGreSQL à prévu ce genre de techniques dans le futur...
Les SGBDR qui font cela sont Oracle, SQL Server et IBM DB2.
Pour les ORM, hibernate étant le plus mauvais, je vous conseille soit de vous en passer totalement (oui c'est parfaitement faisable et c'est un gain de temps), soit d'opter pour le meilleur, et là c'est plus de ma compétence !

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 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h36.


 
 
 
 
Partenaires

Hébergement Web