Композитный ключ или новый уникальный ключ - PullRequest
1 голос
/ 04 февраля 2010

Я хочу знать, какой из них будет лучшим. У меня есть таблица, скажем, A, имеющая col1 (это внешний ключ fk1), col2 (также является внешним ключом fkk2). Могу ли я использовать PK как (col1, col2) или только что созданный PK. Запросы будут иметь fk1 в критериях и fk2 в объединениях. Пожалуйста, предложите мне лучший.

P.S Я использую MySQL

Ответы [ 2 ]

2 голосов
/ 04 февраля 2010

Если это таблица ссылок «многие ко многим», просто используйте (col1, col2) как PK.

Внешние ключи в MySQL подразумевают InnoDB, который организован по индексу, это означает, что сама таблица будет PRIMARY KEY, и ее записи будут упорядочены.

Если вы также собираетесь искать col2 и использовать col1 в объединениях, вам нужно будет создать дополнительный вторичный индекс для (col2). Этот индекс будет неявно включать значения PRIMARY KEY в качестве указателей записи, и, следовательно, фактически будет и индексом (col2, col1, col2).

0 голосов
/ 04 февраля 2010

Как уже говорили другие - если это таблица ссылок, используйте col1, col2 в качестве PK. Если, с другой стороны, эта таблица также может быть связана с TO, то создайте новый собственный ключ. Вы также можете наложить уникальное ограничение на пару col1, col2.

...