Тип данных первичного ключа для таблицы с одним столбцом

Я работаю над моделью базы данных и имею несколько таблиц (назовем их T-таблицей), в которых всегда будет очень ограниченное количество (‹ 100) записей. И эти T-таблицы будут иметь только один столбец varchar(100). И эти Т-таблицы не будут часто меняться, возможно, раз в неделю. Пример таких таблиц:

  • Названия отделов в компании

Теперь я запутался между: наличием одного столбца (например, отделы (varchar и первичный ключ)) типа varchar table и той же таблицы с двумя идентификаторами столбцов ( целое число и первичный ключ) и отдел(varchar).

Может ли кто-нибудь объяснить, какой из них имеет больше смысла в моем сценарии?

Спасибо заранее.


person Sushil Jain    schedule 16.05.2020    source источник


Ответы (2)


Большинство разработчиков называют эти таблицы таблицами поиска.

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

Если вы используете таблицу с одним столбцом и varchar в качестве первичного ключа, а название отдела изменяется, как вы будете обновлять строки в других таблицах, которые на него ссылаются? Вам нужно обновить только одну строку в таблице Departments, но вам может потребоваться обновить сотни строк, которые ссылаются на этот отдел в таблице Employees или таблице Budgets, или тысячи строк в таблице Reports, или миллионы строк в таблице Sales. .

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

person Bill Karwin    schedule 16.05.2020

Всегда используйте порядковый или порядковый номер для ПК, дело в том, что они бессмысленны, раз они бессмысленны, нет необходимости его менять (в конце концов, какой смысл менять одну бессмысленную вещь на другую бессмысленную?), тогда мы можем добиться стабильности.

person http8086    schedule 20.05.2020