2011-08-15 27 views
0

我试图找出使用Access 2010规范化以下数据集的最佳方法。我应该如何标准化这张桌子?

我正在构建一个数据库以跟踪一组工作人员的数据输入。他们正在阅读文件,这些文件的地图上有安装作业的代码编号以及这些作业的相关信息,并将这些项目输入到数据库中。从每个文档收集的代码编号有两种主要类型。目前我已将他们的所有数据写入平板电脑。我有以下字段(*表示该字段可以为空):

  • workerID:工人的ID号
  • documentID:与每个文档
  • work_date关联的唯一字符串:日期工人输入此数据
  • code1:第一种代码编号
  • * code1Year:与编码1相关的安装一年
  • * code1Type:字符串编码1的作业类型
  • * code1Loc1:为编码1地址号(1型)
  • * code1Loc2:地址号对于代码1(2型)
  • * code1Loc3:用于CODE1地址号(类型3)
  • 共DE2:码数第二类型
  • 组ID:会员资格组代码
  • code1verified(可与代码1或代码2中使用):表示代码1和其相关联的信息已经被作为正确验证的布尔标志从文档
  • code2verified转录:这表明码2和其相关的信息已经为正确地从文件转录验证布尔标志

这是我的正常化计划:

  • 表名:(PRIMARY_KEY),(foreign_key),字段1,字段2 ...
  • 工人:(WORKER_ID)
  • 组:(GROUP_ID)
  • code1Type:(CODE1TYPE_ID),code1Type
  • 工作日:(WORKDAY_ID),(worker_id),work_date
  • locTypes:(LOC_ID)的locationType
  • CODE1:(cODE1_ID),(workday_id),代码1,(code1Type_id),(GROUP_ID),code1verified
  • code1Loc:(CODE1LOC_ID),(code1_id),(loc_id),code1Loc
  • code1Year:(CODE1YEA R_ID),(code1_id),code1Year
  • 码2:(CODE2_ID),(GROUP_ID),(workday_id),码2,code2verified

这是涉及这些值彼此最好的方法是什么?

回答

0

没有真正了解数据,我可以说最好的是它需要一些工作。

我推测code1Year,code1Typecode1Loc*也不编码在code1

我想你会还需要一个表来存储你已经读入的行,它可能只是这样的:

  • map_table:(MAP_ID),WORKER_ID,GROUP_ID, WORKDAY_ID,CODE1_ID,CODE1LOC_ID,CODE1YEAR_ID,CODE2_ID

我会考虑丢弃单独的表CODE1YEAR,因为它应该只是一个整数,你要多久2009年重新标记年到别的东西。与WORKDAY_ID一样,为什么不把它作为日期字段。

这不是明显,我为什么代码1和代码2包括group_idworkday_id

而且WORKER_IDGROUP_ID似乎那种光秃秃的,除非仅被用于标识的验证他们

+0

我想'code1year'需求它自己的表,因为一个'code1'值可以有多个'code1year'值。同样,“workDays”表的要点是列出每个员工工作的所有日子,以便工作日/工人对可以与当天员工输入的所有行相关联。 – sigil

+0

考虑过了,我会接受你的答案,因为map_table的想法。将它作为临时表将非常有用,而且我正在试图弄清楚如何在没有人的情况下过关。 – sigil