Qual é a diferença entre MUL
, PRI
e UNI
no MySQL?
Estou trabalhando em uma consulta MySQL, usando o comando:
desc mytable;
Um dos campos é mostrado como MUL
chave, outros são exibidos como UNI
ou PRI
.
Eu sei que se uma chave é PRI
, apenas um registro por tabela pode ser associado a essa chave. Se uma chave for MUL
, isso significa que pode haver mais de um registro associado?
Aqui está a resposta 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
exibido somente nessa coluna e também em todas as outras colunas?Este é um atalho para:
De qualquer forma, existem três valores possíveis para o atributo "Chave":
PRI
UNI
MUL
O significado de
PRI
eUNI
é bastante claro:PRI
=> chave primáriaUNI
=> chave únicaA terceira possibilidade,
MUL
(sobre a qual você perguntou) é basicamente um índice que não é uma chave primária nem uma chave exclusiva. O nome vem de "múltiplo" porque são permitidas várias ocorrências do mesmo valor. Diretamente da documentação do MySQL :Há também uma advertência final:
Como uma observação geral, a documentação do MySQL é bastante boa. Em caso de dúvida, confira!
fonte
MUL
.Passo a passo sobre o que é MUL, PRI e UNI no MySQL?
Na documentação do MySQL 5.7 :
Exemplos ao vivo
Grupo de controle, este exemplo não tem PRI, MUL ou UNI:
Uma tabela com uma coluna e um índice na coluna possui um MUL:
Uma tabela com uma coluna que é uma chave primária possui PRI
Uma tabela com uma coluna que é uma chave exclusiva possui UNI:
Uma tabela com um índice cobrindo foo e barra tem MUL apenas em foo:
Uma tabela com dois índices separados em duas colunas possui MUL para cada uma
Uma tabela com um Índice abrangendo três colunas possui MUL na primeira:
Uma tabela com uma chave estrangeira que referencia a chave primária de outra tabela é MUL
Cole isso no seu neocórtex e ajuste o dial para "frappe".
fonte
Para Mul, essa também foi uma documentação útil para mim - http://grokbase.com/t/mysql/mysql/9987k2ew41/key-field-mul-newbie-question
"MUL significa que a chave permite que várias linhas tenham o mesmo valor. Ou seja, não é uma chave UNIque."
Por exemplo, digamos que você tenha dois modelos, Postagem e Comentário. A postagem tem um relacionamento has_many com Comentário. Faria sentido, então, que a tabela Comment tivesse uma tecla MUL (ID da postagem) porque muitos comentários podem ser atribuídos à mesma postagem.
fonte