Составной вопрос первичного ключа в MySQL - PullRequest
0 голосов
/ 08 августа 2009

Я новичок в базах данных. Я использую MySQL, и у меня есть таблица A, использующая три атрибута для формирования составного первичного ключа:

A: [ key1 , key2 , key3 ], dateCreated, создалBy, ...

Теперь у меня есть другая таблица B, которая должна ссылаться на записи из таблицы выше. Теперь, повторное использование всех трех атрибутов выше, чтобы сформировать ключ, похоже, является болью. Можно ли использовать дополнительный автоматически увеличивающийся фиктивный атрибут "id" для таблицы A в качестве первичного ключа и использовать его в качестве ссылки в таблице B? Как правильно поступить?

Ответы [ 2 ]

1 голос
/ 08 августа 2009

Было бы лучше наложить уникальное ограничение на набор (key1, key2, key3) и сделать единственный "фиктивный" id вашим первичным ключом, так как он будет использоваться в качестве ссылки для других таблиц.

Если вы хотите ускорить поиск, вы можете добавить в индекс дополнительные индексы (key1, key2, key3).

1 голос
/ 08 августа 2009

Это, безусловно, так. Он называется суррогатным ключом : суррогатный ключ не является производным от данных приложения.

[Существует дискуссия об использовании суррогатных ключей. Статья в вики, связанная со списком достоинств / недостатков.]

Как указывает @Scharrels, к вашим 3 полям следует применить уникальное ограничение, если вы используете суррогатный ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...