2013-05-28 23 views
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 

但是,在我的refence添加到這個表?如果我將AC_ID添加到CHECKLIST_TO_ATTRIBUTE定義表中,那麼我認爲我在這裏有兩個選項。

1)修改清單實例時,修改ANSWER表以包含AC_ID。

ANSWER 
    CL_INSTANCE_ID 
    ATTRIBUTE_ID 
    VALUE 
    *AC_ID* 

2)或者不管回答表,當我查詢它顯示,做一些連接來獲得從CHECKLIST_TO_ATTRIBUTE表AC_ID。我知道ANSWER.CL_INSTANCE_ID,因此加入CHECKLIST_INSTANCE表以獲取CL_CLASS_ID,然後將其與ANSWER.ATTRIBUTE_ID一起用於從CHECKLIST_TO_ATTRIBUTE表中獲取AC_ID。

什麼是更健全的設計?或者我還沒有考慮其他選擇嗎?我不想只將AC_ID添加到屬性表中,因爲屬性和類別是耦合的。屬性可以在清單之間共享,以便最終我們根據指標彙總度量標準,而不管它在哪個檢查清單類上找到。

即多少尺寸不正確,可能在櫥櫃藍圖審查清單以及內部房間框架佈局審查清單。

回答

0

添加AC_IDCHECKLIST_TO_ATTRIBUTE和一個新的CATEGORY表是聲音設計。在ANSWER中添加AC_ID也不錯,它會導致更少的連接,儘管它可能引入一些完整性問題(答案類別和問題類別可能不同),但沒有任何檢查無法解決。

想到的另一種方法是將該類別作爲清單項目的特例來處理,該清單項目可鏈接至其他清單項目。如果你的用例需要嵌套類別(這是不明確的),這是特別方便的。

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) 
+0

完整性問題是什麼讓我想到的只是做連接。但是我想我寧願抓住機會,讓查詢更容易。 – jeff

相關問題