Это простая проблема подтипа супертипа, которую вы можете решить на 5NF, для этого вам не нужны EAV или улучшенные EAV или 6NF (полный и окончательный правильный EAV).Поскольку значение ServiceAColumn зависит от конкретной подписки подписчика на услугу, то оно должно быть в ассоциативной таблице.
▶ Нормализованная модель данных ◀ (встроенные ссылки не работают в некоторых браузерах / версиях.)
Читатели, не знакомые с реляционнымСтандарт моделирования может найти ▶ Обозначение IDEF1X ◀ полезно.
Это обычная структура реляционного супертипа-подтипа.Этот является исключительным: Service
является исключительно одним подтипом.
Отношения и подтипы более явные и более контролируемые в этой модели, чем в других ответах.Например.Отношения FK относятся только к подтипу Service
, а не к супертипу Service
.
Дискриминатором, который определяет, каким подтипом является любая строка супертипа, является ServiceType
.ServiceType
не нужно повторять в подтипах, мы знаем, какой это подтип, по таблице подтипов.
Если у вас нет миллионов Services
, короткий кодболее подходящий PK, чем бессмысленное число.
Other
Вы можете потерять столбец Id
в SubscriberService
, поскольку он на 100% избыточен и не имеет смысла.
PK для SubscriberService
равен (SubscriberId, ServiceId)
, если только вы не хотите дублировать строки.
Пожалуйста, измените названия столбцов: Subscriber.Id
на SubscriberId
;Service.Id
до ServiceId
.Никогда не используйте Id
в качестве имени столбца.Для PK и FK всегда используйте полное имя столбца.Актуальность этого станет ясна вам, когда вы начнете кодировать.
Шестая нормальная форма или EAV
Добавление столбцов и таблиц при добавлении новых служб, имеющих новые атрибуты, хорошо, необходимо в реляционной базе данныхи вы сохраняете много контроля и целостности.
Если вы не «хотите» добавлять новые таблицы для каждой новой службы, тогда да, используйте EAV или 6NF, но убедитесь, что у вас есть нормальные элементы управления (безопасность типов) и целостность данных и ссылок, доступные в Relational.базы данных.EAV часто реализуется без надлежащего реляционного контроля и целостности, что приводит ко многим, многим проблемам.Вот вопрос / ответ на эту тему.Если вы согласны с этим, и модели данных в этом вопросе не достаточно объяснительны, дайте мне знать, и я дам вам модель данных, которая соответствует вашим требованиям (DM, который я предоставил выше, является чистым 5NF, потому что этополное требование для вашего исходного вопроса).