Вполне возможно, что этот вопрос либо имеет простой ответ, который является стандартной практикой, либо не имеет ответа, потому что это не может быть сделано по простой причине, или в противном случае это просто интересное упражнение на размышление.Сейчас я сижу на последнем варианте, но надеюсь на первый ...
Допустим, я хочу создать "группу" или "класс" сущностей в моей модели данных.Как правило, я бы использовал таблицу супертипа, например, такую:
DrivableEntity
----------
ID (PK, auto-increment)
Type (int or otherwise some kind of enum)
Car
----------
ID (PK, FK to DrivableEntity)
(car-specific fields)
Bike
----------
ID (PK, FK to DrivableEntity)
(bike-specific fields)
Тогда мои вставки, вероятно, прошли бы то, что внешне выглядит как обычная процедура CRUD для каждой вложенной таблицы, но внутри вставили в DrivableEntity
, а затемиспользует идентификатор области видимости для вставки в намеченную таблицу.
Будучи скорее программистом, чем разработчиком моделей данных, это заставило меня задуматься о наследовании объектов.Для прямого наследования это здорово.Общие данные / задачи могут быть абстрагированы на более высоком уровне, можно сохранить подстановку Лискова и т. Д. Но возможно ли множественное наследование в модели данных?
Я в первую очередь разработчик на C #, поэтому я начал думать в терминахинтерфейсов.Что если бы я хотел выставить таблицы, которые «реализовали» IDrivable
и / или ITowable
и т. Д. Возможно ли что-то подобное?Кто-нибудь делал что-нибудь подобное раньше?