Использование национального идентификатора в качестве первичного ключа - PullRequest
2 голосов
/ 22 декабря 2011

Я разрабатываю систему, которая использует национальный ID как одну из «идентифицирующих записей». Является ли хорошей идеей встроить nat_id во все таблицы, чтобы сделать запрос проще?Каковы недостатки этого?Я просто хочу узнать мнение людей здесь, в СО, потому что я могу упустить что-то важное.

Ответы [ 2 ]

8 голосов
/ 22 декабря 2011

Как предполагает @Oded, могут быть юридические последствия и последствия для конфиденциальности (которые очень сильно зависят от вашей страны).

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

Кроме того, есть несколько чисто технических проблем:

  1. Не в каждой стране есть национальная система идентификации, а в тех, которые ее используют, используются разные форматы.Вы действительно хотите изменить каждую таблицу в своей схеме, когда вам нужно приспособить новый формат?
  2. Я могу представить себе ситуации, когда у человека может не быть национального удостоверения личности (посетителя? Лица, ищущего убежища? A)лицо без гражданства?) Как вы собираетесь вводить их в базу данных?
  3. В некоторых странах самым близким к национальному идентификатору является номер на идентификационной карточке, и этот номер изменяется при повторном получении идентификационной карточки.выпущен.Другими словами, один и тот же человек может иметь разные идентификационные номера в разные моменты своей жизни.

Я бы использовал суррогатный первичный ключ и сохранял бы национальный идентификатор в качестве атрибута.

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

Будет ли национальный идентификатор хорошим ключом или нет, во многом зависит от ваших требований.Требуется ли регистрировать национальное удостоверение личности как часть бизнес-процесса и чтобы таким образом уникально идентифицировались пользователи / сотрудники / кто бы то ни было?Имеете ли вы юридическое право запрашивать эту информацию у людей?Обязаны ли они раскрывать вам свои национальные удостоверения личности?Если да ко всем этим, то, вероятно, имеет смысл сделать это ключом в базе данных.

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

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

...