从超类ID中查找子类ID
本文关键字:ID 子类 查找 超类 | 更新日期: 2023-09-27 18:05:50
我有一个分层数据库结构,有一个基表和几个子表:
Base: {ID, Date, ...}
ChildA: {ID, Color, ...}
ChildB: {ID, Age, ...}
每个子表有一个ID,该ID是Base.ID的外键;因此,每个子节点都链接到一个ID,该ID也在Base中。
我现在有一种情况,我有一个id列表,我想找出它们实际上属于哪个子表。确定给定ID的子表的最佳方法是什么?
我想有一个函数,从ID返回一个类型:Type TypeFromBaseID(int baseID)
我能想到两种方法,但我希望有更好的方法:
A)只需向Base添加一列,该列存储其子表 的表名B)有一系列的if语句,做一些像db.ChildA.Any(x=>x.ID == baseID)
你在A)中提出的内容实际上是在ER建模中称为"鉴别器"的内容,对我来说这似乎是一个更清晰的解决方案。
我强烈建议您重新考虑在这里使用完整的表名。尝试使用整数来节省空间(和性能)(并清楚地记录哪个整数值"映射"到哪个子表)。