数据库设计.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生信息
教员信息
课程信息
通知
标识实体的属性
学生信息
学号、姓名、性别、年龄、班级
教员信息
工号、姓名、性别、年龄、教龄、职称
课程信息
课程号、名称、学时、学分
通知
标题、内容
实体之间的关系
大部分实体并不是孤立的,它们之间存在着各种关 系。
丈夫与妻子之间 一对一的关系
班级与学生之间 一对多的关系
学生与课程之间 多对多的关系
可将“一方”实体的主关键字纳入“n方”实体转 换后的数据表中作为“外部关键字”,同时把关系
的属性也一并其中。
一对多中的关系转换为数据表
学号
姓名
年龄
性别
N
学生
班级(班级编号、班级名称)
属于
学生(学号、姓名、性别、年龄、班 级编号)
班级
1
编号
名称
多对多的关系转换为数据表
如果实体A和实体B之间是多对多的关系,必须按 以下原则转换化数据表:
现实世界
什么是数据库设计
信息世界
客户
数据(电脑)世界
姓名
年龄
性别
比赛
时间
地点
参赛队
数据库设计的步骤
数据库设计第一步:标识实体
数据库中的数据对象,称为实体。 实体有一个或多个属性。 在需求分析阶段,需要知道要在数据库中存储哪
些信息。 数据库设计的第一步:标识实体。
标识实体
标识学生选课系统中的实体对象
学生选课系统中各实体之间的关 系
学生信息
一名学生可以选修多门课程 一门课程由一个或多名学生选修
课程信息
教员信息
一名教员讲授一至多门课程 一门课程只能由一名教员讲授
数据库设计第二步:绘制E-R图
E-R图(Entity Relationship Diagram),中文称 为“实体-关系图”,提供了表示实体、属性和关 系的图形符号。
要添加ID编号列,它没有实际含义,用于做主键。 例如:通知数据表中除了标题、内容外,还应加一个ID 主键列,用以区分每条记录。
3. 如果实体之间有某种关系,还要在表中添加外键。
学生选课系统中各实体转换为数 据表
学生信息
PK 学号
姓名 性别 年龄 班级
教员信息
PK 工号
姓名 性别 年龄 职称 教龄
课程信息
数据库的设计
总结
本章任务
学习设计数据库的步骤 绘制学生选课系统数据库的E-R图 把学生选课系统数据库的E-R图转化为表 用三大范式规范数据库设计
如何标识实体对象 如何画E-R图 如何将E-R图转换为数据表 数据规范化设计—三大范式
本章目标
学生选课系统
为什么需要数据库设计
复杂的数据库需要规范化设计。
依赖)。
第三范式
职工信息
职工信息 职务信息
满足三大范式的工资数据表
提示:仓库的属性包括:地点、面积等;商品的属性 包括:商品名称、价格等。
仓库号
地点
面积
仓库
1
存放 n
商品
数量
商品号
商品名
价格
数据库设计第三步:E-R模型转 换为数据表
将E-R模型转换为数据表的基本原则:
1. 将各实体转换为对应的表,将各属性转换为各表对应 的列。
2. 标识每个表的主键列,需要注意的是:没有主键的表
2. 公司有多名职工,每一名职工有:职工号、姓名、 性别、职务等
3. 公司按照工时和小时工资率支付工资,小时工资率 由职工的职务决定
为什么要数据规范化
表中存在大量冗余信息 插入数据、更新数据、删除数据时都可能会引
发异常
第一范式
第一范式的目标是确保每列的原子性。即数据 表中的字段都是单一属性的,不可再分。
第二范式
第二范式是在第一范式的基础上,确保表中的每 列都和主键相关。即要求一个表只描述一件事情。
职工信息
工程信息
劳资信息
第二范式
工程信息
职工信息 劳资信息
第三范式
第三范式是在第二范式的基础上,确保表中每 列都和主键直接相关,而不是间接相关。间接 相关又称为传递依赖。
假设数据表中A、B、C三列,如果A->B,而B->C ,则A->C。我们称A与C之间存在间接关系(传递
实体名
实体表示
属性名
属性表示
关系名
关系表示
学生选课系统中的E-R图
学号
姓名
性别
工号
姓名
性别
学生信息
年龄
班级
教员信息
年龄
教龄
职称
课程信息
课程号
课程名称
课时
学分
通知
标题
内容
E-R图如何表示实体之间的关系
姓名
年龄
职业
学号
姓名
年龄
性别
子女数
1
1
丈夫 夫妻 妻子
婚龄
姓名
年龄
职业
图1.6 一对一的实体关系
N
名称
课时
学分
学生
PK 学号
姓名 性别 年龄 班级
学生选课系统的数据表
通知 PK ID
教员 PK 工号
标题
姓名
内容
年龄
职称
教龄
选课
PK ID
FK1 学号 FK2 课程号
课程
PK 课程号
名称 课时 学分 FK1 工号
数据规范化
假设某建筑公司要设计一个数据库。公司的业 务规则概括说明如下:
1. 公司承担多个工程项目,每一项工程有:工程号、 工程名称、施工人员等
学生 属于 班级
1
编号
名称
图1.7 一对多的实体关系
E-R图如何表示实体之间的关系
学号
姓名
年龄
性别
N
学生 选课 课程
N
课程号
名称
课时
学分
学生选课系统完整的E-R图
学号
姓名
性别
工号
姓名
性别
N 1
年龄
N
学生信息
选课
班级
年龄
讲授
教员信息
职称
教龄
N
课程信息
课程号
课程名称
课时
学分
通知
标题
内容
课堂练习
画出仓库--商品的E-R图
1. 必须对“关系”单独建立一个数据表。 2. 该数据表的属性中至少要包括实体A和实体B的主关键
字作为外键,并且如果关系有属性,也要归入这个关系 中。
多对多的关系转换为数据表
学号
姓名
年龄
性别
学生
学生(学号、姓名、性别、年龄)
N
选课
课程(课程号、名称、课时、学分)
N
选课(编号、学号、课程号)
课程
课程号
3. 直接将关系转换为数据表,表中包含两个实体的主
关键字,如果关系有属性也一并加入。
一对一的关系转换为数据表
姓名
年龄
职业
子女数
1
1
来自百度文库
丈夫 夫妻 妻子
丈夫(身份证号,姓名,职业,出生日期)
婚龄
妻子(身份证号,姓名,职业,出生日期,
丈夫身份证号,子女数,婚龄)
姓名
年龄
职业
一对多的关系转换为数据表
如果实体A和实体B之间是一对多的关系,关系转 换方法为:
PK 课程号
课程名称 课时 学分
通知 PK ID
标题 内容
如何将E-R图中的关系转换为数 据表
如果实体A和实体B之间存在一对一的关系,将ER图转换为数据表有以下三种方法:
1. 把A实体的主关键字加入到B实体转换后的数据 表中作为外键,如果关系有属性也一并加入。
2. 把B实体的主关键字加入到A实体转换后的数据 表中作为外键,如果关系有属性也一并加入。