数据库设计过程
概念设计 conceptual-design
功能需求说明 specification of functional requirement
逻辑设计阶段 logical design
物理设计阶段 physical design
设计数据库模式
数据库模式应避免的两个缺陷:
冗余 例如,每一次开课我们都存储课程编号和课程名称,那么每一次开课都冗余了课程编号和名称。理想的情况下,信息应该只出现在一个地方。
不完整 如果只在课程表存储所有的课程信息,那么每次开课都要存储一份课程的所有信息,新课程的信息无法独立展示。
实体联系模型 entity-relationshio E-R
实体集 entity set 具有相同类型(相同属性)的实体的集合,实体集一般指实体之间的关系
实体集的外延 extension 实体集的实体的实际集合
实体集通过一组属性(attribute)来表示,每个属性(attribute)都有一个值(value)
实体 entity 代表所有可明确识别的个体,每个实体都有一组属性,其中一些属性的可以唯一的标识一个实体
联系集 relationship set 相同类型的联系的集合
联系 relationship 多个实体间的相互关联
实体集的关联称为参与(pariticipate),可以说E1,E2.。。En参与了联系集R
实体在联系中扮演的功能称为实体的角色,如果同样的实体集以不同的角色参与同一联系集,这种联系集合称为自环recursive。
属性
属性可以分为简单和复合属性 比如name可以由first_name,middle_name,last_name组成
属性的值可分为单值和多值,即一个值和多个值,比如一个人可能有多个手机号
派生属性 比如教师对象有一个值学生集合,学生集合的数量统计就是一个派生的属性
约束
映射 mapping。映射基数 mapping cardinality 一个实体通过联系可以关联的实体数量
一对一 one-to-one 关系A有且仅有一个实体与关系B中的实体关联,反之,关系B有且只有仅有一个实体与关系A关联
一对多 one-to-many 关系A中实体可以与关系B中任意数量的实体关联,反之,关系B中实体只能与关系A中一个实体关联
多对多 many-to-many 关系A中实体可以与关系B中任意数量实体关联,反之,关系B中实体可以与关系A中任意数量实体关联
实体集删除冗余
实体集 instructor包含属性 ID,name,dept_name以及salary
实体集 department包含属性dept_name,building以及budget
属性dept_name在实体集instructor和department中都存在,所以说它是冗余的
设计时避免由于关联联系集而造成属性的冗余
实体-联系图 E-R
同一建模语言 UML. TODO
类图 class diagram 类图类似于E-R图
用况图 use case diagram 用户和系统之间的交互,用户所执行的任务重的每一步操作
活动图 activity diagram 系统不同部分之间的任务流
实现图 implementation diagram 在软件和硬件层面说明系统的各组成部分