数据库设计基础.doc

上传人:M****1 文档编号:560245988 上传时间:2022-09-17 格式:DOC 页数:15 大小:386KB
返回 下载 相关 举报
数据库设计基础.doc_第1页
第1页 / 共15页
数据库设计基础.doc_第2页
第2页 / 共15页
数据库设计基础.doc_第3页
第3页 / 共15页
数据库设计基础.doc_第4页
第4页 / 共15页
数据库设计基础.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《数据库设计基础.doc》由会员分享,可在线阅读,更多相关《数据库设计基础.doc(15页珍藏版)》请在金锄头文库上搜索。

1、需要了解的一些数据库术语Microsoft Office Access 2007 可将信息组织到表中,表是由行和列组成的列表,与会计人员的便笺簿或 Microsoft Office Excel 2007 工作表类似。在简单的数据库中,可能仅包含一个表。对于大多数数据库,可能需要多个表。例如,可以在一个表中存储有关产品的信息,在另一个表中存储有关订单的信息,再在另一个表中存储有关客户的信息。每一行也称为记录,而每一列也称为字段。记录是一种用来组合某事项的相关信息的有效且一致的方法。字段是单个信息项,即出现在每条记录中的项类型。例如,在“产品”表中,每一行或记录中都会包含与某个产品相关的信息。每一

2、列或字段则包含有关该产品的某种类型的信息,如名称或价格。返回页首什么是好的数据库设计?一些原则可为数据库设计过程提供指导。第一个原则是,重复信息(也称为冗余数据)很糟糕,因为重复信息会浪费空间,并会增加出错和不一致的可能性。第二个原则是,信息的正确性和完整性非常重要。如果数据库中包含不正确的信息,任何从数据库中提取信息的报表也将包含不正确的信息。因此,基于这些报表所做的任何决策都将提供错误信息。所以,良好的数据库设计应该是这样的: 将信息划分到基于主题的表中,以减少冗余数据。 向 Access 提供根据需要联接表中信息时所需的信息。 可帮助支持和确保信息的准确性和完整性。 可满足数据处理和报表

3、需求。 返回页首设计过程设计过程包括以下步骤: 确定数据库的用途 这可帮助进行其他步骤的准备工作。 查找和组织所需的信息 收集可能希望在数据库中记录的各种信息,如产品名称和订单号。 将信息划分到表中 将信息项划分到主要的实体或主题中,如“产品”或“订单”。每个主题即构成一个表。 将信息项转换为列 确定希望在每个表中存储哪些信息。每个项将成为一个字段,并作为列显示在表中。例如,“雇员”表中可能包含“姓氏”和“聘用日期”等字段。 指定主键 选择每个表的主键。主键是一个用于唯一标识每个行的列。例如,主键可以为“产品 ID”或“订单 ID”。 建立表关系 查看每个表,并确定各个表中的数据如何彼此关联。

4、根据需要,将字段添加到表中或创建新表,以便清楚地表达这些关系。 优化设计 分析设计中是否存在错误。创建表并添加几条示例数据记录。确定是否可以从表中获得期望的结果。根据需要对设计进行调整。 应用规范化规则 应用数据规范化规则,以确定表的结构是否正确。根据需要对表进行调整。返回页首确定数据库的用途最好将数据库的用途记录在纸上,包括数据库的用途、预期使用方式及使用者。例如,对于供家庭办公用户使用的小型数据库,可以记录与“客户数据库保存客户信息列表,用于生成邮件和报表”类似的简单内容。如果数据库比较复杂或者由很多人使用(在企业环境中通常是这样),数据库的用途可以简单地分为一段或多段描述性内容,且应包含

5、每个人将在何时及以何种方式使用数据库。这种做法的目的是为了获得一个良好的任务说明,作为整个设计过程的参考。任务说明可以帮助您在进行决策时将重点集中在目标上。返回页首查找和组织所需的信息要查找和组织所需信息,请从现有信息着手。例如,您可能会将采购订单记录在分类帐中,或将客户信息保存在文件柜中的某个纸质表单中。收集这些文档,并列出所显示的每种信息(例如在表单中填写的每个框)。如果没有任何现有表单,则请设想您必须设计一个表单来记录客户信息。将要在表单中存放哪些信息?将要创建哪些填充框?确定并列出其中的每一项。例如,假定当前在索引卡上记录客户列表。这些卡片上可能记录了客户姓名、地址、城市、省/市/自治

6、区、邮政编码和电话号码。其中的每一项都可能表示表中的一个列。在准备此列表时,不要为让它在最开始就能达到完美的效果而担忧。相反,请列出每个想到的项。如果还有其他人使用该数据库,也应向他们征求意见。可在以后对该列表进行优化。接下来,考虑可能希望从数据库生成的报表或邮件的类型。例如,可能会希望生成按照区域显示销售量的产品销售报表,或生成显示库存水平的库存汇总报表。还可能希望生成发送给客户、用来通告销售活动或提供优惠的套用信函。在心中设计此类报表,并想象其外观。将在报表中放置哪些信息?列出每一项。对希望创建的套用信函和任何其他报表进行相同的工作。考虑可能希望创建的报表和邮件,可以帮助确定数据库中将需要

7、的各个项。例如,假定向客户提供选择订阅(或取消订阅)周期性电子邮件更新的机会,且希望打印已经选择订阅的客户的列表。为了记录该信息,向客户表中添加了一个“发送电子邮件”列。对于每个客户,可以将此字段设置为“是”或“否”。向客户发送电子邮件的要求还意味着要记录另一个项。知道客户希望接收电子邮件后,还需要知道这些电子邮件的接收地址。因此,需要记录每个客户的电子邮件地址。有一种很好的做法:为每个报表或输出列表构造一个原型,并考虑需要哪些项才能生成该报表。例如,检查套用信函时,可能会想到一些事项。如果希望包括恰当的称呼语(如作为问候语开头的“先生”、“太太”或“女士”等字符串),则需要创建一个称呼语项。

8、另外,通常可能采用“尊敬的王先生”而不是“尊敬的王思明先生”作为信件的开头。这表示一般要将姓和名分开存储。需要记住的要点是,应该将每条信息分为最小的有用单元。对于姓名,为了让姓氏易于使用,需要将姓名分为两部分:姓氏和名字。例如,为了按照姓氏对报表进行排序,将客户的姓氏分开存储将很有帮助。一般情况下,如果希望根据信息项进行排序、搜索、计算或生成报表,应当将该项放置在单独的字段中。考虑希望数据库进行回答的问题。例如,上个月您的特色产品的销售量是多少?您的主要客户在什么地方?您的畅销产品的供应商是谁?对这些问题进行估计,可以帮助您将精力集中于需要记录的其他项。收集这些信息后,就可以进行下面的步骤。返

9、回页首将信息划分到表中要将信息划分到表中,请选择主要实体或主题。例如,在查找和组织用于产品销售数据库的信息后,初步列表可能与下图类似:此处所示的主要实体为产品、供应商、客户和订单。因此,可以从以下四个表开始:一个用来存储有关产品的真实信息、一个用来存储有关供应商的真实信息、一个用来存储有关客户的真实信息、一个用来存储有关订单的真实信息。尽管这样并没有完成列表,但却是一个不错的起点。可以继续对此列表进行优化,直到获得适用的设计为止。首次检查项的初步列表时,可能非常想将所有项全部放入一个表中,而不是放入上图中显示的四个表中。您将在此处了解到为什么这样做不好。考虑一下此处所示的表:在这种情况下,每行

10、中同时包含有关产品及其供应商的信息。由于可能拥有来自同一供应商的许多产品,因此供应商的名称和地址信息不得不多次重复。这就浪费了磁盘空间。在单独的“供应商”表中仅记录一次供应商信息,然后将该表链接到“产品”表,是更好的解决方案。此设计的另一个问题出现在需要修改有关供应商的信息时。例如,假定需要更改供应商的地址。由于此信息出现在多个位置,您可能会意外地更改了一个位置的地址而忘记更改其他位置的地址信息。将供应商的地址记录在唯一一个位置就可以解决该问题。设计数据库时,应始终尽可能仅记录每个事实一次。如果发现自己在多个位置重复相同的信息(如特定供应商的地址),则请将该信息放入单独的表中。最后,假定只有

11、Coho Winery 提供的一个产品,并且您想删除该产品但仍保留供应商名称和地址信息。如何在不丢失供应商信息的前提下删除产品记录呢?您无法做到这一点。因为每条记录中既包含有关产品的事实,也包含有关供应商的事实,无法删除一个事实而保留另一个事实。为了分开保存这些事实,必须将一个表拆分为两个表:一个表存储产品信息,另一个表存储供应商信息。删除产品记录应仅删除有关产品的事实,而不会删除有关供应商的事实。选择了用表来表示的主题后,该表中的列就应仅存储有关该主题的事实。例如,产品表应仅存储有关产品的事实。由于供应商地址是有关供应商的事实,而不是有关产品的事实,因此属于供应商表。返回页首将信息项转换为列

12、要确定表中的列,请确定需要跟踪表中所记录主题的哪些信息。例如,对于“客户”表,“姓名”、“地址”、“市-省/自治区-邮编”、“发送电子邮件”、“称呼”和“电子邮件地址”就是不错的列初始列表。表中的每条记录包含同一组列,因此,可以为每条记录存储“姓名”、“地址”、“市-省/自治区-邮编”、“发送电子邮件”、“称呼”和“电子邮件地址”。例如,“地址”列包含客户的地址。每条记录包含有关一位客户的数据,而“地址”字段包含该客户的地址。为每个表确定了初始的一组列后,可以对列进行进一步优化。例如,将客户姓名作为两个单独的列存储是有用的:即“名字”和“姓氏”,以便仅在这些列上进行排序、搜索和索引操作。类似地

13、,地址实际上包含五个独立的组成部分:地址、城市、省/市/自治区、邮政编码和国家/地区,也可以将这些信息存储在单独的列中。例如,如果希望按照省/市/自治区执行搜索、筛选或排序操作,则需要将省/市/自治区信息存储在单独的列中。还应该考虑数据库是仅存储国内的信息,还是也要存储国际信息。例如,如果打算存储国际地址,则最好使用“地区”列代替“省/市/自治区”列,因为这样的列既可能存储国内的省/市/自治区,也可能存储属于其他国家/地区的地区。同样,如果要存储国际地址,则采用 Postal Code 比使用 Zip Code 更有用。下面的列表显示了用于确定列的一些提示。 不要包含已计算的数据 大多数情况下

14、,不应在表中存储计算结果。在希望查看相应结果时,可以让 Access 执行计算。例如,假如有一个“已订购产品”报表,该报表显示数据库中每类产品的已订购数量的分类汇总。不过,在所有表中都没有“已订购数量”分类汇总列。相反,“产品”表中包含存储每种产品的已订购数量的“已订购数量”列。通过使用该数据,Access 可以在每次打印报表时计算相应的分类汇总。而分类汇总本身不应存储在表中。 将信息按照其最小的逻辑单元进行存储 您可能非常想使用单个字段存储全名,或使用单个字段存储产品名称和产品说明。如果将一种以上信息存储在一个字段中,则在以后要检索单个事实就会很困难。请尝试将信息拆分为多个逻辑单元,例如,为

15、姓氏和名字或为产品名称、类别和说明创建单独的字段。对每个表中的数据列进行优化后,就可以选择每个表的主键了。返回页首指定主键每个表应包含一个列或一组列,用于对存储在该表中的每个行进行唯一标识。这通常是一个唯一的标识号,如雇员 ID 号或序列号。在数据库术语中,此信息称为表的主键。Access 使用主键字段将多个表中的数据关联起来,从而将数据组合在一起。如果已经为表指定了唯一标识符(如唯一标识目录中的每种产品的产品编号),就可以使用该标识符作为表的主键,但仅当此列的值对每条记录而言始终不同时才能如此。主键中不能有重复的值。例如,不要使用人名作为主键,因为姓名不是唯一的。很容易在同一个表中出现两个同名的人。主键必须始终具有值。如果某列的值可以在某个时间变成未分配或未知(缺少值),则该值不能作为主键的组成部分。应该始终选择其值不会更改的主键。在使用多个表的数据库中,可将一个表的主键作为引用在其他表中使用。如果主键发生更改,还必须将此更改应用到其他任何引用该键的位置。使用不会更改的主键可降低出现主键与其他引用该键的表不同步的几率。通常将任意唯一数字作为主键使用。例如,可能会为每个订单分配一个唯一的订单号。订单号的唯一用途是对订单进行标识。分配后,订单号就永远都不更改。如果尚未确定可能成为好的主键的一个或一组列,请考虑使用具有“自动编号”数据类型的列。使用“自动

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号