超量表 - 多重继承可能吗?
这个问题有可能是一个简单的答案,这是一个标准的练习,或者没有答案,因为它不能用一个简单的理由来完成,或者只是一个有趣的思考练习。我现在坐在最后一个选项上,但希望第一个......
假设我想在我的数据模型中创建实体的“组”或“类”。一般来说,我会使用这样的超类表:
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
然后使用范围标识插入到目标表中。
作为程序员而不是数据建模者,这让我想到了对象继承。对于直接继承,这很好。可以将公共数据/任务提升到一个级别,可以维护Liskov替换等等。但是在数据模型中是否可以进行多重继承?
我主要是C#开发人员,所以我开始考虑接口。如果我想要公开“已实现”tables2ѭ和/或ITowable
等的表,该怎么可能?以前有人做过这样的事吗?
没有找到相关结果
已邀请:
4 个回复
峨躬坎抬焚
另一种方法是将所有列都保留在单个表中,并使用类型指示符标记每一行。这种方法可能会很快变得混乱,但对于简单的情况,其开销要小得多。 您可以在原始模型中建模继承或接口,只需将另一个外键列添加到“派生”实体之一即可。例如:
蓄荣糖些
邪罗逢确胃
一个大问题。 SQL使用可以缓存的查询计划来生成结果。如果SQL的查询计划是围绕查询'Seven-Up'构建的,并且您正在过滤'Coke',则查询计划无效,并且会动态使用全表扫描。
臂哦