У меня есть стол Person
, каждый Person
может посетить несколько стран. Страны, посещаемые каждой Person
хранится в таблице CountryVisit
Является ли это хорошей практикой проектирования баз данных?
Person:
PersonId,
Name
РегионК:
CountryVisitId (primary key)
PersonId (foreign key to 'Person.PersonId')
CountryName
VisitDate
Для CountryVisit
таблицы, мой первичный ключ CountryVisitId
который является identity
колонка. Эта конструкция приведет к тому, что Person
может иметь только 1 CountryVisit
, но CountryVisitId
может быть 40, например. Лучше ли вы создать другой столбец с суррогатным ключом, чтобы действовать как столбец идентификации, а CountryVisitId
- естественный ключ, который уникален для каждого PersonId
?
Почему бы не иметь 'person',' country' как независимые таблицы и таблицу сопоставлений 'CountryVisit'? Таким образом, вы гарантируете, что страны не имеют вариантов написания. – davek
Да, это в моем оригинальном дизайне, я просто сделал более простой дизайн, чтобы уточнить мой вопрос. – user3340627
Что вы хотите сохранить, если пользователь несколько раз посещает ту же страну? IE: это отношение 1-n или n-n? –