Вам нужно взглянуть на свои структуры данных.
Первичный ключ должен :
- никогда быть NULL ( без исключений )
- надежно и уникально идентифицирует каждую отдельную строку
, и это помогает, если
- маленький и простой в использовании
- стабильный (не меняется вообще или, по крайней мере, не часто)
- один столбец (или максимум два)
Проверьте свои данные - какие столбцы или набор столбцов могут удовлетворить эти требования ??
Когда у вас есть эти потенциальные первичные ключи («ключи-кандидаты») - подумайте, как вы получите доступ к данным и какие другиеданные, возможно, должны быть связаны с этой единственной рассматриваемой сущностью - что будет иметь смысл в качестве внешнего ключа?Вы хотите сослаться на свой отдел по имени?Вероятно, это не очень хорошая идея, поскольку название может быть написано с ошибкой, оно может со временем меняться и т. Д. По расположению офиса департамента?Плохой выбор тоже.Но что-то вроде уникального «идентификатора отдела» может быть хорошей идеей.
Если в ваших фактических данных нет подходящих столбцов, которые могли бы служить первичным ключом и имели бы смысл, этоОбычная практика - вводить «суррогатный ключ» - дополнительный столбец, часто INT
(и часто что-то вроде «автоинкремента» INT), который будет служить искусственным идентификатором для каждой строки.Если вы сделаете это, одна из лучших рекомендаций - никогда не показывать этот искусственный ключ на любом экране данных - он не имеет никакого значения для пользователей вашей системы - поэтому даже не показывайте его им.
ПроверкаЭти требования и большой опыт помогут вам найти правильный первичный ключ.