相关概念
关注上图中的两个部分:
概念结构设计
设计E-R图,也即实体-联系图。
工作步骤:选择局部应用、逐一设计分E-R图、E-R图合并。进行合并时,它们之间存在的冲突主要有以下3类:
- 属性冲突。同一属性可能会存在于不同的分E-R图中。
- 命名冲突。相同意义的属性,在不同的分E-R图上有着不同的命名,或是名称相同的属性在不同的分E-R图中代表着不同的意义。
- 结构冲突。同一实体在不同的分E-R图中有不同的属性,同一对象在某一分E-R图中被抽象为实体而在另一分E-R图中又被抽象为属性。
逻辑结构设计
将E-R图,转换成关系模式。
工作步骤:确定数据模型、将E-R图转换成为指定的数据模型、确定完整性约束和确定用户视图。
实体:客观存在并可相互区分的事物。
- 实体集:具有相同类型和共享相同属性的实体的集合。如学生、课程。
- 弱实体和强实体:弱实体依赖于强实体的存在而存在。
属性:实体所具有的特性。
- 属性分类:简单属性和复合属性;单值属性和多值属性;NULL属性;派生属性(可以通过其它属性运算出来)
- 域:属性的取值范围称为属性的域。
- 码(key):唯一标识实体的属性集。
联系:实体内部的联系和实体之间的联系。
- 一对一(M:1)
- 一对多(1:N) 如部门和员工
- 多对多(M:N) 如学生和所选课程
例题
某社区蔬菜团购网站,为规范商品收发流程,便于查询客户订单情况,需要开发一个信息系统。请根据下述需求描述完成该系统的数据库设计。
【需求分析结果】
(1)记录蔬菜供应商的信息,包括供应商编号、地址和一个电话。(2)记录社区团购点的信息,包括团购点编号、地址和一个电话。(3)记录客户信息,包括客户姓名和一个电话。客户可以在不同的社区团购点
下订单,不直接与蔬菜供应商发生联系。
(4)记录客户订单信息,包括订单编号、团购点编号、客户电话、订单内容和日期。
【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图(不完整)如图 2-1 所示
【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整)蔬菜供货商(供货商编号,地址,电话)
社区团购点(团购点编号,地址,电话)
供货(供货商编号,(a))
客户(姓名,客户电话)
订单(订单编号,团购点编号,订单内容,日期,(b))、
【问题 1】(6 分)
根据问题描述,补充图 2-1 的实体联系图。
【问题 2】(4 分)
补充逻辑结构设计结果中的(a)、(b)两处空缺及完整性约束关系。
【问题 3】(5 分)
若社区蔬菜团购网站还兼有代收快递的业务,请增加新的“快递”实体,并给出客户实体和快递实体之间的“收取联系。“快递”关系模式包括快递编号、客户电论和日期。客户电话和日期。联系,对图 2-1 进行补充。
解析:
(1)由需求分析(3)客户与社区团购点为多对多的关系。另外,要对订单添加两个属性“订单内容”和“日期”。多对多的关系模式,应该有另外两张主表作为外键,即客户表和社区团购点,“团购点编号”和“客户电话”应该直接作为关系模式带进来,而不是订单自己拥有的属性。
(2)(a):供货应该有蔬菜供应商和社区团购点的主键作为外键。现在已经有了前者的供货商编号,还需要社区团购点的主键,即团购点编号。主键:(供货商编号、团购点编号)(b)客户电话。
(3)
2. 某汽车维修公司为了便于管理车辆的维修情况,拟开发一套汽车维修管理系统,请根据下述需求描述完成该系统的数据库设计。
【需求分析结果】
(1)客户信息包括:客户名、客户性质、折扣率、联系人、客户号联系电话。客户性质有个人或单位。客户号唯一标识客户关系中的每一个元组。
(2)车辆信息包括:车牌号、车型、产一个客户至少颜色和车辆类别。有一辆车,一辆车只属于一个客户,
(3)员工信息包括:贤工号、员工名、岗位电话、家庭住址。其中员工号唯一标识员工关系中的每一个元组。岗位有业务员、维修工主管。业务员根据车辆的故障情况填写维修单。
(4)部门信息包括:部门号、名称、主管和电话。其中,部门号唯一确定部门关系的每一个元组。每个部门只有一名主管,但每个部门有多名员工,每名员工只属于一个部门。
(5)维修单信息包括:维修单号、车牌号、维修内容、工时。其中维修单号唯一标识维修单关系中的每一个元组。一个维修工可以接多张维修单,但一张维修单只对应一个维修工。
【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图(不完整)如图 2-1 所示:
【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整)客户(客户号,客户名,(a),折扣率,联系人,联系电话)
车辆(车牌号,(b),车型,颜色,车辆类别)
员工(员工号,员工名,岗位,(c),电话,家庭住址)
部门(部门号,名称,主管,电话)
维修单(维修单号(d,)维修内容,工时)
【问题 1】(6 分)
根据问题描述,补充3个联系,完善图 2-1的实体联系图。联系名可以用联系 1、联系2 和联系3代替,联系的类型为 1:1、1:n 和 m:n(或 1:1、1:*和*:*)
【问题 2】(4 分)
根据题意,将关系模式中的空(a)、(d)的属性补充完整,并填入答题纸对应的位置上
【问题 3】(2 分)
分别给出车辆关系和维修单关系的主键和外键。
【问题 4】(3 分)
如果一张维修单涉及多项维修内容,需要多个维修工来处理,那么这个联系类型会发生何种变化?你认为应该如何解决这一问题?
解析:
回答1:补充车辆与客户的联系,部门与员工的联系,维修单与维修工的联系
回答2:(a)为客户性质;(b)车辆信息的属性都在逻辑结构模型中,再填一个,代表天的是外键。车辆和客户是多对一的联系,再多对一的关系中,多有一的主键作为外键,因此(b)为客户表中的主键,即客户号。(c):应填外键,拥有部门号的主键作为外键,因此(c)为部门号。(d):车牌号。维修单与维修工有关系,作为“多”,应有维修工的主键作为外键,维修工为员工的弱实体,因此还应有维修工员工号。维修单与业务员也是多对一的关系,因此也应该拥有业务员的员工号。
回答3:车辆关系的主键是车牌号,外键为客户号。维修单关系中的主键那为维修单号,外键为维修工和业务员的员工工号。
回答4:将维修单和维修工的关系由多对一改为多对多。那么维修单不需要把维修工的主键作为外键。新的关系模型有自己的主键、以及维修单和维修工的编号。