MySQL数据库构建与管理 之 数据库设计概述.

Slides:



Advertisements
Similar presentations
因数与倍数 2 、 5 的倍数的特征
Advertisements

3 的倍数特征 抢三十

3 的倍数的特征 的倍数有 : 。 5 的倍数有 : 。 既是 2 的倍数又是 5 的倍数有 : 。 12 , 18 , 20 , 48 , 60 , 72 , , 25 , 60 ,
数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
联系方式 课程学习平台网址: 用户名:学号 ; 密码:身份证后 6 位.
Chapter 3: SQL.
Visual FoxPro 教程 淮海工学院计算机工程学院 巫晓琳.
——Windows98与Office2000(第二版) 林卓然编著 中山大学出版社
自定义汇总报表 演示 作者:栗川.
第七章 数据库基础 7.1 数据库系统概述 7.2 数据库的建立和维护.
C++面试笔试精要 张立伦 讲师的CSDN博客地址
資料庫系統 曾俊雄.
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
实用操作系统概念 张惠娟 副教授 1.
第1章 数据库基础知识 1.1 数据处理技术的发展 1.2 数据抽象与模型 1.3 关系模型.
数据库原理与应用 01 – 绪论 郑捷.
Database Principles & Applications
Oracle数据库 Oracle 子程序.
第二节 微积分基本公式 1、问题的提出 2、积分上限函数及其导数 3、牛顿—莱布尼茨公式 4、小结.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
在PHP和MYSQL中实现完美的中文显示
《Visual FoxPro程序设计基础》
MariaDB Spider分库分表引擎调研
面向对象建模技术 软件工程系 林 琳.
管理信息结构SMI.
SQL Injection.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
段磊 王慧锋 TEL: qq群: 数据库系统原理课程设计 实验环节2 段磊 王慧锋 TEL: qq群:
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
第17章 网站发布.
第二章 Java语言基础.
数据挖掘工具性能比较.
数据库设计是信息系统的核心组成部分 从现实世界到数据世界的转换的过程
工业机器人技术基础及应用 主讲人:顾老师
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
程序设计工具实习 Software Program Tool
第一章 函数与极限.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
解决变化问题的自底向上 流程建模方法 严志民 徐玮.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
微机系统的组成.
数 据 库 应 用 江西财经大学《数据库应用》 精品课程组 2016年 江西财经大学信息管理学院 《数据库应用》课程组.
SQL 范引娣.
VisComposer 2019/4/17.
商业分析平台-语义元数据 用友集团技术中心 边传猛 2013年 11月 06日.
VB与Access数据库的连接.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
实体描述呈现方法的研究 实验评估 2019/5/1.
Web安全基础教程
第 7 章 建立資料表與資料庫圖表.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
数据集的抽取式摘要 程龚, 徐丹云.
1.把下面的关系模式转化为E-R图 1)系(系号,系名,电话) 2)教师(工号,姓名,性别,年龄,系号)
第六章 数据模型转化为 关系数据库.
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
计算机绘图 AutoCAD2016.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
VB与Access数据库的连接.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
Chapter 14 Databases.
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

MySQL数据库构建与管理 之 数据库设计概述

课程安排 学时分配: 32学时(上课)+32学时(上机) 考核: 平时成绩=作业20%+实践30%+考勤50% 总成绩=平时成绩60%+考试成绩40%

内容一览 本章抛开MySQL讲解关系数据库设计的相关知识,以“选课系统”为例,讲解“选课系统”数据库的设计流程。 1 2 3 4 数据库概述 E-R图 4 关系数据库设计

1.1 数据库概述 简单地说:数据库(Database或DB)是存储、管理数据的容器; 1 严格地说:数据库是“按照某种数据结构对数据进行组织、存储和管理的容器”。 总结:数据永远是数据库的核心。 1 关系数据库管理系统 2 关系数据库 3 结构化查询语言SQL

1.1.1 关系数据库管理系统 基于“关系模型”的数据库管理系统称为关系数据库管理系统(简称为RDBMS)。随着关系数据库管理系统的日臻完善,目前关系数据库管理系统已占据主导地位。 添加标题 https://www.vertabelo.com/blog/jdd-2013-what-we-found-out-about-databases

1.1.1 关系数据库管理系统 截至目前,MySQL已经成功逆袭! 2014年2月数据库流行度排行榜 2019/1/18 6 数据库知识网站DB-Engines的数据库产品流行度排名更新如期而至。在4月份的榜单中, Oracle的积分再次增长27.2,以总分1560.59傲视群雄。MySQL在3月份再次逆袭,积分暴增47.24,成功反超微软SQL Server;而后者显示出疲软状态,积分降幅达到近几个月最大的40分,下滑到第三位。纵观榜单,前三位的数据库产品已经非常稳固,唯一悬念只在于第二位的争夺。 2014年2月数据库流行度排行榜 6

1.1.1 关系数据库管理系统 2014年3月数据库流行度排行榜 2019/1/18 7 在5月份的数据库流行度排名中,前三甲位置并未发生变化,但从积分情况来看,Oracle与SQL Server呈现出下滑趋势,尤其是后者,已经连续两个月出现积分大幅下滑的情况;MySQL“逆袭”,连续三个月积分呈两位数增长,目前已经坐稳榜眼位置; 2014年3月数据库流行度排行榜 7

1.1.1 关系数据库管理系统 2014年4月数据库流行度排行榜 2019/1/18 8 在本期排名中, Oracle虽然依旧占据榜首,但积分下滑趋势明显;“同门师弟”MySQL依旧排名第二, 在本期排名中, Oracle虽然依旧占据榜首,但积分下滑趋势明显;“同门师弟”MySQL依旧排名第二。 2014年4月数据库流行度排行榜 8

逆袭原因 1.1.1 关系数据库管理系统 MySQL提供的功能足够与商业数据库媲美 MySQL性能足够与商业数据库媲美 功能强大 逆袭原因 MySQL提供的功能足够与商业数据库媲美 性能优越 MySQL性能足够与商业数据库媲美 简单 MySQL体积小,便于安装 开源 MySQL源代码免费下载

1.1.1 关系数据库管理系统 通过“数据库管理系统”,数据库用户可以轻松地实现数据库容器中各种数据库对象的访问(增、删、改、查等操作),并可以轻松地完成数据库的维护工作(备份、恢复、修复等操作)

1.1.1 关系数据库管理系统 数据库用户无法直接通过操作系统获取数据库文件中的具体内容; 数据库管理系统通过调用操作系统的进程管理、内存管理、设备管理以及文件管理等服务,为数据库用户提供管理、控制数据库容器中各种数据库对象、数据库文件的接口。

添加标题 添加标题

数据加工: 1、现实世界 2、信息世界 3、计算机世界 数据模型: 1、实体模型:E-R模型(概念设计) 2、概念模型:关系模型(逻辑设计) 3、数据模型:规范化数据库结构

网状模型 层次模型 数据库管理 系统常用的 数学模型 关系模型 面向对象模型

1.1.2 关系数据库 关系数据库中所谓的“关系”,实质上是一张二维表。请看下面的课程表。 第2个字段(列) 第4个字段(列) 第1个字段(列) 第3个字段(列) 字段名(列名) 第1条记录 第2条记录 第3条记录 第4条记录 第5条记录

1.1.2 关系数据库 作为数据库中最为重要的数据库对象,数据库表的设计过程并非一蹴而就,上述课程表根本无法满足“选课系统”的功能需求。 事实上,数据库表的设计过程并非如此简单,本章的重点就是讨论如何设计结构良好的数据库表。

1.1.3 结构化查询语言SQL 结构化查询语言(Structured Query Language或简称为SQL)是一种应用最为广泛的关系数据库语言,该语言定义了操作关系数据库的标准语法,几乎所有的关系数据库管理系统都支持SQL。

学习重点

1.2 数据库设计的相关知识 数据库设计是一个“系统工程”,要求数据库开发人员: 1 熟悉“商业领域”的商业知识。 2 利用“管理学”的知识与其他开发人员进行有效沟通。 掌握一些数据库设计辅助工具。 商业知识和沟通技能 1 数据库设计辅助工具 2 3 “选课系统”概述 4 定义问题域 编码规范 5

1.2.1 商业知识和沟通技能 数据库技术解决的是“商业领域”的“商业问题”。 数据库开发人员有必要成为该“商业领域”的专家,与其他开发人员(包括最终用户)一起工作,继而使用数据库技术解决该“商业领域”的“商业问题” 。

1.2.2 数据库设计辅助工具 E-R图 类图 程序流程图 DFD 时序图 状态图 数据模型 工具 模型 技术 业务模型 Erwin PowerDesigner Rational Rose Visio CASE工具 IDE工具 测试工具 VC++6.0 Visual studio Eclipse NetBeans 面向对象分析和设计技术 结构化分析和设计技术 软件测试技术 关系数据库设计技术 单元测试工具 功能测试工具 性能测试 工具

1.2.3 “选课系统”概述 限于篇幅,在不影响“选课系统”核心功能的基础上,适当地对该系统进行“定制”、“扩展”以及“瘦身”。

1.2.4 定义问题域 定义问题域是数据库设计过程中重要的活动,它的目标是准确定义要解决的商业问题。 “选课系统”亟需解决的“商业”问题有哪些?

1.2.5 编码规范 在编程的时候会考虑代码的可读性吗?你觉得代码可读性是需要考虑的问题吗? 1. 代码不仅要自己能读懂,还要别人也能看懂? 2. 尽量做到可读,但时间紧任务重的时候就顾不上了? 3. 代码只要自己能读懂就可以了? 4. 代码写完就完了,不用管以后是否能读懂? 5. 不知道,没有想过这个问题?

请记住:尽最大努力把方便留给别人和将来的自己。 建议大家遵循本书罗列的常用编程规范!

1.3 E-R图 1 实体和属性 E-R图设计的质量直接决定了关系数据库设计的质量。 关系 2 E-R图的设计原则 3

1.3.1 实体和属性 实体不是某一个具体事物,而是某一种类别所有事物的统称。 属性通常用于表示实体的某种特征,也可以使用属性表示实体间关系的特征 实体 属性 属性

1.3.2 关系 E-R图中的关系用于表示实体间存在的联系,在E-R图中,实体间的关系通常使用一条线段表示。

1.3.2 关系 基数表示一个实体到另一个实体之间关联的数目,基数是针对关系之间的某个方向提出的概念,基数可以是一个取值范围,也可以是某个具体数值 基数 基数 强制 可选

1.3.2 关系 元表示关系所关联的实体个数。 二元关系 一元关系 二元关系

1.3.2 关系 使用关联(Association)表示实体间关系的属性。 关联 关联

1.3.3 E-R图的设计原则 数据库开发人员通常采用“一事一地”的原则从系统的功能描述中抽象出来E-R图。 问题: 属性应该存在于、且只存在于某一个地方(实体或者关联)。 2 实体是一个单独的个体,不能存在于另一个实体中,成为另一个实体的属性。 3 同一个实体在同一个E-R图内,仅出现一次。 问题: 1、唯一标识:ISBN;2、属性多个值怎么处理; 3、一个实体提取多少个属性,实体与实体之间的联系

1.4 关系数据库设计 1.为E-R图中的每个实体建立一张表。 2.为每张表定义一个主键(如果需要,可以向表添加一个没有实际意义的字段作为该表的主键) 3.增加外键表示一对多关系。 4.建立新表表示多对多关系。 5.为字段选择合适的数据类型。 6.定义约束条件(如果需要)。 7.评价关系的质量,并进行必要的改进。

1.4.1 为每个实体建立一张数据库表 student(student_no,student_name,student_contact) course(course_name,up_limit,description,status) teacher(teacher_no,teacher_name,teacher_contact) classes(class_name,department_name)

1.4.2 为每张表定义一个主键 关键字(key):用以唯一标识表中的每行记录。 主键(Primary Key):在所有的关键字中选择一个关键字,作为该表的主关键字,简称主键。

1.4.2 为每张表定义一个主键 主键有以下两个特征: (1)表的主键可以是一个字段,也可以是多个字段的组合(这种情况称为复合主键)。 (2)表中主键的值具有唯一性且不能取空值(NULL);当表中的主键由多个字段构成时,每个字段的值都不能取NULL。 主键设计技巧,请参看本书内容。

1.4.2 为每张表定义一个主键 student(student_no,student_name,student_contact) course(course_no,course_name,up_limit,description,status) teacher(teacher_no,teacher_name,teacher_contact) classes(class_no,class_name,department_name)

1.4.3 增加外键表示一对多关系 外键(Foreign Key):如果表A中的一个字段a对应于表B的主键b,则字段a称为表A的外键,此时存储在表A中字段a的值,要么是NULL,要么是来自于表B主键b的值。

1.4.3 增加外键表示一对多关系 情形一:如果实体间的关系为一对多关系,则需要将“一”端实体的主键放到“多”端实体中,然后作为“多”端实体的外键,通过该外键即可表示实体间的一对多关系。

1.4.3 增加外键表示一对多关系 让学生记住所在班级,远比班级“记住”所有学生容易的多 。

1.4.3 增加外键表示一对多关系 情形二:实体间的一对一关系,可以看成一种特殊的一对多关系:将“一”端实体的主键放到另“一”端的实体中,并作为另“一”端的实体的外键,然后将外键定义为唯一性约束(Unique Constraint)。

1.4.3 增加外键表示一对多关系 PK

1.4.3 增加外键表示一对多关系 PK后的方案:student(student_no,student_name, student_contact,class_no) course(course_no,course_name,up_limit, description,status,teacher_no) teacher(teacher_no,teacher_name,teacher_contact) classes(class_no,class_name,department_name)

1.4.4 建立新表表示多对多关系 情形三:如果两个实体间的关系为多对多关系,则需要添加新表表示该多对多关系,然后将该关系涉及到的实体的“主键”分别放入到新表中(作为新表的外键),并将关系自身的属性放入到新表中作为新表的字段。

1.4.4 建立新表表示多对多关系 teacher(teacher_no,teacher_name, teacher_contact) classes(class_no,class_name,department_name) course(course_no,course_name,up_limit, description,status,teacher_no) student(student_no,student_name, student_contact,class_no) choose(choose_no,student_no,course_no,score,choose_time)

1.4.4 建立新表表示多对多关系

数据模型的要素和种类 数据模型是严格定义的一组概念的集合,这些概念精确地描述了系统的静态特征(数据结构)、动态特征(数据操作)和数据约束条件,这是数据模型的三要素。 数据结构:一张二维表、数据类型 数据操作:sql语言增删改查 数据约束条件:

1.4.5 为字段选择合适的数据类型

1.4.6 定义约束(Constraint)条件 常用的约束条件有6种: 主键(Primary Key)约束 外键(Foreign Key)约束 唯一性(Unique)约束 默认值(Default)约束 非空(Not NULL)约束 检查(Check)约束。

1.4.7 评价数据库表设计的质量 设计数据库时,有两个不争的事实。  数据库中冗余的数据需要额外的维护,因此质量好的一套表应该尽量“减少冗余数据”。  数据库中经常发生变化的数据需要额外的维护,因此质量好的一套表应该尽量“避免数据经常发生变化”。

1.4.8 使用规范化减少数据冗余 冗余的数据需要额外的维护,并且容易导致“数据不一致”、“插入异常”以及“删除异常”等问题的发生。

1.4.8 使用规范化减少数据冗余

1.4.8 使用规范化减少数据冗余 规范化是通过最小化数据冗余来提升数据库设计质量的过程,规范化是基于函数依赖以及一系列范式定义的,最为常用的是第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。

1.4.8 使用规范化减少数据冗余 函数依赖:一张表内两个字段值之间的一一对应关系称为函数依赖。 第一范式:如果一张表内同类字段不重复出现,并且属性不可再分,该表就满足第一范式的要求。

1.4.8 使用规范化减少数据冗余 第一范式

1.4.8 使用规范化减少数据冗余 第二范式:一张表在满足第一范式的基础上,如果每个“非关键字”字段“仅仅”函数依赖于主键,那么该表满足第二范式的要求。 场景一:插入异常。 场景二:修改复杂。 场景三:删除异常。

1.4.8 使用规范化减少数据冗余 第二范式

1.4.8 使用规范化减少数据冗余 第三范式:如果一张表满足第二范式的要求,并且不存在“非关键字”字段函数依赖于任何其他“非关键字”字段,那么该表满足第三范式的要求。

1.4.8 使用规范化减少数据冗余 第三范式

1.4.9 避免数据经常发生变化 统计学生的个人资料时,如果读者是一名数据库开发人员,应该让学生上报年龄信息,还是让学生上报出生日期? 如何确保每一门课程选报学生的人数,不超过人数上限?

1.4.9 避免数据经常发生变化 方案一: course(course_no, course_no,course_name, up_limit,description,status,teacher_no, available) 方案二:数据库表无需进行任何更改。

任务布置 任务1:描述“选课系统”的问题域。 任务2:将本书图1-7中“团购网站、顾客以及房源之间的三元关系表示方法 ”E-R图转化为关系(模式)。 任务3:使用笔纸或者word绘图工具,绘制“选课系统”的E-R图。 任务4:将“选课系统”的E-R图转化为关系(模式)。

Thanks