使用动态字段创建数据库

时间:2012-08-03 06:14:54

标签: c# .net sql-server database-design dynamic-data

我有关于人物信息的数据库

会有一些关于姓名,年龄,地址,联系方式等人的共同细节......

但是有一些类别的人,如政府公务员,商人,薪水,政客等...

因此会有一些关于类别的动态字段......

可以轻松制作常用的详细信息表,但问题在于类别的动态字段 政府公务员将有收入,部门,等等......

我创建了三个表:

人民表:姓名,年龄,DOB等...... 类别:政府公务员行,薪水等...... 属性:

------------------------
ID|Category|Field|Value
-----------------------
1 |GS      |dept |electricity

上面的数据库设计(我现在正在使用的)是那种 NopCommerce数据库设计 Nop_CustomerNop_CustomerAttribute

这是一个好的或者比这更好的事情:(对于这种情况)

需要考虑两个要点: 1用户将为此添加数据,因此必须相应地创建控件 2-这个数据库将被其他人搜索。

修改

每个类别的字段都将被修复。

但是类别将随着时间的推移而不是由用户而是由开发人员添加,因此需要为开发人员减少繁忙和可维护性

3 个答案:

答案 0 :(得分:4)

为每种类型的人制作表格。在这些表中,仅存储适用的内容。如果Phil Jones是一名政治家,那么他就会在Person表中输入一个条目来描述他,就个人而言。他还会在政治家表格中排成一排,就政治家而言,他会形容他。使每个子表与person表的ID列具有外键关系。

答案 1 :(得分:0)

您可以选择使用ORMNHibernate工具:

  

NHibernate是一个成熟的开源对象关系映射器   .NET框架。它是积极开发,功能齐全和使用的   成千上万的成功项目。

然后,您可以使用OOP主体(如继承)来创建一个涵盖基础的超类,然后根据您需要的其他额外功能扩展该类。 This教程为您提供了如何操作的建议。

答案 2 :(得分:0)

您可以使用XML字段,以便存储非结构化数据或使用继承映射之一 见http://www.agiledata.org/essays/mappingObjects.html