2016-08-18 151 views
1

我目前正在創建一個文檔管理系統,用戶應該能夠配置受支持的文檔類型及其文檔屬性。爲模板我現在的概念性ERD看起來是這樣的: ERD for dynamic attributes模型的動態屬性

,但如果我想商店我的文檔這種方式,我將創建2個屬性在我的數據庫3項每個文檔(1文件,併爲每個屬性另一個條目)。在我看來,我會做到這一點的方式如下: ERD to store document data

在我看來,這看起來不是很冷靜。有沒有解決這個問題的另一種方法?

回答

2

屬性是否爲固定集?

在這種情況下,鞋幫(m:n)看起來更好,但我認爲在映射表中不需要attribute name而是實際的value。通過一些列可以增強映射表,以識別更多的數據,比如誰,何時,爲什麼以及如果需要的話 - 允許進行軟刪除。

第二個是1:n,並且會一遍又一遍地定義相同的屬性名稱。

想想metainstance:這是元數據,你的屬性是如何命名的。你可以定義一個複雜的元模型,哪個屬性適合哪個上下文。您可能會引入多語言支持。只有值(和描述映射本身的附加數據)是實例數據。

+0

是的,對不起,屬性名稱是默認的視覺,我忘了它刪除;) 我的想法是有上部ERD作爲配置如何軟件定義模板的幾種類型的文件。因此,只有一個DocumentType「Bill」和一個「Letter」及其屬性。 底部的ERD將代表從文檔保存到數據庫中的元數據。 – BinaryFr3ak

+0

@ BinaryFr3ak,別介意......你允許在運行時添加新的屬性嗎?這將是唯一棘手的部分,因爲您必須在保存映射行之前插入新屬性**。在這種情況下,您可能會想到'INSTEAD TRIGGER' ... – Shnugo

+0

不,我不想要這個功能,因爲沒有這個功能就更容易。它只是我自己的一個小項目:-) – BinaryFr3ak