要确定表中的列,请确定需要跟踪表中所记录主题的哪些信息。例如,对于“客户”表,“姓名”、“地址”、“市-省/自治区-邮编”、“发送电子邮件”、“称呼”和“电子邮件地址”就是不错的列初始列表。表中的每条记录包含同一组列,因此,可以为每条记录存储“姓名”、“地址”、“市-省/自治区-邮编”、“发送电子邮件”、“称呼”和“电子邮件地址”。例如,“地址”列包含客户的地址。每条记录包含有关一位客户的数据,而“地址”字段包含该客户的地址。
为每个表确定了初始的一组列后,可以对列进行进一步优化。例如,将客户姓名作为两个单独的列存储是有用的:即“名字”和“姓氏”,以便仅在这些列上进行排序、搜索和索引操作。类似地,地址实际上包含五个独立的组成部分:地址、城市、省/市/自治区、邮政编码和国家/地区,也可以将这些信息存储在单独的列中。例如,如果希望按照省/市/自治区执行搜索、筛选或排序操作,则需要将省/市/自治区信息存储在单独的列中。
还应该考虑数据库是仅存储国内的信息,还是也要存储国际信息。例如,如果打算存储国际地址,则最好使用“地区”列代替“省/市/自治区”列,因为这样的列既可能存储国内的省/市/自治区,也可能存储属于其他国家/地区的地区。同样,如果要存储国际地址,则采用 Postal Code 比使用 Zip Code 更有用。
下面的列表显示了用于确定列的一些提示。
- 不要包含已计算的数据
大多数情况下,不应在表中存储计算结果。在希望查看相应结果时,可以让 Access 执行计算。例如,假如有一个“已订购产品”报表,该报表显示数据库中每类产品的已订购数量的分类汇总。不过,在所有表中都没有“已订购数量”分类汇总列。相反,“产品”表中包含存储每种产品的已订购数量的“已订购数量”列。通过使用该数据,Access 可以在每次打印报表时计算相应的分类汇总。而分类汇总本身不应存储在表中。
- 将信息按照其最小的逻辑单元进行存储
您可能非常想使用单个字段存储全名,或使用单个字段存储产品名称和产品说明。如果将一种以上信息存储在一个字段中,则在以后要检索单个事实就会很困难。请尝试将信息拆分为多个逻辑单元,例如,为姓氏和名字或为产品名称、类别和说明创建单独的字段。
对每个表中的数据列进行优化后,就可以选择每个表的主键了。