我正处于为数据库开发设计的初步阶段。
这是我的两难处境:我目前大致概述了需要在数据库中输入的150+字段,但我很难决定如何将字段拆分到链接在一起的有效表中,这些表遵循常规的规范化规则。
只想给你一段我收集到的关于一个士兵的信息:
显然,需要收集大量关于一个士兵的信息。我的问题是如何以一种可管理和高效的方法将表拆分,以及每个表需要列出的主键/外键。
该计划还将在Azure上托管数据库,最终将输入Windows应用程序。
发布于 2013-03-26 16:17:14
你想要做的是规格化给一个士兵的信息。阅读我链接到的维基百科文章是关于一个简明的解释,我可以提供。通过规范数据项的关系,可以将这些信息存储在关系数据库中。
让我们从士兵表开始。通常,表名是单数的,以大写字母开头。您将把每个项目放在这个表中,在这个表中,士兵有一个,也只有一个出现了这个项目的。
符合这一标准的一些项目是:姓名、出生地点、出生日期、死亡日期、死亡地点、埋葬地点等。
这个表可以有您需要的多少项(列)。唯一的标准是每个项目发生一次。
那么,对一个士兵来说会发生什么呢?
我们以家庭成员为例。FamilyMember表可能如下所示:
FamilyMember
------------
FamilyMemberID
SoldierID
FamilyMemberType
FamilyMemberName
...
FamilyMemberID是FamilyMember表的主(聚类)键。它是一个自动递增的整数或长,为表提供了唯一的键。
SoldierID是返回士兵表的外键。
FamilyMemberType描述了家庭成员和士兵之间的关系。一些例子可能是父母,兄弟,姐妹等等。通常,你会保存一个代码(P代表父母,B代表兄弟,S代表姐妹),而不是文本。
其余的列描述家庭成员。这些列表示家庭成员的一次,也是唯一一次发生。
您可以对要保存在关系数据库中的所有数据项执行此操作。
对于每一件物品,你都会问自己,士兵和这个项目之间的关系是什么?
再举一个例子,让我们来看看一个团。一个士兵和一个团之间有什么关系?士兵可以属于一个或多个团。
因此,您的Regiment表的结构将类似于FamilyMember表。
发布于 2013-03-26 16:04:59
您不想抛出太多的曲线球,但是您是否考虑过使用文档数据库,比如RavenDb?它将允许您轻松地将所有这些信息保存在一个文档中,因为所有这些信息都与单个士兵有关,因此尝试将其分割成相关的表是相当武断的。这都是与士兵有关的元数据,所以把它存储在一个士兵的记录中。
作为第一步,我将集中在设计您的领域模型,以准确地映射您希望记录的数据,如您的问题详细说明。一旦您这样做了,请考虑如何将其映射到所选的数据存储区。
发布于 2013-03-26 16:23:07
我可以给你个提示..。给出的评论也许对你没什么坏处,但你也可以决定创建一个真正的数据库。你的问题是信息特别涉及一个士兵..。尽管如此,如果您能够看到自给自足的信息(就像您试图从阅读规范中找到可以演化的对象时一样),您可以剪切这些信息。
在你的数据库里会有很多引用表..。我举几个例子:
一张宗教表,上面有今天所知道的所有宗教,以及从这个表格到士兵表的链接。(好消息是,在你的士兵席上,克里斯蒂安永远是基督徒,而不是基督教徒、克里斯蒂安或克里斯蒂安。)
然后你必须找到这个天井对象:例如:工作
您可以添加员工姓名、开始日期、结束日期的工作表.
或医疗档案:会诊日期,医院(顺便说一句),身高,体重,.
类似这样的东西
https://stackoverflow.com/questions/15641637
复制相似问题