【发布时间】:2019-11-25 12:27:49
【问题描述】:
我有 3 张桌子:
Plane (ID, Name) //Parent
Car(ID, Name) //Parent
Engine(ID, Name) //Child
Engine 表的父表必须是 Plane 或 Car。这些表是一对一的关系。
主要是需要通过引擎获得父母。这里如何正确设置数据库?
我在这里看到了多种情况,但不知道哪个是最好的:
- 将
engine ID放入Plane和Car。我在这里面临的问题是,在我查询之前,我需要知道哪个父引擎属于哪个。 - 有
plane_engine和car_engine表。与上述相同的问题 + 使用单独的表的更多开销,这对于多对多关系来说更需要(这里不是这种情况) - 在引擎表中有一个软键和类型(Parent_ID,类型)。减少了 1 和 2 场景中的问题,但我无法确保 Type 和 Parent_ID 为真并表示它应该表示的内容(例如,Type 是 Car,但 Parent ID 是飞机)。
任何见解都会很棒。谢谢!
【问题讨论】:
-
不确定,场景 #2 有什么问题?无论如何,您需要知道
Car和Plane中的哪一个(或两者)与查询相关。
标签: sql database database-design