我有一个带有基表的分层数据库结构,然后有几个子表:
Base: {ID, Date, ...}
ChildA: {ID, Color, ...}
ChildB: {ID, Age, ...}
每个子表都有一个ID,它是Base.ID的外键;所以每个孩子都链接到同样位于Base的ID。
我现在有一种情况,我有一个ID列表,我想弄清楚它们实际属于哪些子表。 确定给定ID的子表的最佳方法是什么?
我想要一个从ID中返回Type的函数:Type TypeFromBaseID(int baseID)
我可以想到两种方法,但我希望有更好的方法:
A)只需在Base中添加一个列,用于存储子表的表名
B)有一系列像db.ChildA.Any(x=>x.ID == baseID)
答案 0 :(得分:1)
你在A)中提出的实际上是ER建模中已知的“鉴别器”,这对我来说似乎是一个更清洁的解决方案。
我想请你重新考虑在这里使用全表名称。尝试使用整数保存一些空间(和性能)(并清楚地记录哪个整数值“映射”到哪个子表)。