如何在数据库中保存未知属性

本文关键字:保存 未知 属性 数据库 | 更新日期: 2023-09-27 17:54:31

我要编写一个家政手册

所以我在代码中创建属性,如Name, Category和其他需要在运行时创建的。

那么我应该如何在SQL Server数据库中保存人类可读的内容?

我的建议是创建一个名为Properties的表,有2列(Id, Name),在这个表中,我可以存储我所有的属性,但它不再是人类可读的

我也不确定在一个大表中为每个属性创建一个列是否明智

我也可以创建一个XML"文件"并将其存储在我的数据库中,但我不认为这是一个好主意

请多多指教

如何在数据库中保存未知属性

基本上有三种方法每个值

的列

您建议的实体属性值模型

或者你贴现的xml(或序列化对象)

它们都有优点和缺点,有些缺点可能会很严重。

每个值对应一列意味着每次你想要存储更多的数据时,你必须更改数据库和模型,这使得它非常脆弱和高维护。

EAV可以很容易地导致查询变成巨大的连接,强加数据完整性在它上面是一个隐藏什么。

基于对象也可能导致重大的优化和维护问题,例如,必须打开每个对象以查看其中是否有内容。

如果你坚持使用关系数据库,那么在你做决定的时候,它们中的任何一个都可能是一堆坏东西中的最好的(它们在某个方面都是脆弱的)。

看看NoSQL的一个替代方案,它们是为这种类型的数据设计的。