¿Cuál es la diferencia entre MUL
, PRI
y UNI
en MySQL?
Estoy trabajando en una consulta MySQL, usando el comando:
desc mytable;
Uno de los campos se muestra como una MUL
clave, otros se muestran como UNI
o PRI
.
Sé que si una clave es PRI
, solo se puede asociar un registro por tabla con esa clave. Si una clave es MUL
, ¿eso significa que podría haber más de un registro asociado?
Aquí está la respuesta 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
solo se muestra en esa columna y no en todas las demás columnas?Este es un atajo para:
En cualquier caso, hay tres valores posibles para el atributo "Clave":
PRI
UNI
MUL
El significado de
PRI
yUNI
son bastante claros:PRI
=> clave primariaUNI
=> clave únicaLa tercera posibilidad,
MUL
(sobre la que preguntó) es básicamente un índice que no es una clave primaria ni una clave única. El nombre proviene de "múltiple" porque se permiten múltiples ocurrencias del mismo valor. Directamente de la documentación de MySQL :También hay una advertencia final:
Como nota general, la documentación de MySQL es bastante buena. ¡En caso de duda, comprobar que funciona!
fuente
MUL
.¿Piensa en qué es MUL, PRI y UNI en MySQL?
De la documentación de MySQL 5.7 :
Ejemplos en vivo
Grupo de control, este ejemplo no tiene ni PRI, MUL ni UNI:
Una tabla con una columna y un índice en una columna tiene un MUL:
Una tabla con una columna que es una clave principal tiene PRI
Una tabla con una columna que es una clave única tiene UNI:
Una tabla con un índice que cubre foo y bar tiene MUL solo en foo:
Una tabla con dos índices separados en dos columnas tiene MUL para cada una.
Una tabla con un índice que abarca tres columnas tiene MUL en la primera:
Una tabla con una clave externa que hace referencia a la clave principal de otra tabla es MUL
Pegue eso en su neocorteza y ajuste el dial a "frappe".
fuente
Para Mul, esta también fue una documentación útil para mí: http://grokbase.com/t/mysql/mysql/9987k2ew41/key-field-mul-newbie-question
"MUL significa que la clave permite que varias filas tengan el mismo valor. Es decir, no es una clave ÚNICA".
Por ejemplo, supongamos que tiene dos modelos, Publicar y Comentar. La publicación tiene una relación has_many con Comentario. Entonces, tendría sentido que la tabla de comentarios tenga una clave MUL (ID de publicación) porque muchos comentarios se pueden atribuir a la misma publicación.
fuente