《SQL Server 2005数据库案例教程教学课件严波第7章数据库的设计》由会员分享,可在线阅读,更多相关《SQL Server 2005数据库案例教程教学课件严波第7章数据库的设计(29页珍藏版)》请在金锄头文库上搜索。
1、第七章,数据库的设计,课程内容回顾,数据库有哪些基本操作? 建库 建表 加约束 创建登录帐户 基本的数据操纵语句有哪些?语法是? 增(INSERT) 删(DELETE) 改(UPDATE) 查(SELECT) 常用的聚合函数有哪些? 表连接分为哪几种类型?,本章目标,了解设计数据库的步骤 掌握如何绘制数据库的E-R图 理解数据库的规范化三大范式,规范数据库设计的必要性,设计前提 建楼需要根据图纸,户型设计好坏直接影响住宅质量 实际项目中的数据库需要规范化的设计,什么是数据库设计?,什么是数据库设计? 数据库设计就是规划和结构化数据库中的数据对象 以及这些数据对象之间关系的过程。,学生成绩数据库
2、结构,数据库设计的重要性,良好的数据库设计 节省数据的存储空间 能够保证数据的完整性 方便进行数据库应用系统的开发,糟糕的数据库设计: 数据冗余、存储空间浪费 内存空间浪费 数据更新和插入的异常,软件项目开发周期,需求分析阶段:分析客户的业务和数据处理需求; 概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整; 详细设计阶段:将E-R图转换为多张表,进行逻辑设计,并应用数据库设计的三大范式进行审核; 代码编写阶段:选择具体数据库进行物理实现,并编写 代码实现前端应用; 软件测试阶段: 安装部署:,现实世界,数 据 库,设计数据库的方法和步骤,收集信息: 与该系统有关人员进行交流、
3、坐谈,充分理解数据库需要完成的任务,学生管理系统的基本功能: 基本信息维护,后台数据库需要存放系,班级,学生和课程等基本数据 学生选课和成绩查询,后台数据库需要存放学生选课和成绩的基本数据,设计数据库的方法和步骤,标识对象(实体Entity) 标识数据库要管理的关键对象或实体,实体一般是名词: 系,班级,学生,课程,设计数据库的方法和步骤,系 系号 系名 系主任 电话,班级 班号 班级名 人数 系号,学生 学号 姓名 年龄 系号 班级 性别 住址 电话,课程 课程编号 课程名称 学分,标识每个实体的属性(Attribute),设计数据库的步骤,标识对象之间的关系(Relationship),系
4、与班级、学生之间具有主从关系:我们需要知道每个班级及学生是属于哪个系的; 一个学生可以选多门课程,每个课程也可有多个学生选择;,绘制E-R图,E-R(EntityRelationship)实体关系图,绘制E-R图,属于,学生,姓名,学号,系号,系名,系,绘制E-R图,映射基数,一对一,X X X X,Y Y Y Y,X X X X,Y Y Y Y,一对多,X X X X,Y Y Y,多对一,X X X X,Y Y Y Y,多对多,1,M,M,1,1,M,学号,姓名,性别,年龄,住址,学号,课程号,成绩,系号,电话,班号,学生(student),学习,属于,属于,属于,选课(grade),系(d
5、epart),电话,系主任,系名,系号,M,班级(class),班名,班号,人数,系号,1,绘制E-R图,学生管理E-R图,课程(course),课程名,课程号,学分,分解,1,M,如何将E-R图转换为表,将各实体转换为对应的表,将各属性转换为各表对应的列 标识每个表的主键列,需要注意的是:没有主键的表添加ID编号列,它没有实际含义,用于做主键或外键,例如学生表中的“studID”列,班级表中添加“classID”列,系信息表中的“deptid”列 在表之间建立主外键,体现实体之间的映射关系,将E-R图转化为数据表,Class(班级)表,Student(学生)表,ClassID(班级号)-主键
6、 Clname (班级名) Ccount (人数) DeptID (系号),StudID(学号)-主键 Sname (姓名) Ssex(性别) Sage(年龄) Saddr(住址) Stelephone(电话) DeptID (系号) ClassID (班号),Depart (系)表,DeptID (系号)-主键 Dname (系名) Dleader (系主任) Dtelephone (电话),CID(课程号)-主键 Cname (课程名) Crecord (学分),Grade(选课)表,StudID(学号) -主键 CID (课程号)-主键Score (成绩),Course(课程)表,Dep
7、tID主键,ClassID主键,StudID主键,CID主键,StudID和CID共同是主键,将E-R图转化为数据表,Class(班级) 表,Student(学生)表,ClassID (班级号) Clname (班级名) Ccount (人数) DeptID (系号),StudID (学号) Sname (姓名) Ssex(性别) Sage(年龄) Saddr(住址) Stelephone(电话) DeptID (系号) ClassID (班号),Depart (系) 表,DeptID (系号) Dname (系名) Dleader (系主任) Dtelephone (电话),Course(课
8、程) 表,CID (课程号) Cname (课程名) Crecord (学分),Grade选课) 表,StudID (学号) CID (课程号) Score (成绩),添加各表之间的关系,数据规范化,仅有好的RDBMS并不足以避免数据冗余,必须在数据库的设计中创建好表的结构 Dr E.F.codd 最初定义了规范化的三个级别,范式是具有最小冗余的表结构。这些范式是: 第一范式(1st NF First Normal Form) 第二范式(2nd NFSecond Normal Form) 第三范式(3rd NF Third Normal Form),第一范式 (1st NF),课程名称,学时数
9、,数据结构,数据库原理,48 24,30 15,第一范式的目标是确保每列的原子性 如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF),讲课 实验,课程名称,数据结构,数据库原理,48 24,30 15,讲课时数 实验时数,第二范式 (2nd NF),如果一个关系满足1NF,并且除了主键以外的其他列,都依赖与该主键,则满足第二范式(2NF) 第二范式要求每个表只描述一件事情,Student,系号,X01,Student,字 段,例 子,学号,姓名,S001,张三,Course,字 段,例 子,课程号,课程名,C01,数据结构,系号,X01,第三范式 (3rd N
10、F),如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF),Student,Student,字 段,例 子,学号,姓名,S001,张三,Course,字 段,例 子,课程号,课程名,C01,数据结构,Depart,字 段,例 子,系号,X01,系号,X01,函数依赖,函数依赖:当属性间存在X-Y,Y-X,Y-Z, 称Z传递依赖与X XY:称Y依赖X或X决定Y。如:学号-姓名, 姓名依赖于学号,数据规范化,示例1:对学生关系模式进行分解,逐步分解为1NF、2NF、3NF 例如: 学生 (学号,姓名,住址,电话,班名,系系名,课程号,课程名,学分,成绩)
11、该关系模式的每一属性对应的域为简单域,符合第一范式,数据规范化,该关系模式满足函数依赖集为: 学号姓名, 学号住址, 学号电话 , 学号班名, 学号系名 (学号,课程号)成绩 课程号课程名,课程号学分 可分解为以下三个2NF 学生1( 学号,姓名,住址,电话,班名,系名) 课程(课程号,课程名,学分) 选课(学号,课程号,成绩) 该三个关系的非主属性对码(主属性)完全依赖,均为2NF,数据规范化,分析关系模式 “学生” 存在学号班名, 班名-系名, 系名/班名系名对学号的传递依赖,所以不符合3NF, 所以关系模式 ”学生1” 不是第三范式 关系模式”学生”分解为: 学生2( 学号,姓名,住址,
12、电话,班名) 班级 (班名,系名),规范化和性能的关系,为满足某种商业目标,数据库性能比规范化数据库更重要 通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间 通过在给定的表中插入计算列(如成绩总分),以方便查询 进行规范化的同时,还需要综合考虑数据库的性能。,总结 1-1,在需求分析阶段,设计数据库的一般步骤为: 收集信息 标识对象 标识每个对象的属性 标识对象之间的关系 在概要设计阶段和详细设计阶段,设计数据库的步骤为: 绘制E-R图 将E-R图转换为表格 应用三大范式规范化表格,总结 1-2,为了设计结构良好的数据库,需要遵守一些专门的规则,称为数据库的设计范式。 第一范式(1NF)的目标:确保每列的原子性。 第二范式(2NF)的目标:确保表中的每列,都和主键相关 。 第三范式(3NF)的目标:确保每列都和主键列直接相关,而不是间接相关 。,