【2022-06-05】【知识梳理】数据库系统概念 第六章 使用 E-R 模型进行数据库设计(docx)

本文介绍了使用E-R模型进行数据库设计的过程,包括需求分析、概要设计、明确功能需求、逻辑设计和物理设计。E-R模型通过实体、关系和属性描述数据,强调避免冗余和不完整性。实体-关系图用于表示数据库的逻辑结构,通过映射基数描述实体间关系,如一对一、一对多、多对一和多对多。主键和弱实体的概念确保数据的唯一性和完整性。文章还讨论了E-R模型的扩展特性,如特化、泛化、聚合以及如何将E-R模型转换为关系模式。最后,提到了数据库设计的其他方面,如工作流、权限管理和未来需求的适应性。
摘要由CSDN通过智能技术生成

建议先修课程:数据结构、操作系统、计算机组成原理。
配套教材:
Database System Concepts 7th Edition Abraham Silberschatz Henry F. Korth S. Sudarshan
参考书目:
1、数据库系统概论(第5版) 王珊 萨师煊


链接: https://pan.baidu.com/s/1940pS_DrTFRDHBuzR7A_kg?pwd=mrhh


六 使用E-R模型进行数据库设计

6.1 设计过程概览
对于小型应用程序,清楚的数据库设计者直接决定需要创建的关系及其属性与约束也许是可行的。然而,面对非小型应用程序时,这种设计方法就不适用,因为中大型应用高度复杂。经常没有一个人能明白应用程序全部的数据需求。数据库设计者必须与应用程序用户沟通,理解应用程序的需求,将它们使用用户可以明白的高级方法表示,而后将需求转变为设计的低级层面。高级数据模型提供了概念性的框架,系统性地指定了数据库用户的数据需求和满足这些需求的数据库结构。
数据库设计的步骤如下:
【需求分析】刻画与其用户的全部数据需求。数据库设计者需要与领域专家和用户沟通,来完成此任务。这一阶段的成果是用户需求规格说明。
【概要设计】设计者选择一个数据模型,将需求转换为概念性的数据库模式。这个模式提供了企业的更详细的总览。典型地,E-R模型(entity-relationship model)通常被用于概念设计。用E-R模型的术语说,概念模型制定了数据库表示的实体,实体的属性,实体间的关系,以及实体和关系上的约束。设计者需要检查模式,确认所有数据需求都已满足且没有冲突。设计人员亦可移除冗余的特性。这一步需关注数据及其关系的描述,而不是物理上的存储细节。
【明确功能需求】完全设计好的概要模型也指明了企业的功能需求。在功能需求规格说明中,用户描述了将在数据上执行的运算或事务的种类。在本阶段,设计者可以检查模式,确保其满足功能需求。
【逻辑设计】设计者将高级的概念模式映射到数据库系统的数据模型实现。实现的数据模型一般是关系模型。于是,这一步的工作一般包括:将E-R模型定义的概念模式映射到关系模式。
【物理设计】设计者使用系统特定(system-specific)的数据库模式。在本阶段,需指定数据库的物理特性,例如文件组织的形式和索引结构的选择。
在应用程序开发完毕后,改变数据库的物理模式是相对容易的。然而,逻辑模式的改变更加难于执行,因为它们可以影响大量的分散于各个应用程序的代码中的请求和更新。因此,在开发剩余的数据库应用程序之前,数据库设计必须加倍小心。

在数据库设计的过程中,一个主要部分是:确定如何表示“事物”,譬如:人、地点、产品、组织,等等。我们使用术语“实体”来指代这些可以明确识别的物件。实体间的相关是多种多样的,它们都需要在数据库设计中把握。举例:为大学设计数据库,实体可以有:讲师、学生、部门、课程……。学生上课、讲师教课,这些都属于实体间的关系。
设计数据库模式时,必须确保避免2个主要的缺陷:
1、冗余(redundancy)。糟糕的设计可能重复记录信息。能够使用标识符代表一个实体时,避免再在使用该标识符的表中添加该实体的其它信息。例:在若干张表中,如果都记录了人员的编号,那么,不要在这些表中悉数记录人员的姓名、所在部门,等等。这些信息应当在单独的一张表中记录。需要查询这些信息时,先查询编号找到对应的记录,便可从这些记录中获得所需的信息。
这种冗余记录的最大问题并不是占用了额外的存储空间,而是数据的不一致。假如在更新这些信息时没有多加留意,那么,很有可能只修改了其中一部分,剩余的副本没有得到修改。这就导致有概率给用户提供错误的信息。
2、不完整(incompleteness)。糟糕的设计没有考虑到全部主要的应用场景。例如:假设有一张表描述了排课情况,一条记录代表一次上课,每条记录都附带有课程信息。那么,假如需要添加一门新的课,但尚未安排好开课计划,新课的添加就可能失败:或许出于主键约束等原因,数据库系统拒绝添加新的记录。

仅避免不好的设计是不足的。在良好的设计中,也必须做出选择。举例而言:现要求使用数据库描述“某顾客购买某件产品”。这个产品的销售应该作为顾客于产品之间的关系呢,还是将本次销售作为单独的实体,同时关联到顾客和产品呢?虽然做出选择看上去很简单,但不同的选择或许会为以后带来巨大的不同。可见,设计数据库是一个富有挑战性的问题。它要求将科学精通与“良好的品味”结合起来。
6.2 实体-关系模型
实体-关系(entity-relationship,E-R)数据模型是由美籍华人计算机科学家陈品山发明的。E-R模型在映射真实世界中的意义和交互时非常有用,因为为许多数据库设计工具所利用。E-R模型引入了3个基本概念:实体集、关系集和属性。E-R模型还有对应的图表示,即E-R图(E-R diagram)。E-R图能够图形化地表示数据库总体的逻辑结构。E-R图既简单又清晰,这为其广泛使用打下了基础。

实体(entity)是真实世界中的可以与其它物体区别开来的“事物”(thing)或“物体”(object)。大学中的每一个人、你使用的每一件数码产品、某人的每一部著作……这些都可以作为实体。实体具有一组属性,一些属性的值必须唯一标识一个实体。诸如:身份证号码或社会安全号码等标识符,就可以唯一标识一个人(不计相关工作出现重大纰漏导致重号等极端情形,下同);IMEI(国际移动设备识别码)用于识别合法入网的移动电话;VIN(车辆识别号码)用于识别车辆,等等。实体可以是具体的也可以是抽象的。抽象实体的例子有开课情况、航班预订等。
实体集(entity set)是具有相同属性的同类实体的集合。高校的教师、企业的员工、某人拥有的书籍、某酒店的全部房间……这些都可以作为实体集。
在建模过程中,我们经常使用术语“实体集”,而不直接指定实体的一个特定部分。实体集的扩展(extension)代表属于这个实体集的实际上的集合。例如:实际上存在于大学中的讲师形成了“讲师”实体集的扩展。实体集和实体集扩展的差别类似于第2章所述的“关系”与“关系实例”的差别。
实体集未必是不交(disjoint)的。如:在同一个E-R模型中,可以同时定义“人”、“讲师”、“学生”几个实体集。很明显,这几个实体集有所重叠。一个“人”实体可以属于“讲师”或“学生”实体集。
实体通过一组属性(property / attribute)来代表。属性为实体集的每个成员所拥有。为实体集指定的属性表达了数据库为实体集中的每个实体都存储的相近的信息。然而,每个实体的每个属性的值(value&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值