Несколько первичных ключей - PullRequest
2 голосов
/ 03 марта 2011

Когда я выполняю «sp_help tableName», я вижу ограничение, в котором говорится «Первичный ключ (кластерный)», и в нем перечисляются три столбца под заголовком «constraint_keys».

Означает ли это, что любое из этих значений столбца однозначно идентифицирует строку, или что значения всех трех столбцов вместе однозначно идентифицируют строку?

Ответы [ 3 ]

6 голосов
/ 03 марта 2011

Это означает, что все три столбца объединяются в единую строку.Любой отдельный столбец может иметь дубликаты, если комбинация является уникальной.

4 голосов
/ 03 марта 2011

Все три вместе являются первичными ключами.

В принципе это похоже на индекс покрытия, который индексирует несколько полей.

2 голосов
/ 03 марта 2011

Это означает, что все три будут однозначно идентифицировать любую конкретную запись.

Например, допустим, у вас есть таблица "orders" со следующими полями:

ЗАКАЗЫ: customerID PK DateTime PK OrderTotal

Поскольку в таблице «Заказы» может быть несколько записей с одним идентификатором клиента, вы не можете использовать его отдельно для уникальной идентификации одного заказа. Также может быть несколько заказов одновременно (от разных клиентов), поэтому поле DateTime нельзя использовать отдельно.

Однако объединение двух полей предоставит вам способ уникальной идентификации отдельной записи.

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