从超类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)

从超类ID中查找子类ID

你在A)中提出的内容实际上是在ER建模中称为"鉴别器"的内容,对我来说这似乎是一个更清晰的解决方案。

我强烈建议您重新考虑在这里使用完整的表名。尝试使用整数来节省空间(和性能)(并清楚地记录哪个整数值"映射"到哪个子表)。