原始文件(请参见下面的更新问题)
我正在设计一个新的实验室数据库,该数据库可以对多种样品类型进行多种测试。
以下列表是我目前最能模拟实验室工作的主要实体列表的候选人。
对于每个实体,从该实体到下面的实体存在一对多关系。换句话说,每个实体(REQ除外)至少具有 实体 id和 _父 _id的列。
主要实体: REQ:要求(表格) SAM:样品(材料) TST:测试(要求的程序) SUB: **子测试(标准测试的一部分) TRI: **试用(单个实例:通常用于均值,范围和标准差) MEA:测量(测得的数量) **并非所有测试有子测试,并非所有测试都有试验。
REQ:
SAM:
TST:
SUB:
**
TRI:
MEA:
子测试是一组测试,这些测试按单个名称分组在一起,以便于参考。例如,特定产品的批量验收测试(LAT)定义为以下测试:粘度,氮气百分比,pH和密度。
试用是为确保产品质量而多次执行的单个实验。例如,可能要射击五十发子弹,每次射击都是一次试验。可能需要将每个子弹的精度都落在某个范围内,并且可能需要将所有五十个子弹的平均精度都在一个较窄的范围内。
问题: 当不需要子测试和/或试验时,我应该如何为案例建模?
选项1: 如果不需要,请使用“空白”子测试(或试用版)。
选项2:将 子测试和试验视为测试(并且将test_id作为父项),以便度量始终将测试作为父项。
选项3: 可选的家长进行测量(试验,子测试或测试)和试验(子测试或测试)。
选项x: 任何其他值得考虑的选项。
仅供参考: 如果需要回答问题,我将使用Oracle。
更新的问题 通常,我的架构是实体的层次结构,其中每个实体(顶部除外)必须具有一个父级,并且(底部除外)必须至少具有一个子级。处理在某些情况下不需要内部实体的情况的最佳方法是什么,或者使用特定选项的收益/缺点是什么?
选项1(虚拟): 使用“虚拟”条目表示实体在这种情况下不适用。
选项2(汇总): 将可选实体 汇总 到下一个较高的父实体。
选项3(亲子选择): 可选实体(B)下的实体(C)与必需实体(A)必须有一个父实体,但父实体可以是可选实体(B)或下一个较高的实体(A) 。
解决您的简化问题:
给定您所描述的层次结构,如果我发现层次结构中的某些级别是可选的,那么我会质疑层次结构是否真的很好地映射到了我的域。我会考虑以其他方式绘制关系,或者重新定义架构中的实体。
我认为在这样的较短空间内不可能对一般问题做出更详细的回答,因为找出一个域的最佳表示形式是a)困难的,b)特定于特定域的。