Имеет ли значение порядок в составных первичных ключах базы данных? - PullRequest
0 голосов
/ 23 января 2020

Недавно я задал следующий вопрос: важен ли порядок в первичных ключах базы данных?

, т.е. если у меня есть отношение R (a, b, c, d, e), и я беру ( a, b) в качестве составного первичного ключа (b, a) рассматривает один и тот же первичный ключ или нет?

Как продолжение: Если R (a, b, c, d, e) является отношением и (a, b, c) является первичным ключом, считаются (a, b, c, d, e) и (a, b, c, e, d) одинаковые или разные суперключи?

Ответы [ 2 ]

1 голос
/ 24 января 2020

Это зависит от вашей цели. Если вам нужно только обеспечить уникальность, порядок не имеет значения, поэтому ключ (a, b) будет иметь тот же эффект, что и (b, a).

Вы не получите те же результаты, если хотите использовать индексы, на которых будет построен ключ, поскольку (a, b) позволит вам сортировать по a как по возрастанию, так и по убыванию, и только после этого на b по возрастанию, а если вы хотите отсортировать на b, вы вообще не сможете использовать индекс.

0 голосов
/ 24 января 2020

Ключи в реляционной алгебре и в реляционных базах данных представляют собой наборы атрибутов / столбцов. Набор не имеет собственного порядка.

При этом ключ (a,b) совпадает с ключом (b,a), поскольку они содержат одинаковые элементы.

Что касается суперключей: Да, это просто комбинаторика. Поскольку первичный ключ - это минимальный суперключ, вы можете добавить любой атрибут или набор атрибутов, чтобы получить другой суперключ: (a,b,c), (a,b,d), (a,b,c,d).

Что касается баз данных: уникальные ключи важны идентифицировать строку в таблице. Следовательно, почти всегда таблица будет иметь уникальный первичный ключ. Иногда вы решаете дать таблице другой, вторичный, уникальный ключ. Это особенно актуально, когда вы добавляете технические ключи.

Пример: страна может быть однозначно идентифицирована по ее названию, но она также уникально идентифицируется по коду ISO, и вы все равно можете захотеть работать с технический номер c ID, выданный вашей СУБД. Вы бы сделали все эти уникальные ключи, и, поскольку все они являются минимальными суперключами, вы просто решили, что один из них является первичным.

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

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