1

我有关于人员信息的数据库要设计

会有一些关于人的常见细节,如姓名、年龄、地址、联系方式等......

但是有一些人,例如政府公务员,商人,受薪人员,政治家等...

所以会有一些关于类别的动态字段......

常见的详细信息表可以很容易地制作,但问题在于诸如政府公务员的动态字段将有收入,部门,自从等......

我创建了三个表:

人民表:姓名、年龄、出生日期等...类别:政府公务员、受薪等行...属性:

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

上面的数据库设计(我现在使用的)是一种 带有和表的NopCommerce数据库设计 Nop_CustomerNop_CustomerAttribute

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

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

编辑:

每个类别的字段将是固定的。

但是随着时间的推移,这些类别将不是由用户添加,而是由开发人员添加,因此开发人员需要不那么忙碌和可维护

4

3 回答 3

4

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

于 2012-08-03T06:23:57.873 回答
0

您可以选择使用ORM工具,例如NHibernate

NHibernate 是一个成熟的开源对象关系映射器,适用于 .NET 框架。它在数以千计的成功项目中得到积极开发、功能齐全和使用。

然后,您可以使用 OOP 原则(例如继承)来拥有一个涵盖基础知识的超类,然后根据您需要的其他额外功能来扩展该类。教程为您提供了如何做到这一点的想法。

于 2012-08-03T06:22:13.000 回答
0

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

于 2012-08-03T06:50:50.963 回答