数据库概念结构设计

目录

一、概念结构设计概述

1. 概念结构设计的目标

2. 方法:E-R 图法

3. E-R 图对事物的抽象的三种方法

4. 超类、子类的概念

二、 概念结构设计的一般步骤

三、 一个完整的E-R图示例


 

概念结构设计是数据库设计的关键阶段,其目标是建立一个抽象的、与具体数据库管理系统(DBMS)无关的概念模型,以清晰地表示用户的数据需求和数据之间的关系。这个概念模型通常使用 E-R 图(Entity-Relationship Diagram)来表示。


一、概念结构设计概述

1. 概念结构设计的目标

  • 准确地捕捉现实世界的信息: 将用户的数据需求转化为信息结构,真实地反映现实世界中的事物及其联系。
  • 提供一种抽象的、与 DBMS 无关的表示: 概念模型独立于任何特定的 DBMS,便于数据库移植和修改。
  • 作为进一步设计的基础: 概念模型是逻辑结构设计和物理结构设计的基础,为后续设计提供指导。
  • 便于用户理解: 提供一个高层次的抽象,便于开发团队、用户及其他利益相关者之间的沟通。

2. 方法:E-R 图法

E-R 图法是概念结构设计中最常用的方法,由 P.P. Chen 在 1976 年提出。它使用三种基本成分来描述现实世界的信息:

  • 实体型(Entity Type): 具有相同属性的实体的集合。例如,“学生”、“课程”、“教师”等。
  • 属性(Attribute): 实体或联系所具有的性质。例如,学生实体可以具有“学号”、“姓名”、“年龄”等属性。
  • 联系(Relationship): 实体之间的连接或关系。例如,“学生”和“课程”之间可以有“选课”联系。

E-R 图使用以下符号表示这些成分:

  • 矩形: 表示实体型。
  • 椭圆形: 表示属性。
  • 菱形: 表示联系。
  • 箭头或线段: 表示联系的方向和类型(如 1:1, 1:N, M:N)。

 

实体之间的联系分为三种类型:

  • 一对一联系(1:1)
  • 举例:一个班级只有一个班主任,一个班主任也只能管理一个班级,则班级”与班主任”之间是一对一联系。
  • 一对多联系(1:N)
  • 举例:一个班级可以有多个学生,但一个学生只能属于一个班级,则班级”与学生”之间是一对多联系。
  • 多对多联系(M:N)
  • 举例:一个学生可以选择多门课程,一门课程也可以被多个学生选择,则学生”与课程”之间是多对多联系。

 

 

3. E-R 图对事物的抽象的三种方法

E-R 图通过以下三种方式对现实世界的事物进行抽象:

  • 分类(Classification): 将具有相同特征的事物归为一类,形成一个实体型。例如,将所有的学生归为“学生”实体型。
  • 聚集(Aggregation): 将几个不同实体型的属性聚集在一起,形成一个更高层次的实体型。例如,将“学生”实体型和“成绩”实体型聚集为“学生成绩”实体型。
  • 概括(Generalization): 将几个具有共同属性的实体型概括为一个更一般的实体型,形成超类和子类的关系。例如,“本科生”和“研究生”可以概括为“学生”超类。

4. 超类、子类的概念

  • 超类(Superclass): 也称为父类,是一个更一般的实体型,它包含了多个子类的共同属性和联系。
  • 子类(Subclass): 也称为子类,是继承自超类的更具体的实体型,它除了具有超类的属性和联系外,还可以有自己的特殊属性和联系。

例如,在“学生”超类下,可以有“本科生”和“研究生”两个子类。“学生”超类具有“学号”、“姓名”等共同属性,而“本科生”子类可以有自己的特殊属性“班级”,“研究生”子类可以有自己的特殊属性“导师”。


二、 概念结构设计的一般步骤

概念结构设计工作步骤包括:选择局部应用、注意设计分E-R图、和E-R图合并。

1. 选择局部应用

根据系统的功能需求,将整个系统划分为若干个局部应用。每个局部应用都应该是一个相对独立的功能模块,例如在一个企业管理系统中,可以将销售管理、采购管理、库存管理等作为不同的局部应用。选择局部应用时,要考虑到系统的功能划分和用户的使用习惯,以便更好地进行后续的设计。

2. 逐一设计分 E - R 图

  • 针对每个局部应用,进行详细的需求分析,确定该局部应用中涉及的实体、实体的属性以及实体之间的联系。
  • 例如,在销售管理局部应用中,可能有 “客户” 实体,其属性有 “客户编号”“客户名称”“联系人” 等;“产品” 实体,其属性有 “产品编号”“产品名称”“价格” 等;以及 “销售订单” 实体,其属性有 “订单编号”“订单日期”“金额” 等。“客户” 与 “销售订单” 之间存在 “下单” 联系,“产品” 与 “销售订单” 之间存在 “包含” 联系。
  • 根据这些分析结果,绘制出每个局部应用的分 E - R 图,清晰地展示局部应用中的数据结构和关系。

3. E - R 图合并

在完成各个局部应用的分 E - R 图设计后,需要将这些分 E - R 图合并为一个全局 E - R 图,以形成整个数据库系统的概念模型。合并过程并非简单地将各个分 E - R 图进行叠加,而是要综合考虑各个局部应用之间的关系,消除其中存在的不一致性和冲突,确保全局 E - R 图能够准确、完整地反映整个系统的数据需求。这一步骤需要仔细分析各个分 E - R 图中实体、属性和联系的定义,找出它们之间的相同点和不同点,通过合理的调整和整合,使全局 E - R 图在逻辑上保持一致,同时满足系统的整体功能要求。

合并时的冲突解决

  • 属性冲突:包括属性值域冲突和属性取值单位冲突。例如,在不同的局部应用中,“年龄” 属性可能在一个应用中定义为整数类型,而在另一个应用中定义为字符串类型,这就产生了值域冲突;或者 “重量” 属性在一个应用中以 “千克” 为单位,在另一个应用中以 “克” 为单位,这是取值单位冲突。解决方法是统一属性的定义和取值范围。
  • 命名冲突:分为同名异义冲突和异名同义冲突。同名异义是指不同的实体或属性具有相同的名称,但含义不同;异名同义则是指不同的名称表示相同的含义。例如,在不同的局部应用中,“部门” 这个词可能既表示公司的行政部门,又表示产品的研发部门,这是同名异义冲突;而 “职工” 和 “员工” 表示的是同一类对象,这是异名同义冲突。对于命名冲突,需要通过协商和统一命名规则来解决。
  • 结构冲突:包括同一对象在不同局部应用中具有不同的抽象,以及实体之间的联系在不同局部应用中呈现不同的类型。例如,在一个局部应用中,“产品” 被抽象为实体,而在另一个局部应用中,“产品” 被作为 “订单” 实体的一个属性,这就是结构冲突中的不同抽象问题;又如,“学生” 与 “课程” 之间的联系在一个局部应用中是多对多联系,而在另一个局部应用中被定义为一对多联系,这是联系类型的结构冲突。解决结构冲突需要对不同的结构进行调整和统一,以确保概念模型的一致性。

优化操作

  • 实体类型的合并:如果两个或多个实体具有相似的属性和行为,并且在系统中具有相同的作用,可以考虑将它们合并为一个实体。例如,“临时工” 和 “正式工” 实体,它们都具有 “姓名”“年龄”“工作岗位” 等共同属性,并且在工资计算、工作管理等方面有相似的操作,可以将它们合并为 “员工” 实体。
  • 冗余属性的消除:检查 E - R 图中是否存在可以通过其他属性推导出来的属性,如果存在,则可以将其删除。例如,在 “订单” 实体中,已经有 “产品单价” 和 “产品数量” 属性,那么 “订单金额” 属性可以通过 “产品单价” 乘以 “产品数量” 计算得出,因此 “订单金额” 就是冗余属性,可以考虑删除。
  • 冗余联系的消除:有些联系可能是多余的,例如通过其他联系可以间接得到的联系。例如,在一个学校管理系统中,“学生” 与 “课程” 之间通过 “选课” 联系已经建立了关系,而 “学生” 与 “教师” 之间通过 “授课” 联系也建立了关系,此时如果再存在 “学生” 与 “教师” 之间的直接联系,且这种联系可以通过 “选课” 和 “授课” 联系间接得到,那么这个直接联系就是冗余联系,可以考虑删除。通过这些优化操作,可以使概念模型更加简洁、清晰,提高数据库的性能和可维护性。

三、 一个完整的E-R图示例

某个工厂物资管理的概念模型。

物资管理涉及的实体有:

仓库:属性有仓库号、面积、电话号码

零件:属性有零件号、名称、规格、单价、描述

供应商:属性有供应商号、姓名、地址、电话号码、账号

项目:属性有项目号、预算、开工日期

职工:属性有职工号、姓名、年龄、职称

 

这些实体之间的联系如下:
(1) 一个仓库可以存放多种零件,一种零件可以存放在多个仓库中,因此仓库和零件具有多对多的联系。用库存量来表示某种零件在某个仓库中的数量。
(2) 一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,因此仓库和职工之间是一对多的联系。

 

完整的实体-联系图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值