关系数据库设计实体之间的动态关系

时间:2019-03-15 13:41:43

标签: mysql dynamic tree relational

在设计数据库时,我经常遇到以下问题:

通常有一个相互关联的实体树,并且这种关系可以(并且确实可以)随时间而变化……然后,在我看来,我有一个设计来尝试解决这一点,并且这种变化就像这些不会修改初始数据库设计。

这是:

我没有像每个实体那样有一个表格并在它们之间建立联系,而是像这样:

[Feature] <-> [Type] <-> [Element] <-> [Value]
                ^                         ^
                |_________________________|

“ []”之间的所有内容都是关系数据库中的表。

通过这种方式,我可以将Element(主键:int id)与数据库的其余部分(动作,时间,动作属性,用户等)相关联。

元素(传统设计中某些实体的行,其次是TD)是一种类型(TD中的实体),并且具有某些属性(TD中的实体属性),并具有具体值(TD中的属性值)。

例如,通过这种方式,我可以将任何“实体”与系统其余部分的同一表相关联,例如“输入”,我通常在其中设置操作的user_id,时间和日期。

一个问题是我失去了主键和每个实体的相关性的好处,但是,在值表中设置索引时,对于数据库上的数据量不是很大,应该不会有较差的性能,不是吗?当然,值的类型将为varchar:-S以便存储“任何类型的数据”。

我相信NoSQL数据库可以通过其他方式解决类似的问题,但是,关系数据库中没有解决方案吗?我的意思是,我想使用关系数据库而不是NoSQL,因为项目和技术是固定的。

谢谢。

0 个答案:

没有答案
相关问题