我要给一本客房服务手册编码
所以我在代码中创建属性,比如Name
,Category
和一些其他需要在运行时创建的属性。
那么,我应该如何在sql server数据库中保存可读性呢?
我的建议是用两列(Properties
)创建一个名为Id, Name
的表,在该表中,我可以存储我的所有属性,但它不再是可读的
我也不确定在一个大表中为每个属性创建一个列是否明智
我也可以创建一个XML“文件”并将其存储在我的数据库中,但我也不认为这是一个好主意
任何建议都非常感谢
最佳答案
基本上有三种方法
每值一列
您所建议的称为实体属性值模型的
或者你打折的是XML(或序列化对象)
他们都有正反两方面的问题,有些问题可能会变得相当严重。
每一个值都有一个列,这意味着每次想存储更多数据时都必须更改数据库和模型,这使得数据库非常脆弱,维护性很高。
eav可以很容易地导致查询成为巨大的连接,而将数据完整性强加于它是一种毫无意义的隐藏。
基于对象还可能导致重大的优化和维护问题,例如,必须打开每个对象以查看其中是否有内容。
如果你坚持使用关系数据库,那么在你做决定的时候,其中任何一个都可能是最好的(它们在某个方面都是脆弱的)。
看看nosql的一个替代方案,它们是为这类数据设计的。
关于c# - 如何在数据库中保存未知属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14425652/