2011-09-07 70 views
2

我在一個文檔系統上工作,並得到了一些邏輯/架構問題。在這個系統中會有很多類型的文件 - 傳入,傳出等。每種文件類型都有自己的必須填充的列數。在紙張都是容易的,但在軟件 - 我需要一些建議:)抽象表設計問題

例如:

incoming document type 1 have 16 cols, 
outgoing document type 1 have 15cols, 
inner document have 9 cols, 
etc... 

起初,我以爲,我會做一個表,命名爲「分類」會在哪裏存儲(在樹中)文檔類型(傳入,傳出等)和一個具有最大可能行數(例如25)的通用表格「文檔」,其中將存儲所有文檔,並且如果沒有使用某個單元格,則忽略它。

我認爲我可以使一個簡單的 - 對於每種類型的文檔 - 自己的表格,但經過一些思考似乎是最糟糕的解決方案。

所以我想要最好的解決方案。

也許你可以幫我嗎?

謝謝!

回答

4

這是表繼承的典型示例。你可以這樣做:

Document 
---------- 
DocumentId (PK) 
DocumentType 
... any columns common to the different formats 

DocumentIncoming 
---------- 
DocumentId (PK, FK to Document) 
... columns specific to Incoming 

DocumentOutgoing 
---------- 
DocumentId (PK, FK to Document) 
... columns specific to Outgoing 
+0

我正在思考同樣的事情。我仍然想知道的一件事是避免完整性問題。例如,如何以DocumentTable中的文檔處於DocumentIncoming或DocumentOutgoing中而不是兩者都執行它? – Dave

+2

@Dave:不幸的是,單獨使用RI約束是不可能的(真正的1:1關係不可能使用RI約束來執行,除非在非標準情況下,如延遲約束)。 –

1

使用一箇中央的「文檔」表,其中包含一個類別代碼和只適用於每個類別的列。

然後,對於每個類別,使用一個鏈接迴文檔中相應記錄的表格並「添加」適合該類別的附加列。