在sql中保留未指定的数据

时间:2014-01-22 07:12:40

标签: c# sql-server entity-framework

我有一个实体(我使用EF就是为什么,我们称之为表)。我有一个表和一个与主表有1-N关系的子表。子表保存实体的属性在主表中。属性也保存为ID,用户使用数据类型定义.FO示例

Table A
ID NAME
1  ENTITY 1

TABLE SUB
ID TABLEAID PROPERTYID VALUE
1   1       1           5
2   1       2           SOMESTRING

PROPERTYTABLE
ID PROPERTYNAME  TYPE
1   PROP1        INTEGER
2   PROP2        STRING   

因此,用户已经定义了一个具有2个属性的实体,其中包含整数和字符串数据类型。我将使用适当的组件处理在UI中编辑这些属性。

现在我的主要问题是,在sql中保留这些未定义数据的最佳方法是什么? (我不打算保留blob或图像或大数据)

1 个答案:

答案 0 :(得分:1)

我还在考虑这个问题。在sql中保留这个是什么意思?

您的模型可以存储未建模的数据。

您遇到的一个问题是表跨越约束,SUB中的值必须与PROPERTYTABLE中的TYPE匹配,必须进行检查。 另一个问题是你开始考虑强制性属性或属性集(一个暗示存在另一个属性)。那会让你头疼。

但只要您的应用程序假定它可以找到任何属性组合或根本找不到任何内容,那就没关系。这种假设将导致只有有限数量的属性,或者单个属性(或多或少)不重要,就像您为某个采购订单存储备注时的情况一样。 (从应用的角度来看,评论的内容和存在是无关紧要的。)

我们使用键/值对表来存储配置参数。由于有一个很好的默认选择,没有问题,配置项的数量可以很容易地扩展。不用说,这里只有少量参数(约20个)。我们还跳过了PROPERTYTABLE,因为我们在SUB中存储了键/值对,并且不介意数据类型。

希望这有助于您的思考过程