|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Débutant
Inscription : mai 2005 Messages : 2 066 ![]() |
Bonjour,
Je suis pas trop pro dans MySQL surtout en ce qui concerne les liaisons. Pourtant je me lance dans un gros projet qui est pour moi l'occase d'en apprendre un peu plus. Je viens des découvrir MySQL Workbrench http://wb.mysql.com/ pour modéliser ma base de données et je trouve ceci super utile pour l'implémentation de la base de données. Malgré ceci, je peine sur les relations entre mes tableaux et je dois vraiment me concentrer afin de faire au mieux dès le départ. Alors j'aimerais vous poser deux trois questions : Quelles sont les différences entre les relations 1) 1:1(non-identfying relation) ---- 2) 1:n (non-identifying relation) ---<- 3)1:1 (identifying relation) ___ 4) 1:n (identifying relation) ___<_ 5) n:m (identifying relation) _>__<_ Mais ça, c'est dans la modélisation. Ensuite dans mon code, je dois aussi faire des JOIN si les relations sont déjà fait au niveau de la modélisation de la base, avec MySQL workbrench? Car cette dernière application va générer le code MySQL que je vais pourvoir utiliser pour générer ma base de données. Pourriez-vous m'éclaircir? Mille mercis
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout! |
|
|
00
|
|
|
#2 | ||||||||
![]() ![]() |
Dans une base de données SQL, il n'y a pas de tableaux mais des tables, elles-même composées de lignes et de colonnes (et pas de champs) !
Citation:
Règle de gestion : Un projet est dirigé par un seul chef de projet et un chef de projet ne peut diriger qu'un projet à la fois. MCD : (Modèle Conceptuel de Données, de la méthode Merise) Chef_projet -0,1----Diriger----1,1- Projet Les notons sémantiques de projet et de chef de projet sont indépendantes. On n'identifie pas un projet relativement à son chef de projet ni un chef de projet relativement à son projet. La suppression de l'un n'entraîne pas la suppression de l'autre. Dans le formalisme de MySQL Workbench, ça donnerait ceci : Chef_projet -o|- - - - -||- Projet Nota 1 : on est ici dans un cas 0:1 (non-identifying relation) mais qui se fait avec le même outil et en changeant une propriété de la relation : il suffit de décocher Mandatory dans l'onglet Foreign keys de la relation. Tables : Chef_projet (cpj_id...) Projet (prj_id, prj_id_chef_projet...) Clé primaire soulignée et clé étrangère en italique. Nota 2 : Pour respecter le fait qu'un chef de projet ne peut diriger qu'un seul projet à la fois, il faut un index UNIQUE sur prj_id_chef_projet. Citation:
Règle de gestion : Un projet fait travailler de une à plusieurs personnes et une personne peut travailler sur un seul projet à la fois. MCD : Personne -0,1----Travailler----1,n- Projet MySQL Workbench : Personne >o- - - -||- Projet Nota : Idem cas précédent, on est sur une relation 0:n. Tables : Projet (prj_id, prj_id_chef_projet...) Personne (prs_id, prs_id_projet) Citation:
Règle de gestion : Une personne peut être un chef de projet et un chef de projet est une personne. MCD : Chef_projet -(1,1)----Etre----0,1- Personne MySQL Workbench : Chef_projet -||--------|o- Personne Nota 1 : Notez les cardinalités entre parenthèses qui matérialisent l'identification relative. Tables : Personne (prs_id...) Chef_projet (prs_id_personne...) Nota 2 : Le chef de projet est identifié relativement à la personne donc l'identifiant du chef de projet est celui de la personne. prs_id_personne est ainsi à la fois clé étrangère et clé primaire. Citation:
Règle de gestion : Une commande est composée de une à plusieurs lignes et une ligne de commande entre dans la composition d'une seule commande. MCD : Commande -1,n----Composer----(1,1)- Ligne_commande MySQL Workbench : Commande -||---------|< Ligne_commande Tables : Commande (cmd_id...) Ligne_commande (lc_id_commande, lc_num_ligne...) Nota : La ligne de commande est identifiée relativement à la commande, l'identifiant de la commande participe donc à la clé primaire de la table ligne_commande. Cette clé primaire est complétée par le numéro de la ligne dans la commande. Citation:
Règle de gestion : Un projet peut faire intervenir plusieurs sous-traitants et un sous-traitant peut intervenir sur plusieurs projets. MCD : Sous-traitant -0,n----Intervenir----0,n- Projet MySQL Workbench : Sous-traitant -||----|< Intervention_sous_traitant >|----||- Projet Tables : Projet (prj_id...) Sous-traitant (str_id...) Intervention_sous_traitant (ist_id_projet, ist_id_sous_traitant...) Nota : La clé primaire de la table associative Intervention_sous_traitant est composée des identifiants des deux tables entrant en jeu dans l'association. Citation:
Par exemple, quelles sont les noms des chefs de projets de tous les projets ? Code :
Comme le chef de projet est identifié relativement à la personne, on peut directement joindre les tables projet et personne sans passer par la jointure entre projet et chef_projet !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. 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 la suite Linux Mageïa ! |
||||||||
|
10
|
|
|
#3 |
|
Débutant
Inscription : mai 2005 Messages : 2 066 ![]() |
Merci pour ta super grande réponse. Il y a deux trois point que j'ai pas trop compris, mais dans tous les cas tu m'a bien écaircit.
Je vais encore étudier tout ceci. Merci!
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout! |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com