我正在设计用C#编写的Windows应用程序。该应用程序使用MySQL数据库作为存储后端。
基本上,该应用程序允许您设计自己的数据库"在以下意义上:
类别可以嵌套。与OOP类比:一个类别及其属性组成一个"类"并且在某些"类#34;是一个"实例"。嵌套本身是继承"。
的一种形式希望我解释背景足够,如果没有,请问。我试图让问题保持足够短。
我正在考虑两种截然不同的数据存储方法。我希望有人能说明哪种解决方案更好,为什么,因为我没有想法。
动态架构方法。在添加或删除属性时动态更改数据库中的表。每个类别都会得到一个包含所有记录的表格。
优点:更轻松地操作数据,减少查询,简单类型检查,简单约束
缺点:(我认为很难)操纵表格(我必须完全理解这个方案),我该怎么描述这个方案? (存储在表中的数据结构,必须使用表描述代码)
元数据方法。拥有categories
,properties
和items
等表格。使用大量的辅助表来存储东西。
优点:感觉更清洁,所有设置都将具有相同的数据库结构,简单的未来升级,简单的数据描述
缺点:难以编写查询和操作数据,可能需要存储过程以获得合理的性能
提出问题 - 元数据方法。如果我希望属性具有固定数据类型(例如string
/ int
/ datetime
)和我我不想将所有东西都存储成一个该死的字符串,我认为最好有一个像int_property_value (id<PK>, property_id<FK>, record_id<FK>, value<int>)
这样的表用于int参数(其中值是一个合理大小的int)。
有更好的解决方案吗?将字节直接存储在数据库中怎么样? (但同样,除非我使用某种标准形式的序列化,否则会出现问题,例如endianess。)