Число или символ для столбца первичного ключа - PullRequest
0 голосов
/ 10 декабря 2011

Я создаю базу данных очень важного государственного учреждения. До сих пор для столбцов с первичным ключом я иногда использовал числа, особенно int32 или int64, а иногда я использовал char, но все же я сохранял только числовые символы. Поскольку это очень важная задача, я должен сделать ее эффективной и комфортной. Теперь я хочу знать, будет ли какая-либо разница в использовании числа или символа для столбца PK, учитывая, что значения в столбце char по-прежнему будут числовыми символами.

P.S. Вы можете задаться вопросом, какой смысл использовать char, если я все равно буду хранить числовые символы. Причина в том, что столбец PK состоит из множества частей, таких как 3 символа для страны, 3 символа для провинции, 3 символа для города и 6 символов для человека. Кроме того, я могу выполнять строковые операции с этими столбцами, не беспокоясь о явном преобразовании (я знаю, что в Oracle есть неявное преобразование, но не рекомендуется полагаться на него).

Ответы [ 2 ]

6 голосов
/ 10 декабря 2011

Ни как таковой.Ваш первичный ключ должен быть суррогатным.Int или big int, Guid, если масштабирование будет проблемой.Тогда у вас должна быть страна, провинция, город и человек в качестве уникального составного ключа.«Умный» номер вещь редко бывает хорошей идеей.

2 голосов
/ 10 декабря 2011

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

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

...