2015-11-09 4 views
0

Насколько я знаю, если вы отмечаете несколько столбцов в качестве Первичных ключей, их кортеж будет фактическим Первичным ключом, тем самым, учитывая 2 основных ключа в таблице, несколько строк у меня есть одна и та же запись для 1 из Первичных ключей если они не имеют 2 совпадений с любой другой строкой. Я прав? И если да, то работают ли уникальные ограничения одинаково? Я чувствую, что было бы полезно иметь структуру, сродни основному ключу, но ее сравнение с ключами других строк OR'd вместо AND'd, поэтому не могло быть совпадений вместо n-1 потенциала совпадений, заданных n Первичных ключей для каждой строки.У основных ключей и уникальных ограничений кортеж таким же образом?

+0

В какой базе данных вы используете несколько первичных ключей? Это не разрешено в postgres. Кроме того, это просто не имеет смысла. :) –

+1

На самом деле, Postgres (который нигде не упоминается в вопросе) не позволяет инструкции 'CREATE TABLE' указывать' PRIMARY KEY' рядом с каждым элементом ключа (в качестве альтернативы ограничению на уровне таблицы) и это, вероятно, то, что ПУ путают. –

+0

@LarryLustig: Вы имеете в виду, что PostgreSQL позволяет что-то вроде этого? 'create table test (первичный ключ int, b int primary key);' –

ответ

0

Ваше описание функционально корректно, но терминология неверна.

Для любого стола есть один и только один PRIMARY KEY. Если вы используете модификатор PRIMARY KEY с более чем одним столбцом, это означает, что каждый столбец становится элементом ключа, а не двумя (или более) PRIMARY KEY.

UNIQUE ограничения работают так же, как первичные ключи, кортеж элементов в ограничении должен быть уникальным среди всех строк.

Однако я не совсем понимаю остальную часть вашего вопроса, и я считаю, что это имеет смысл только в контексте недоразумения в отношении элементов ограничения или UNIQUE, обрабатываемых отдельно.

Если у вас есть составной PRIMARY KEY, и вы хотите убедиться, что каждый отдельный столбец в ключе также уникален, вам потребуется отдельное ограничение UNIQUE на каждом из столбцов, составляющих PRIMARY KEY. Это звучит как чрезвычайно странное требование, которое заставляет меня думать, что вы на самом деле храните кучу разных предметов в одной таблице.

Смежные вопросы