12
votes

MySQL ID unique ou identifiant combiné

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
???


0 commentaires

4 Réponses :


1
votes

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)


0 commentaires

13
votes

Utilisez une clé combinée unique: xxx

si vous créez un identifiant , vous ne l'utiliserez probablement jamais puisque vous allez interroger le développeur_id et / ou le projet_id dans votre Joindre de gauche

Remarque: Assurez-vous que les définitions de la colonne sont identiques sur le développeur et le projet Tables .


2 commentaires

Pourquoi ils doivent être la même définition?


Disons que vous avez INT non signé (max valeur 4294967295 car est non signé) de la table de développeur et tinyint (valeur max est 127 car sa signature - le non signé 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 ). En savoir plus: Aide.scibit.com/mascon/masconmysql_field_Types.html



5
votes

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): xxx


0 commentaires

0
votes

soit:

developer_project table
id
developer_id
project_id
PRIMARY KEY (id)
UNIQUE KEY (developer_id, project_id)


0 commentaires