В чем разница MUL
, PRI
и UNI
в MySQL?
Я работаю над запросом MySQL, используя команду:
desc mytable;
Одно из полей показано как MUL
ключевое, другие отображаются как UNI
или PRI
.
Я знаю, что если ключ PRI
, только одна запись на таблицу может быть связана с этим ключом. Если ключ есть MUL
, означает ли это, что может быть более одной связанной записи?
Вот ответ mytable
.
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| courseid | int(11) | YES | MUL | NULL | |
| dept | char(3) | YES | | NULL | |
| coursenum | char(4) | YES | | NULL | |
+-----------+---------+------+-----+---------+-------+
MUL
отображается только для этого столбца, а не для всех других столбцов?Это на самом деле сокращение для:
В любом случае, есть три возможных значения для атрибута «Ключ»:
PRI
UNI
MUL
Смысл
PRI
иUNI
вполне понятенPRI
=> первичный ключUNI
=> уникальный ключТретья возможность
MUL
(о которой вы спрашивали) - это индекс, который не является ни первичным, ни уникальным ключом. Название происходит от «множественного», потому что допускается многократное вхождение одного и того же значения. Прямо из документации MySQL :Также есть последнее предупреждение:
Как общее примечание, документация MySQL довольно хорошая. Если есть сомнения, проверьте это!
источник
MUL
.Хотя, что такое MUL, PRI и UNI в MySQL?
Из документации MySQL 5.7 :
Живые примеры
Контрольная группа, в этом примере нет ни PRI, ни MUL, ни UNI:
Таблица с одним столбцом и индексом по одному столбцу имеет MUL:
Таблица со столбцом, который является первичным ключом, имеет PRI
Таблица со столбцом, который является уникальным ключом, имеет UNI:
Таблица с индексом, покрывающим foo и bar, имеет MUL только на foo:
Таблица с двумя отдельными индексами на двух столбцах имеет MUL для каждого
Таблица с индексом, охватывающим три столбца, имеет MUL на первом:
Таблица с внешним ключом, который ссылается на первичный ключ другой таблицы, является MUL
Вставьте это в свой неокортекс и установите диск на «фраппе».
источник
Для Мул это было также полезным документом для меня - http://grokbase.com/t/mysql/mysql/9987k2ew41/key-field-mul-newbie-question
«MUL означает, что ключ позволяет нескольким строкам иметь одно и то же значение. То есть это не UNIque-ключ».
Например, предположим, у вас есть две модели, Post и Comment. Сообщение имеет отношение has_many с комментарием. Тогда для таблицы «Комментарии» имеет смысл иметь ключ MUL (идентификатор сообщения), поскольку многие комментарии можно отнести к одному и тому же сообщению.
источник