2011-09-07 85 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

使用一个中央的“文档”表,其中包含一个类别代码和只适用于每个类别的列。

然后,对于每个类别,使用一个链接回文档中相应记录的表格并“添加”适合该类别的附加列。