数据库设计
- 需求分析:即分析数据存储的要求,产出物有数据流图、数据字典、需求说明书。获得用户对系统的三个要求:信息要求、处理要求、系统要求。
- 概念结构设计:就是设计E-R图,也即实体-联系图。工作步骤包括:选择局部应用、逐一设计分E-R图、E-R图合并。分E-R图进行合并时,它们之间存在的冲突主要有以下3类。
- 属性冲突。同一属性可能会存在于不同的分E-R图中。
- 命名冲突。相同意义的属性,在不同的分E-R图上有着不同的命名,或是名称相同的属性在不同的分E-R图中代表若不同的意义。
- 结构冲突。同一实体在不同的分ER图中有不同的属性,同一对象在某一分-R图中被抽象为实体而在另一分E-R图中又被抽象为属性。
- 逻辑结构设计:将E-R图,转换成关系模式。工作步骤包括:确定数据模型、将E-R图转换成为指定的数据模型、确定完整性约束和确定用户视图。
- 物理设计:步骤包括确定数据分布、存储结构和访问方式。
- 数据库实施阶段:根据逻辑设计和物理设计阶段的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
- 数据库运行和维护阶段:数据库应用系统经过试运行即可投入运行,但该阶段需要不断地对系统进行评价、调整与修改。
概念
- 实体:客观存在并可相互区别的事物。可以是具体的人、事、物或抽象概念。如人、汽车、图书、账户、贷款。
- 弱实体和强实体:弱实体依赖于强实体的存在而存在。
- 实体集:具有相同类型和共享相同属性的实体的集合,如学生、课程。
- 属性:实体所具有的特性。
- 属性分类:简单属性和复合属性;单值属性和多值属性;NU儿L属性;派生属性(可以通过其他属性运算出来比如年龄可以根据出生日期)。
- 域:属性的取值范围称为该属性的域。
- 码(key):唯一标识实体的属性集。
- 联系:现实世界中事物内部以及事物之间的联系,在E-R图中反映为实体内部的联系和实体之间的联系。
- 一对一(1:1)
- 一对多(1:N)
- 多对多(M:N)
E-R图
用E-R图来描述概念数据模型,世界是由一组称作实体的基本对象和这些对象之间的联系构成的。
在E-R模型中,使用椭圆表示属性(一般没有)、长方形表示实体、菱形表示联系,联系的两端要填写联系类型,示例如下图:
练习题
2021年上真题
某社区蔬菜团购网站,为规范商品收发流程,便于查询客户订单情况,需要开发一个信息系统。请根据下述需求描述完成该系统的数据库设计。
【需求分析结果】
(1)记录蔬菜供应商的信息,包括供应商编号、地址和一个电话。
(2)记录社区团购点的信息,包括团购点编号、地址和一个电话。
(3)记录客户信息,包括客户姓名和一个电话。客户可以在不同的社区团购点下订单,不直接与蔬菜供应商发生联系。
(4)记录客户订单信息,包括订单编号、团购点编号、客户电话、订单内容和日期。
【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图(不完整)如图2-1所示。
【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整)
蔬菜供货商(供货商编号,地址,电话)
社区团购点(团购点编号,地址,电话)
供货(供货商编号,(a) )
客户(姓名,客户电话)
订单(订单编号,团购点编号,订单内容,日期,(b))
【问题1】(6分)
根据问题描述,补充图2-1的实体联系图。
【问题2】(4分)
补充逻辑结构设计结果中的((a)、(b)两处空缺及完整性约束关系。
【问题3】(5分)
若社区蔬菜团购网站还兼有代收快递的业务,请增加新的“快递”实体,并给出客户实体和快递实体之间的“收取联系,对图2-1进行补充。“快递”关系模式包括快递编号、客户电话和日期。客户电话和日期。
问题2
a:团购点编号,主键(供应商编号,团购点编号),外键:供应商编号,团购点编号
b:客户电话,主键:订单编号,外键:团购点编号,客户电话
问题1问题3
2021年下真题
某汽车维修公司为了便于管理车辆的维修情况,拟开发一套汽车维修管理系统,请根据下述需求描述完成该系统的数据库设计。
【需求分析结果】
(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分)
如果一张维修单涉及多项维修内容,需要多个维修工来处理,那么这个联系类型会发生何种变化?你认为应该如何解决这一问题?
问题2
a:客户性质
b:客户号
c:部门号
d:车牌号,维修工的员工号,业务员的员工号
问题3
车辆关系:主键是车牌号,外键是客户号
维修单关系:主键是维修单号,外键是维修工的员工号和业务员的员工号
问题4
维修工和维修单之间的联系类型会发生变化,从1:n变成m:n
问题1