2015-04-15 3 views
0

Я решил установить комбинацию из трех значений в качестве первичного ключа (составного ключа) для моей таблицы базы данных. Большинство раз, когда первые два столбца будут уникальными. Но в некоторых случаях они оба то же самое, когда значение третьей колонки всегда будет уникальным для этой строки. Проблема в том, что третий столбец - это описание, которое представляет собой любую строку, которую пользователь может ввести. Я знаю, что не рекомендуется указывать пользователю строку в качестве первичный ключ. Но это нормально, если оно будет частью составного ключа. Я действительно не вижу другого выбора.Поиск правильного первичного ключа

+2

Я предполагаю, что невозможно добавить новый столбец, который мог бы служить суррогатным первичным ключом? – morsor

+0

Если нет - возможно, используя временную метку, поскольку третий компонент лучше, чем использование описания – morsor

+0

oh..timestamp может быть хорошим. Я попробую и возвращусь .. спасибо –

ответ

1

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

Композитные первичные ключи очень часто оказываются менее «стабильными», чем ожидалось, но если вы ДОЛЖНЫ использовать их, предпочтительнее использовать один или несколько столбцов компонента, по которым пользователь имеет небольшой или никакой контроль (например, created_timestamp).

+0

, чтобы добавить к ответу morsor: если вам нужна уникальность первичного ключа, вы можете создать дополнительные индексы как «уникальные», –

0

Добавить отдельный столбец под названием id и сделать его auto increment и использовать этот столбец как primary key.

Надеюсь, что это решит вашу проблему.

Cheers.