Использование национального идентификатора в качестве первичного ключа

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

2 ответа

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

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

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

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

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

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

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

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

Другие вопросы по тегам