我正在爲畢業設計開發文檔管理系統。關係數據庫設計在beginnig處具有未知數量的屬性
在這個項目中,用戶將文檔的元數據添加到關係數據庫中的「文檔」表中。
此外,還有不同類型的文檔,如字母,票據等。因此,它們對於每種文檔類型都有不同的屬性集。 (當然還有一些常見的屬性,如「author」)。
用戶可以用新的屬性集合定義新的文檔類型(或者他們可以使用先前由用戶定義的屬性)。當然,用戶可以在插入幾十個文檔後添加或刪除屬性。
問題是我該如何將這種數據存儲在我的關係數據庫系統中? (Postgres在這種情況下。)
我做了一些研究,發現了一些解決方案,但我無法決定該怎麼做。
我應該有一個基礎文檔表,併爲每個新添加的屬性,我應該創建一個單獨的表(docID,值),然後在用戶請求時加入它們?
或者我應該爲每個文檔類型定義一個新的表格並使用其定義的屬性?然後在用戶請求時將它們合併?
或者我應該創建一個相對較大的表,比如說有200個整數,200個變量,200個日期,200個浮點數等,並且它們將定義映射到每個文檔類型的這些列。
作爲初始需求, 用戶應該能夠以任何方式對文檔進行排序,過濾(搜索)文檔以獲得某種報告。 這些文檔及其屬性將擁有訪問權限,我的意思是,它們將與我的數據庫中的其他表有關係。
我在這裏的主要考慮並不是易於開發。性能和功能要求是最重要的。 因爲在我的演示中,我應該有一個至少有100萬個文檔已經插入的數據庫。
如果需要,我可以提供更多信息。
謝謝。
也看到這個問題。 http://stackoverflow.com/questions/1309616/store-objects-in-database – 2010-11-05 02:50:46
還閱讀關於此:http://en.wikipedia.org/wiki/Entity-attribute-value_model – 2010-11-05 02:51:40
而又一個參考來支持這個回答:http://www.learn.geekinterview.com/it/data-modeling/entity-attribute-value-eav-.html – 2010-11-05 02:52:38