Quelle est la différence entre MUL
, PRI
et UNI
MySQL?
Je travaille sur une requête MySQL, en utilisant la commande:
desc mytable;
L'un des champs est indiqué comme étant une MUL
clé, d'autres apparaissent comme UNI
ou PRI
.
Je sais que si une clé est PRI
, un seul enregistrement par table peut être associé à cette clé. Si une clé est MUL
, cela signifie-t-il qu'il pourrait y avoir plus d'un enregistrement associé?
Voici la réponse de mytable
.
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| courseid | int(11) | YES | MUL | NULL | |
| dept | char(3) | YES | | NULL | |
| coursenum | char(4) | YES | | NULL | |
+-----------+---------+------+-----+---------+-------+
MUL
s'affiche- t -il uniquement sur cette colonne et pas sur toutes les autres colonnes?Il s'agit en fait d'un raccourci pour:
Dans tous les cas, il existe trois valeurs possibles pour l'attribut "Clé":
PRI
UNI
MUL
Le sens de
PRI
etUNI
sont assez clairs:PRI
=> clé primaireUNI
=> clé uniqueLa troisième possibilité,
MUL
(que vous avez posée) est essentiellement un index qui n'est ni une clé primaire ni une clé unique. Le nom vient de "multiple" car plusieurs occurrences de la même valeur sont autorisées. Directement à partir de la documentation MySQL :Il y a aussi une dernière mise en garde:
De manière générale, la documentation MySQL est assez bonne. En cas de doute, vérifiez!
la source
MUL
.Bien que ce soit MUL, PRI et UNI dans MySQL?
De la documentation MySQL 5.7 :
Exemples en direct
Groupe de contrôle, cet exemple n'a ni PRI, MUL, ni UNI:
Une table avec une colonne et un index sur une colonne a un MUL:
Une table avec une colonne qui est une clé primaire a PRI
Une table avec une colonne qui est une clé unique a UNI:
Une table avec un index couvrant foo et bar a MUL uniquement sur foo:
Une table avec deux index séparés sur deux colonnes a MUL pour chacun
Une table avec un index couvrant trois colonnes a MUL sur la première:
Une table avec une clé étrangère qui fait référence à la clé primaire d'une autre table est MUL
Collez-le dans votre néocortex et réglez le cadran sur "frappe".
la source
Pour Mul, cette documentation m'a également été utile - http://grokbase.com/t/mysql/mysql/9987k2ew41/key-field-mul-newbie-question
"MUL signifie que la clé permet à plusieurs lignes d'avoir la même valeur. Autrement dit, ce n'est pas une clé UNIque."
Par exemple, supposons que vous ayez deux modèles, Post et Comment. Le message a une relation has_many avec Commentaire. Il serait alors logique que la table Comment ait une clé MUL (Identifiant de publication) car de nombreux commentaires peuvent être attribués à la même publication.
la source