2016-08-18 141 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