J'ai la structure suivante pour mon projet de projet et de développeur:
developer table id developer name etc... project table id project name etc... developer _project table ???
4 Réponses :
Une table combinée (dans MySQL Workbench appelé automatiquement "développeur_has_project") doit utiliser une clé primaire combinée (développeur, projet). Si vous ajoutez une troisième colonne à cette touche (ID), il ne doit plus être unique:
(id,developer,project) (1,1,1) (2,1,1) <-- error (3,2,1)
Utilisez une clé combinée unique: si vous créez un identifiant Remarque: Assurez-vous que les définitions de la colonne sont identiques sur le développeur code> code> et le projet code> code> Tables . em> p> p> code>, vous ne l'utiliserez probablement jamais puisque vous allez interroger le développeur_id et / ou le projet_id dans votre
Joindre de gauche Code> P>
Pourquoi ils doivent être la même définition?
Disons que vous avez INT non signé code> (max valeur 4294967295 car est non signé) de la table de développeur et
tinyint code> (valeur max est 127 car sa signature - le
non signé code> mot n'est pas défini) dans la table d'intersection. Étant donné que le numéro maximum de la table d'intersection est atteint, il n'entrera pas plus de ce numéro, il s'arrête à 127 (vous obtiendrez:
Valeur hors plage de colonne 'développeur_id' à la ligne 1 code>). En savoir plus: Aide.scibit.com/mascon/masconmysql_field_Types.html
Pour une relation de plusieurs à plusieurs, vous pouvez simplement utiliser une clé primaire composite de deux champs.
Exemple (supposant que projeter_id et développeur_id est entier): p>
soit:
developer_project table id developer_id project_id PRIMARY KEY (id) UNIQUE KEY (developer_id, project_id)