2010-08-22 15 views
1

Je me demandais si ma clé primaire ressemble à ceci PRIMARY KEY (id, category_id, posts_id) ou ressemble à ceci PRIMARY KEY (id)?MySQL table PRIMARY KEY question?

Voici ma table MySQL.

CREATE TABLE posts_categories (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
category_id INT UNSIGNED NOT NULL, 
posts_id INT UNSIGNED NOT NULL, 
date_created DATETIME NOT NULL, 
PRIMARY KEY (id, category_id, posts_id), 
UNIQUE KEY (category_id, posts_id) 
); 

Répondre

0

La clé multiple colonne est appelée une Composite Key ou un Compound Key

Comme indiqué qu'ils sont tout à fait valables et des avantages. Voir les liens. :-)

2

Je recommande d'utiliser:

PRIMARY KEY (category_id, posts_id) 

La valeur id sera toujours unique - ce qui ne sera pas, est l'épluchage de category_id et posts_id.

Mais j'ai manqué que vous avez déjà une clé unique définie sur les colonnes category_id et posts_id, donc vous êtes la clé primaire pourrait être le id. Mais la clé primaire signifie qu'il s'agira d'un index clusterisé - vous rechercheriez ces deux colonnes plus que la colonne id, de sorte que les recherches devraient s'améliorer minutieusement sur un index non clusterisé sur les deux colonnes.

+0

pourquoi est-ce le meilleur pari? – maximus

+0

la 'clé UNIQUE (category_id, posts_id)' est là pour arrêter les entrées en double. – maximus

+0

@maximus: Dans votre question, c'est redondant. Voir ma mise à jour –