|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2010 Messages : 13 ![]() |
Salut,
s'il vous plait pouvez vous m'aider à comprendre comment peut on détecter l'existence des contraintes dans un fichier sql. Je vais essayer d'être plus précis : Nous savons que lors de la modélisation en UML on peut ajouter à notre modèle conceptuel des contraintes tels que disjoint, chevauchement, sous ensemble,etc. donc lors de la transformation du modèle conceptuel en modèle physique ces contraintes doivent figurer aussi dans le fichier sql. comment peut on donc les exprimer en sql et y a-t-il des moyens automatiques permettant de les détecter. Merci pour votre assistance. |
|
|
00
|
|
|
#2 | |
![]() ![]() |
Citation:
Les contraintes natives dans un SGBDR sont : - les clés étrangères ; - les contraintes CHECK. Le reste doit être développé par des triggers, fonctions, procédures. Voir le site et/ou le livre de SQLPro pour plus d'informations sur les contraintes en SQL.
__________________
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 ! |
|
|
00
|
|
|
#3 | ||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 937 ![]() |
Tout dépend des cardinalités des liens du modèle. Cela se réalise soit sous forme de contraintes CHECK soit sous forme de déclencheurs.
Par exemple si je modélise des joueurs devant jouer des parties d'échec, j'aurais par exemple le modèle suivant : Code :
joueur_id_blanc <> joueur_id_noir dans la table partie suffira ! 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 * * * * * |
||
|
00
|
|
|
#4 | |
|
Invité de passage
![]() Inscription : mai 2010 Messages : 13 ![]() |
Citation:
par exemple la contrainte chevauchement désigne qu'une instance des spécialisations peut être simultanément une instance d'une autre si par exemple on a un lien généralisation/spécialisaion entre l'entité père "véhicule" et les entités fils : "à voile" , " à moteur", "terrestre", "marin" sachant que les deux premiers entités fils sont issus du critère "motorisation" et les deux derniers sont issus du critère "milieur" on peut ajouter la contrainte chevauchement entre les entités "terrestre " et " amoteur" |
|
|
|
00
|
|
|
#5 | |
|
Invité de passage
![]() Inscription : mai 2010 Messages : 13 ![]() |
Citation:
mais comment peut on juger qu'un fichier sql contient des contraintes de type chevauchement, disjoint.. pour le modèle conceptuel il suffit de les voir présentés explicitement sur les diagrammes. est ce qu' au niveau physique il ya des règles bien déterminées ou des algorithmes permettant de détecter ces contraintes et dire qu'il existe une contrainte de type "..." entre les deux entités x et y ?? |
|
|
|
00
|
|
|
#6 | ||||
![]() ![]() |
Citation:
Citation:
Le chevauchement est implicite puisqu'en fait ce n'est pas une contrainte mais une possibilité. L'exclusion par contre est une contrainte qui peut s'exprimer par une contrainte CHECK (sauf chez MySQL qui ignore ce mot clé et pour lequel il faut mettre en oeuvre un trigger) de type : Code :
Si le sous-ensemble est un héritage, alors on joue directement avec les clé étrangères. MCD Merise : Salarie -(1,1)----Etre----0,1- Personne Tables : Personne (prs_id, prs_nom, prs_prenom...) Salarie (slr_id_personne, slr_brut_mensuel...) slr_id_personne est une clé étrangère référençant Personne.prs_id, ce qui fait que la table Salarie est un sous-ensemble de la table Personne.
__________________
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 ! |
||||
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : mai 2010 Messages : 13 ![]() |
oui monsieur exactement. En faite j'ai choisi un exemple de chevauchement et il ya d'autres. je veux dire qu'entre ces différentes entité il peut y avoir un chevauchement qu'on doit le signaler par une contrainte explicite. c'est ça l'UML!! il offre plus de contrainte et de sémantique explicite
|
|
|
00
|
|
|
#8 |
![]() ![]() |
Comme j'ai dit dans mon précédent message, le chevauchement est implicite en base de données. Rien n'interdit a priori qu'un véhicule à moteur soit aussi un véhicule à voile. Ce qu'il faut coder, ce sont les obligations et les interdictions.
Et pour ça il y a les clés étrangères, les contraintes CHECK, les triggers, procédures et fonctions. Toutes ces choses peuvent être trouvées en consultant information_schema mais il faut éventuellement un interpréteur externe à la BDD pour détecter de quel type de contrainte il s'agit. D'autant plus qu'en ce qui concerne les procédures et fonctions, elles ne codent pas forcément des contraintes.
__________________
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 ! |
|
10
|
|
|
#9 | ||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 937 ![]() |
Citation:
mais aussi de les réaliser dans le modèle physique soit par des contraintes soit par des déclencheurs. Citation:
Lisez les ouvrages de mon collègue Christian Soutou pour vous en convaincre.... Il a d'ailleurs consacré un chapitre entier de son livre à ce sujet A + 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 * * * * * |
||
|
10
|
|
|
#10 |
|
Invité de passage
![]() Inscription : mai 2010 Messages : 13 ![]() |
Merci bien monsieur Philippe Leménager et monsieur Frédéric BROUARD pour votre assistance.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com