2010-11-05 74 views
0

我正在爲畢業設計開發文檔管理系統。關係數據庫設計在beginnig處具有未知數量的屬性

在這個項目中,用戶將文檔的元數據添加到關係數據庫中的「文檔」表中。

此外,還有不同類型的文檔,如字母,票據等。因此,它們對於每種文檔類型都有不同的屬性集。 (當然還有一些常見的屬性,如「author」)。

用戶可以用新的屬性集合定義新的文檔類型(或者他們可以使用先前由用戶定義的屬性)。當然,用戶可以在插入幾十個文檔後添加或刪除屬性。

問題是我該如何將這種數據存儲在我的關係數據庫系統中? (Postgres在這種情況下。)

我做了一些研究,發現了一些解決方案,但我無法決定該怎麼做。

我應該有一個基礎文檔表,併爲每個新添加的屬性,我應該創建一個單獨的表(docID,值),然後在用戶請求時加入它們?

或者我應該爲每個文檔類型定義一個新的表格並使用其定義的屬性?然後在用戶請求時將它們合併?

或者我應該創建一個相對較大的表,比如說有200個整數,200個變量,200個日期,200個浮點數等,並且它們將定義映射到每個文檔類型的這些列。

作爲初始需求, 用戶應該能夠以任何方式對文檔進行排序,過濾(搜索)文檔以獲得某種報告。 這些文檔及其屬性將擁有訪問權限,我的意思是,它們將與我的數據庫中的其他表有關係。

我在這裏的主要考慮並不是易於開發。性能和功能要求是最重要的。 因爲在我的演示中,我應該有一個至少有100萬個文檔已經插入的數據庫。

如果需要,我可以提供更多信息。

謝謝。

回答

1

一個表格存儲文檔。

一個表存儲元數據(document_id,key,value)。

一個連接爲您提供文檔及其所有元數據。

+0

也看到這個問題。 http://stackoverflow.com/questions/1309616/store-objects-in-database – 2010-11-05 02:50:46

+0

還閱讀關於此:http://en.wikipedia.org/wiki/Entity-attribute-value_model – 2010-11-05 02:51:40

+0

而又一個參考來支持這個回答:http://www.learn.geekinterview.com/it/data-modeling/entity-attribute-value-eav-.html – 2010-11-05 02:52:38