Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Existe algum benefício em ter uma chave primária de incremento automático em uma tabela dinâmica do MySQL?


Posts e categorias são provavelmente muitos-para-muitos, não um-para-muitos.

Uma tabela de relacionamento muitos-para-muitos é melhor feita algo como
CREATE TABLE a_b (
a_id ... NOT NULL,
b_id ... NOT NULL,
PRIMARY KEY (a_id, b_id),
INDEX(b_id, a_id) -- include this if you need to go both directions
) ENGINE = InnoDB;

Com isso, você obtém automaticamente pesquisas "agrupadas" em ambas as direções e evita o ID artificial desnecessário para a tabela.

(A propósito, N.B., um PK implícito tem 6 bytes, não 8. Há um longo post de Jeremy Cole sobre o assunto.)

Um relacionamento um-para-muitos não precisa dessa tabela extra. Em vez disso, tenha um id dentro da outra tabela. Por exemplo, uma tabela Cidade terá o id do País nela.