我要编写一本家政手册
所以我在类似的代码中创建属性Name
,Category
而其他一些需要在运行时创建。
那么我应该如何将人类可读的内容保存在 SQL Server 数据库中呢?
我的建议是创建一个名为Properties
2 列 ( Id, Name
) 的表,在该表中我可以存储我的所有属性,但它不再是人类可读的
我也不确定在一个大表中为每个属性创建一列是否明智
我也可以创建一个 XML“文件”并将其存储在我的数据库中,但我也不认为这是一个好主意
任何意见是极大的赞赏
我要编写一本家政手册
所以我在类似的代码中创建属性Name
,Category
而其他一些需要在运行时创建。
那么我应该如何将人类可读的内容保存在 SQL Server 数据库中呢?
我的建议是创建一个名为Properties
2 列 ( Id, Name
) 的表,在该表中我可以存储我的所有属性,但它不再是人类可读的
我也不确定在一个大表中为每个属性创建一列是否明智
我也可以创建一个 XML“文件”并将其存储在我的数据库中,但我也不认为这是一个好主意
任何意见是极大的赞赏
对于每个值,基本上有三个接近此 A 列
您建议的那个称为实体属性值模型
或者您打折的那个是 xml(或序列化对象)
它们都有优点和缺点,其中一些缺点可能会变得非常严重。
每个值的列意味着每次要存储更多数据时都必须更改数据库和模型,这使得它非常脆弱且维护成本很高。
EAV 很容易导致查询变成巨大的连接,并且对其强加数据完整性是一种隐藏。
基于对象还可能导致重大的优化和维护问题,例如,必须打开每个对象以查看其中是否有东西。
现在,如果您坚持使用关系数据库,那么在您做出决定时,这些中的任何一个都可能是最好的(它们在某个方面都是脆弱的)。
查看 NoSQL 替代方案之一,它们是为此类数据设计的。