0

我有一组描述清单的表格,以及它们的属性(问题)列表。属性可以在清单之间共享,这就是我有 CHECKLIST_TO_ATTRIBUTE 表的原因。当有人启动检查表的实例时,会执行查询以获取当前问题,然后将这些问题插入答案表中。现在我们要显示清单,但按类别对属性进行分组。这是我在此要求之前所拥有的,希望我已经包含了所有相关的列。

CHECKLIST_CLASS
    CL_CLASS_ID
    CL_VERSION

ATTRIBUTE
    ATTRIBUTE_ID
    DESCRIPTION

CHECKLIST_TO_ATTRIBUTE
   CL_CLASS_ID
   ATTRIBUTE_ID

CHECKLIST_INSTANCE
   CL_INSTANCE_ID
   CL_CLASS_ID

ANSWER
   CL_INSTANCE_ID
   ATTRIBUTE_ID
   VALUE

一旦清单被实例化并且我们修改清单(修改它),实例化的清单必须仍然引用原始问题。我显示清单实例的方式是使用 JOIN 到 ATTRIBUTE 表查询 ANSWER 表并遍历结果集。

显然我会添加一个类别表

 ATTRIBUTE_CATEGORY
   AC_ID
   DESCRIPTION   

但是我在哪里添加对这个表的引用?如果我将 AC_ID 添加到 CHECKLIST_TO_ATTRIBUTE 定义表中,那么我认为我有两个选择。

1) 同时修改 ANSWER 表以在构建清单实例时包含 AC_ID。

ANSWER
   CL_INSTANCE_ID
   ATTRIBUTE_ID
   VALUE
  *AC_ID*  

2) 或者单独保留 ANSWER 表,当我查询它进行显示时,执行一些 JOINS 以从 CHECKLIST_TO_ATTRIBUTE 表中获取 AC_ID。我知道 ANSWER.CL_INSTANCE_ID,所以加入 CHECKLIST_INSTANCE 表以获取 CL_CLASS_ID,然后将其与 ANSWER.ATTRIBUTE_ID 一起使用以从 CHECKLIST_TO_ATTRIBUTE 表中获取 AC_ID。

什么是更合理的设计?或者还有其他我没有考虑的选择吗?我不想只将 AC_ID 添加到属性表中,因为这样属性和类别就会耦合。属性可以在清单之间共享,以便最终我们根据指标汇总指标,而不管它是在哪个清单类中找到的。

即有多少尺寸不正确,可能在内阁蓝图审查清单以及内部房间框架布局审查清单上。

4

1 回答 1

0

添加AC_IDCHECKLIST_TO_ATTRIBUTECATEGORY表是合理的设计。添加也不错AC_IDANSWER它会导致更少的连接,尽管它可能会引入一些完整性问题(答案类别和问题类别可能不同),但没有什么是检查无法解决的。

想到的另一种选择是将类别作为清单项目的特殊情况处理,该清单项目可以链接到其他清单项目。如果您的用例需要嵌套类别(不清楚是否这样做),这将特别方便。

CHECKLIST_TO_ATTRIBUTE
  CL_CLASS_ID
  ATTRIBUTE_ID
  CL_TYPE -- (tells if this is a plain checklist or a category)
  PARENT_CL_ID  -- (points to the parent category checklist item, NULL if this is a top level category)
于 2013-05-28T16:16:31.227 回答