数据库系统概论 - 数据库设计
数据库设计,广义的讲,即设计数据库及应用系统的设计,即设计整个数据库应用系统;狭义的讲,即设计数据库本身,即设计数据库的各级模式并建立数据库,是数据库应用系统设计的一部分
数据库设计是指对一个给定的应用环境,设计优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,是之能够有效的存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求
数据库设计的基本步骤
设计阶段 | 工具 | 大致工作 |
---|---|---|
需求分析阶段 | 数据字典 | 了解分析用户的需求,如做的不好则会导致频繁的修改 |
概念结构阶段 | 概念模型、E-R 模型 | 对用户需求进行分析,形成一个独立于 DBMS 的概念模型 |
逻辑结构阶段 | 将概念结构转换为某个 DBMS 所支持的数据模型,并进行优化 | |
物理结构阶段 | 为逻辑结构选择一个最适合应用环境的物理结构(存储结构和存储方法),也就是选择索引 | |
数据库实施阶段 | 根据逻辑结构和物理结构建立具体数据库,增添数据 | |
数据库维护和运行阶段 | 对数据库进行后续维护 |
关于数据库中数据的描述,即元数据,而不是数据本身
数据字典包括:数据项、数据结构、数据流、数据存储和处理过程
- 数据项:不可再分的数据单位
- 数据结构:数据之间的组合关系,可以由若干数据项组成、若干数据结构组成、若干数据项和数据结构组成
- 数据流:数据结构在系统内的传输路径
- 数据存储:数据结构停留和存留的地方,数据的来源和去向
- 处理过程:描述处理过程的说明性信息
两个实体型之间的联系:
- 一对一(1 : 1):实体集 A 中每一个实体,实体集 B 中至多有一个(可以无)实体与之对应,反之,实体集 B 中没一个实体,实体集 A 中至多有一个实体与之对应,如:一个班级只有一个班长,一个班长只在一个班任职
- 一对多(1 : n):实体集 A 中每一个实体,实体集 B 中有 n 个实体(n >= 0)与之联系,反之,实体集 B 中每一个实体,实体集 A 中至多只有一个实体与之对应,如:一个班级有多个学生
- 多对多(m : n):实体集 A 中没一个实体,实体集 B 中有 n 个实体(n >= 0)与之联系,反之,实体集 B 中每一个实体,实体集 A 中有 m 个实体(m >= 0)与之联系,如:一门课有多门学生选修,一个学生选修多门课
E-R 图的集成 E-R 图集成步骤
- 合并 E-R 图,生成初步初步 E-R 图
- 消除不必要冗余,设计基本 E-R 图
1. 属性冲突
- 属性域冲突:属性值的类型、取值范围和取值集合不同,如:年龄可以用数值也可以用字符
- 属性取值冲突:属性的单位不同,如:有的单位用斤,有的用公斤
- 同名异义:不同意义的对象在不同的局部应用中具有相同的名字
- 异名同义:相同意义的对象在不同的局部应用中具有不同的名字
- 同一对象在不同应用中具有不同的抽象
- 同一实体在不同子系统的 E-R 图中所包含的属性个数和属性排列次序不完全相同
- 实体间的联系在不同 E-R 图为不同类型
【数据库系统概论 - 数据库设计】实体型间的联系有以下不同的情况:
- 一个 1 : 1 的联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
- 一个 1 : n 的联系可以转换为一个独立的关系模式,也可以与 n 端对应的关系模式合并
- 一个 m : n 的联系可以转换为一个关系模式
- 三个或三个以上实体间的一个多元联系可以转换为一个关系模式
- 具有相同码的关系模式可以合并
推荐阅读
- CTF日记|[GXYCTF2019]BabySQli
- sql|最新系统漏洞--Metinfo SQL注入漏洞
- Java面试题大全|【备战面试】面试题打卡——Mysql相关面试题总结
- 数据库|TiDB Online DDL 在 TiCDC 中的应用丨TiDB 工具分享
- 数据库|TiDB 5.4 发版丨新功能解读
- 数据库|MVCC 时光机(在 TiDB 的时空自由穿梭丨渡渡鸟复兴会赛队访谈)
- 数据库|TiDB Hackathon 2021 — pCloud : 做数据库上的 iCloud丨pCloud 团队访谈
- 开源分布式关系型数据库|平安科技从 Oracle 迁移到 UbiSQL 的实践
- sql|把复杂交给我们,把简单还给你丨TiVP 让 SQL 执行计划可视化