Вы уже определили необходимость в разных таблицах для App
и Addon
, поскольку они подвержены различным ассоциациям.Хорошо!
Я бы предложил реализовать Программное обеспечение как базовую таблицу, потому что вы не можете объявить ссылочную целостность для представления ( отнесено к категории ... на вашем рисунке).Я также заметил несколько других входящих ассоциаций.
Software(
software_id
,type
,name
,price
,entry_date
,description
,primary key(software_id)
)
Я добавил столбец дискриминатора type
, который должен содержать значение, определяющее, является ли этот фрагмент программного обеспечения аддоном или приложением.
Addon(
software_id
,primary key(software_id)
,foreign key(software_id) references software(software_id)
)
App(
software_id
,primary key(software_id)
,foreign key(software_id) references software(software_id)
)
Обратите внимание, что первичные ключи в Addon и App относятся к первичному ключу в программном обеспечении.В некотором смысле вы можете думать о software_id как о «типе данных».Столбец software_id в Addon не просто содержит случайное уникальное число.Значение должно исходить из одного из тех номеров, которые идентифицируют часть программного обеспечения.
Это тот ответ, который вы искали?