Я подозреваю, что @zerkms будет не единственным, кто не понимает, что не так с этой моделью данных, поэтому стоит изучить ее недостатки.
1.Он не имеет реляционной целостности
Первичный ключ описаний предположительно (ObjectCode, ObjectType).Это не сопоставляется ни с одним родительским ключом, поэтому нет способа применить правило, согласно которому описание должно принадлежать какому-либо объекту.Даже если ObjectCode уникален для всех таблиц (скажем, это сгенерированный UUID), так что первичным ключом описаний может быть (ObjectCode), мы все равно не сможем применить ограничение внешнего ключа, поскольку один дочерний ключ не может ссылаться на несколько родительских ключей.
И наоборот, мы также не можем применять правило, согласно которому Страна должна иметь Описание, потому что внешние ключи не работают таким образом.
@ Предложение EoinCampbell о переводе модели в шестую нормальную форму - Страны CountryDescriptionРегионы RegionDescription и т. Д. - по крайней мере обладает достоинством поддержки целостности данных.
2.Производительность пострадает
Каждый запрос для получения одного набора данных теперь является объединением.Присоединение не является автоматически плохой вещью - это то, для чего предназначены продукты СУБД, - но теперь у нас есть небольшая таблица Страны, объединяющиеся в намного большую таблицу.Следовательно, запрос для извлечения всех стран и их описаний будет намного менее эффективным, потому что он должен будет завершить все описания других типов.
Опять же, 6NF имеет преимущество, поскольку оно будет масштабироваться лучше, чем опубликованная реализация.
3.Слишком много таблиц
Новое требование: нам нужно держать ABBREVIATION для всех этих объектов.Это не атрибут Description, поэтому мы не можем сохранить его в этой таблице.Но мы не можем поставить столбец «Население» в поле «Страны, регионы и т. Д.», Поскольку было бы несовместимым .Итак, нам нужна еще одна таблица сокращений.Да, и пользователи хотели бы также провести НАСЕЛЕНИЕ.И ОБЛАСТЬ, если не возражаешь.Прежде чем вы это знаете, select * from countries
стал объединением в пять столов.
Вот где 6NF ломается.Количество необходимых таблиц быстро метастазирует в схему ошеломляющих пропорций.
Вот почему самые разумные люди останавливаются в BCNF, или, по крайней мере, в 3NF.