软考-软件设计师:数据库技术基础-数据库设计过程概述(概念结构设计、逻辑结构设计、候选码/候选键建、主码/主键、主属性与非主属性、全码/ALL-Key) 作者:马育民 • 2025-04-29 14:56 • 阅读:10016 # 设计过程 [](https://www.malaoshi.top/upload/0/0/1GW128Q4mK84.png) 分三个阶段: - 概念结构设计:设计 **ER模型**(与数据库无关) - 逻辑结构设计:转换规则、规范化理论(**关系规范化**),设计二维表结构 - 物理设计SQL: # 概念结构设计 [](https://www.malaoshi.top/upload/0/0/1GW128jNSNfT.png) ##### 集成的方法: - 多个局部E-R图一次集成。 - 逐步集成,用累加的方式一次集成两个局部E-R。 ##### 集成产生的冲突及解决办法: - 属性冲突:包括 **属性域冲突** 和 **属性取值** 冲突 - 属性域冲突:A模块的年龄范围是 `18-25`,B模块的年龄范围是 `0-65` - 属性取值:A模块的性别是 `男、女`;B模块的性别是 `0`、`1` - 命名冲突:包括同名异义和异名同义。 - 同名异义:A模块的 `name` 表示人名;B模块的 `name` 表示商品名 - 异名同义:A模块的性别用 `sex`,B模块的用户数用 `gender` - 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的 **属性个数** 和 **属性排列次序** 不完全相同。 - **销售部** 的E-R图中,`Employee` 实体包含如下属性: `emp_id`, `name`, `sales` - **人事部的**E-R图中,`Employee` 实体包含如下属性: `emp_id`, `name`, `department`, `salary`, `hire_date` ### 产物:E-R图 E-R图,实体关系图 [](https://www.malaoshi.top/upload/0/0/1GW12FQLJNF1.png) - 实体:实体是现实世界中可以区别于其他对象的事件或事物。矩形表示 - 实体集:实体的集合 - 属性:属性是实体某方面的特性。椭圆形表示 - **实体间联系**:实体的联系分为 **实体内部** 的联系和 **实体与实体间** 的联系,分三个情况:一对一、一对多、多对多。菱形表示 ##### 实体间联系类型 [](https://www.malaoshi.top/upload/0/0/1GW12FfLIJ1S.png) - 一对一:菱形上有 `1:1`,一个班级有一个班长 - 一对多:菱形上有 `1:*` 或 `1:n`,一个班主任对多个学生 - 多对多:菱形上有 `*:*` 或 `m:n`,多个任课老师对多个学生 ### 属性分类 ##### 简单属性 和 复合属性 - 简单属性:是原子的,**不可再分的**; - 复合属性:可以细分为更小的部分(即划分为别的属性) ##### 单值属性 和 多值属性 - 定义的属性对于一个特定的实体都只有单独的一个值,称为单值属性; - 在某些特定情况下,一个属性可能对应一组值,称为多值属性。 ##### NULL属性 表示无意义或 **不知道** ##### 派生属性 可以从 **其他属性得来**。如:年龄属性,是根据生日计算的 ### 二元联系(实体内部) [](https://www.malaoshi.top/upload/0/0/1GW12FsyWed6.png) 同一个实体集内的二元联系,如上图:两个球队比赛,两侧都是球队,而且是多对多 ### 三元联系(实体与实体间的联系) 两个以上不同实体集之间的联系(三元联系)多重度的确定(可根据语义直接转换) 以三元关系中的一个实体作为中心,假设另两个实体都只有一个实例: - 若中心实体只有一个实例能与另两个实体的一个实例进行关联,则中心实体的连通数为 `一` - 若中心实体有多于一个实例能与另两个实体实例进行关联,则中心实体的连通数为 `多` ##### 例子 [](https://www.malaoshi.top/upload/0/0/1GW12FmEJoAg.png) - P_D:表示一个病房有多个病人和多个医生,一个医生只负责一个病房,一个病人只属于一个病房。 - SP_P:表示供应商为多个项目供应多种零件,每个项目可用多个供应商供应的零件,每种零件可由不同的供应商供应。 ### 其他实体分类 [](https://www.malaoshi.top/upload/0/0/1GW12G06cWFS.png) - 弱实体:一个实体必须依赖另一个实体,如:家属与职工的联系,附件与邮件。 - 特殊化:实体一方面具有一些共性,另一方面还具有各自的特性,一个实体集可以按照某些特征区分为几个子实体。`经理`、`中层领导`、`基层员工`,都具有 `员工` 的共性,还有各自的特性 - 聚集:一个联系连接另一个联系。(如果存在多个实体和多个联系,结构会变得复杂,难以清晰表达某些现实世界的关系。此时就可以通过聚集来 **简化模型**) # 逻辑结构设计 ### 常见数据模型 - 层次模型 - 网状模型 - **关系模型(考)** - 面向对象模型 ### 数据模型三要素 - 数据结构:数据类型 - 数据操作:增删改查 - 数据的约束条件:主键、唯一约束 ### 关系表的3种类型 - 基本关系(通常又称为 **基本表** 或 **基表**):实际存在的表,实际存储数据的逻辑表示。 - 查询表:查询结果对应的表。 - **视图表(视图)(考)**:由基表或其他视图表导出的表,本身不独立存储,数据库只存放它的定义,常称为虚表。 ### 其他概念 - 目/度:关系模式中 **属性的个数**。 - **候选码/候选键建** (多组):**唯一标识一个记录的字段(可以有多个)**,如:学号、身份证号 - **主码/主键**(1组):从 候选码/候选键建 中选 **一个** - **主属性与非主属性**:**组成候选码的属性** 就是主属性,其它的就是非主属性。 - 外码/外键:表中某个字段,是另一个表的主键 - **全码/ALL-Key**:关系模式的所有属性组是这个关系的候选码,即:**表中所有字段都是主属性** ### 约束 - 实体完整性约束(**主键**:唯一且非空) - 参照完整性约束(**外键**:其他关系主键或者为空) - 用户自定义完整性约束 (自定义),如年龄是 `0-120`,不能是负数 ### 扩展知识 - 视图:保证数据安全,用于查询。 - 触发器:CRUD操作时会自动执行,保证数据的正确。 - 存储过程:简化复杂的操作调用,常见操作什么都能做。 - 索引:提高查询效率。 ### 实体型转换关系模式 [](https://www.malaoshi.top/upload/0/0/1GW12GtWGFVv.png) ##### 一对一联系的转换有2种方式 - 独立的关系模式:并入两端主键及联系自身属性,即:创建单独表,保存两个表的关系,该表主键:任一端主键 - 归并(任意一端):一个表增加一个字段,保存 另一个表 的主键 例子: [](https://www.malaoshi.top/upload/0/0/1GW12Go9zfQe.png) ##### 一对多联系的转换有2种方式 - 独立的关系模式:并入两端主键及联系自身属性,即:创建单独表,保存两个表的关系。该表主键:多端主键 - 归并(多端):`多端` 的表增加一个字段,保存 `一端` 的主键 例子: [](https://www.malaoshi.top/upload/0/0/1GW12GowiToh.png) ##### 多对多联系的转换 只有1种方式 独立的关系模式:并入两端主键及联系自身属性,即:创建单独表,保存两个表的关系。该表主键:**两端主键的组合键** 例子: [](https://www.malaoshi.top/upload/0/0/1GW12Gq9SHEm.png) 学生:学号(主键),姓名,性别,年龄 课程:课程号(主键),课程名,授课老师 新建考试,保存两者关系:`课程号,学号` 主键,成绩 # 题 关系规范化在数据库设计的()阶段进行。 A、需求分析 B、概念设计 C、逻辑设计 D、物理设计 ### 答案 C # 题 某高校信息系统设计的分E-R图中,人力部门定义的职工实体具有属性:职工号、姓名、性别和出生日期;教学部门定义的教师实体具有属性:教师号、姓名和职称。这种情况属于(),在合并E-R图时,()解决这一冲突。 A、属性冲突 B、命名冲突 C、结构冲突 D、实体冲突 A、职工和教师实体保持各自属性不变 B、职工实体中加入职称属性,删除教师实体 C、教师也是学校的职工,故直接将教师实体删除 D、将教师实体所有属性并入职工实体,删除教师实体 ### 分析第一问 没有 `实体冲突` ### 答案 C B # 题 数据库的安全机制中,通过提供共()供第三方开发人员调用进行数据更新,从而保证数据库的关系模式不被第三方所获取。 A、触发器 B、存储过程 C、视图 D、索引 ### 答案 B 因为题干中支持 `共开发人员调用进行数据更新`,所以不是`视图` 原文出处:http://malaoshi.top/show_1GW12GxXe633.html