MySQL таблица ПЕРВИЧНЫЙ КЛЮЧ вопрос? - PullRequest
1 голос
/ 23 августа 2010

Мне было интересно, должен ли мой первичный ключ выглядеть так PRIMARY KEY (id, category_id, posts_id) или выглядеть PRIMARY KEY (id)?

Вот моя таблица 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)
);

Ответы [ 2 ]

2 голосов
/ 23 августа 2010

Я рекомендую использовать:

PRIMARY KEY (category_id, posts_id)

Значение id всегда будет уникальным - что не будет, то будет совпадение category_id и posts_id.

Но я упустил, что у вас уже есть уникальный ключ, определенный в столбцах category_id и posts_id, поэтому ваш первичный ключ может быть просто id. Но первичный ключ означает, что это будет кластеризованный индекс - вы будете искать эти два столбца больше, чем столбец id, поэтому результаты поиска должны значительно улучшиться по сравнению с некластеризованным индексом по двум столбцам.

0 голосов
/ 23 августа 2010

Ключ с несколькими столбцами называется Составной ключ или Составной ключ

Как указано, ониполностью действительны и имеют преимущества.Смотрите ссылки.: -)

...