Является ли ограничение внешнего ключа для таблицы, созданной просто для разрешения многозначного атрибута, хорошим дизайном? - PullRequest
0 голосов
/ 24 апреля 2019

В моей модели ER у меня есть тип сущности 'City', который имеет многозначный атрибут ZIPCode.Пока все хорошо.

Теперь, когда я перевожу свою модель ER в реляционную схему, я создаю дополнительную таблицу для разрешения многозначного атрибута ZIPCode.Что-то вроде CityZIP(CityID, ZIPCode) с составным первичным ключом: CityID, ZIPCode

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

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

1 Ответ

1 голос
/ 25 апреля 2019

Да, это «разрешено». Это вполне разумный дизайн, по крайней мере, если почтовые индексы могут охватывать города (то есть функциональная зависимость {ZIPCode} -> {CityID} не сохраняется).

То, что таблица не соответствует напрямую сущности в модели ER, не означает, что вы не можете ссылаться на нее с помощью внешних ключей в реляционной модели. В этом отношении модели независимы, и между ними нет единого «правильного» отображения.

...