Table of Contents
关系型数据库
数据库系统的分类
数据模型是数据库系统的核心和基础,通常由数据结构、数据操作和完整性约束3部分组成,各种DBMS数据库都是基于某种数据模型的,通常也按照数据模型的特点将传统数据库系统分成网状型数据库、层次型数据库和关系数据库3类数据库。(非关系型数据库NoSql,odbms)
网状型数据库
网状模型是最早出现的网状DBMS。世界上第一个网状数据库管理系统也是第一个DBMS是美国通用电气公司Bachman等人在1964年开发成功的ID(IntegratedDataStore)。
层次型数据库
层次型数据库管理系统是紧随网状数据库而出现的。层次模型是树状的。最著名最典型的层次数据库系统是IBM公司的IMS(Information Management System),这是IBM公司研制的最早的大型数据库系统程序产品。从60年代末产生起,如今已经发展到IMSV6。这个具有30年历史的数据库产品在如今的WWW应用连接、商务智能应用中扮演着新的角色(DB2,imformix)
关系型数据库 rdbms
关系型数据(RDBS,RELATIONAL DBS)是建立在关系模型上的数据库系统。关系模型就是指满足一定条件的二维表,表具有固定的列数和任意的行数,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据库系统 ,结构和实体关系。
二维表是同类实体的各种属性的集合,每个实体对应于表中的一行,在关系中称为元组,相当于通常的一个记录; 表中的列表示属性,称为域,相当于通常记录中的一个数据项,也叫列、字段。 若二维表中有n个域,则每一行叫做一个n元组,这样的关系称为n度(元)关系。表的行对应于对象的实例,各个表的行列交点就用来存贮简单值。满足一定条件的规范化关系的集合,就构成了关系模型。 关系型数据库的组成 一个关系表必须符合某些特定的条件,才能成为关系模型的一部分
1、贮存在单元中的数据必须是原子的,每个单元只能贮存一条数据,这也叫信息原则。 2、贮存在列中的数据必须具有相同的数据类型。 3、每行是唯一的。 4、列没有顺序。 5、行没有顺序。 6、列有一个唯一性的名称。
关系型数据库的E-R模型
在设计关系型数据库时,首先需要为它建立逻辑模型。关系型数据库的逻辑模型可以通过实体和关系组成的图形来表示,这种图形称为E-R图,它可以实现现实世界中的实体和实体之间的联系转为逻辑模型,一个标准的E-R模型主要由实体、属性和联系3部分组成。
1. 实体和属性
实体是一个数据对象,是指客观存在并可以相互区分的事物,如一个教师、一个学生、一个雇员等等。每个实体由一组属性来表示,如,一个具体的学生拥有学号、姓名、性别和班级等属性,其中学号可以唯一标识具体某个学生这个实体。具有相同属性的实体组合在一起就构成实体集—即实体集是实体的集合,而实体则是实体集中的某一个特例,例如,王大锤这个实体就是学生实体集中的一个特例。
2.联系
在实际应用中,实体之间是存在联系的,这种联系必须在逻辑模型中表现出来。在E-R模型中,联系用菱形表示,菱形框内写明“联系名”,并用“连接线”将有关实体连接起来,同时在“连接线”的旁边标注上联系的类型,两个实体之间的联系类型可以分为3类。
一对一:对于实体集A中的每一个实体,在实体集B中最多有一个实体与之相关,反之亦然,标记为1:1
一对多: 对于实体集A中的每一个实体,在实体集B中有多个实体与之关联,反之,对于实体集B中每一个实体,在实体集A中最多有一个实体与之相关,则称实体集A与实体集B具有一对多,标记为1:n
多对多: 对于实体集A中的每一个实体,在实体集B中有多个实体与之关联,反之,对于实体集B中每一个实体,在实体集A中也有多个实体与之相关,则称实体集A与实体集B具有多对多,标记为m:n
关系型数据库的设计范式
在数据库中,数据之间存在着密切的联系。关系型数据库由相互联系的一组关系所组成。在关系型数据库中的每个关系都需要规范化,使之达到一定的规范化程度,从而提高数据的结构化、共享性、一致性和可操作性。
规范化是把数据库组织成在保持存储数据完整性的同时最小化冗余数据的结构的过程。规范化的数据库必须符合关系模型的范式法则。范式可以防止在使用数据库时出现不一致的数据,并防止数据丢失。关系范式有:1NF,2NF,3NF,4NF,5NF,6NF和BCNF范式等多种。要求是从低到高逐渐递增。关系型数据库必须满足1NF,通常满足到3NF就可以了。
1、第一范式(1NF):属性不可再分,字段保证原子性
2、第二范式(2NF)
在满足1NF的基础上,要求表中的每条记录必须被唯一的区分。为实现区分各行记录通常需要为表设置一个“区分列”,用以存储各个实体的唯一标识。在学生信息表中,设置了学号列,由于每个学员的学号都是唯一的,因此每个学生可以被唯一的区分(即使学生存在重名的情况下),那么这个唯一属性列被称为主关键字或主键。
2NF要求实体属性应该完全依赖于主关键字。而不能是对主关键字形成部分函数依赖,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。
例如,这里以“员工工资信息表”为例,若以(员工编码、岗位)为组合关键字(即复合主键),就会存在如下决定关系。
(员工编码,岗位)→(决定)(姓名、年龄、学历、基本工资、绩效工资、奖金)
在上面的决定关系中,还可以进一步拆分为如下两种决定关系。
(员工编码)→(决定)(姓名、年龄、学历)
(岗位)→(决定)(基本工资)
3、第三范式(3NF)
在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)。
例如,这里以员工信息表(EMPLOYEE)为例,该表中包含员工编号、员工姓名、年龄、部门编码、部门经理等信息,该关系 表的关键字为“员工编号”,因此存在如下决定关系:
(员工编码)→(决定)(员工姓名、年龄、部门编码、部门经理)
上面的这个关系表是符合第二范式的,但它不符合第三范式,因为该关系表内部隐含着如下决定关系:
(员工编码)→(决定)(部门编码)→(决定)(部门经理)
对于关系型数据库的设计,理想的设计目标是按照“规范化”原则存储数据,因为这样能够消除数据冗余、更新异常、插入异常和删除异常。
结构化编程语言
结构化编程语言(Structured Query Language),入门教程可参考:SQL 教程
DDL
DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema. DDL是SQL语言的四大功能之一。用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束DDL不需要commit.CREATEALTERDROPTRUNCATECOMMENTRENAME
DML
DML(Data Manipulation Language)数据操纵语言statements are used for managing data within schema objects. 由DBMS提供,用于让用户或程序员使用,实现对数据库中数据的操作。DML分成交互型DML和嵌入型DML两类。依据语言的级别,DML又可分成过程性DML和非过程性DML两种。需要commit.SELECTINSERTUPDATEDELETEMERGECALLEXPLAIN PLANLOCK TABLE
DCL
DCL(Data Control Language)数据库控制语言 授权,角色控制等GRANT 授权REVOKE 取消授权 4.TCL(Transaction Control Language)事务控制语言SAVEPOINT 设置保存点ROLLBACK 回滚SET TRANSACTION
TCL
TCL(Transaction Control Language)事务控制语言SAVEPOINT 设置保存点ROLLBACK 回滚SET TRANSACTION
She平台环境介绍
She平台包括两种数据库实训环境:
-
基于浏览器的SQL客户端,类似于navicat
-
集成SQL客户端、mysql、HBase的环境,其中SQL客户端只能连接本地的mysql。
创建完成后mysql数据库自动启动,点击"dbadmin"进入在线SQL客户端环境,
点击"mysql/New terminal",并切换到root用户,可进入"命令行客户端"(mysql数据库root的密码为 Yhf_1018),
Training
问题
1、查询全体学生的学号与姓名
2、查询全体学生的姓名及其出生年份
3、查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示系名
4、查询所有姓刘的学生的姓名、学号和性别
5、某些学生选修课程后没有参加考试,所有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号
6、计算选修1号课程的学生平均成绩
7、查询平均成绩大于等于90分的学生学号和平均成绩
8、查询每个学生及其选修课程的情况
9、查询选修2号课程且成绩在90分以上的所有学生的学号和姓名
10、查询每一门的间接先修课(即先修课的先修课)
11、找出每个学生超过他自己选修课程平均成绩的课程号
12、查询非计算机科学系中比计算机科学系所有学生年龄都小的学生姓名及年龄
13、查询计算机科学系的学生与年龄不大于19岁的学生的差集
14、查询考试成绩不及格的学生的学号
15、查询所有不姓刘的学生的姓名、学号和性别