动态架构与元数据

时间:2016-03-02 13:11:47

标签: c# mysql database oop

我正在设计用C#编写的Windows应用程序。该应用程序使用MySQL数据库作为存储后端。

基本上,该应用程序允许您设计自己的数据库"在以下意义上:

  • 您可以定义类别,每个类别可能包含零个或多个相关属性。
  • 您可以在类别中创建记录,并为每个属性创建填充值。

类别可以嵌套。与OOP类比:一个类别及其属性组成一个"类"并且在某些"类#34;是一个"实例"。嵌套本身是继承"。

的一种形式

希望我解释背景足够,如果没有,请问。我试图让问题保持足够短。

我正在考虑两种截然不同的数据存储方法。我希望有人能说明哪种解决方案更好,为什么,因为我没有想法。

动态架构方法。在添加或删除属性时动态更改数据库中的表。每个类别都会得到一个包含所有记录的表格。

优点:更轻松地操作数据,减少查询,简单类型检查,简单约束

缺点:(我认为很难)操纵表格(我必须完全理解这个方案),我该怎么描述这个方案? (存储在表中的数据结构,必须使用表描述代码)

元数据方法。拥有categoriespropertiesitems等表格。使用大量的辅助表来存储东西。

优点:感觉更清洁,所有设置都将具有相同的数据库结构,简单的未来升级,简单的数据描述

缺点:难以编写查询和操作数据,可能需要存储过程以获得合理的性能

提出问题 - 元数据方法。如果我希望属性具有固定数据类型(例如string / int / datetime)和我我不想将所有东西都存储成一个该死的字符串,我认为最好有一个像int_property_value (id<PK>, property_id<FK>, record_id<FK>, value<int>)这样的表用于int参数(其中值是一个合理大小的int)。

有更好的解决方案吗?将字节直接存储在数据库中怎么样? (但同样,除非我使用某种标准形式的序列化,否则会出现问题,例如endianess。)

0 个答案:

没有答案