oracle
理论
六十年代末,计算机科学的重要分支,信息系统
要知道这四个基本概念
数据需要一组,或者给他特定含义,例如,学生的数学语文英语成绩分别是多少,不是单个的12,34
数据库是长期存储在计算机内,有组织,可共享的大量数据的集合,数据库的基本特征,数据按一定的数据模型组织,描述和存储,可为各种用户共享,冗余度小,数据独立性较高,易扩展 database
数据库管理系统,database manger system dbms 位于用户与操作系统之间的一层数据管理软件,是基础软件,是一个大型复杂的软件系统
数据库系统 dbs 数据库系统的构成,数据库,数据库管理系统,应用程序,数据库管理员
数据库系统的特点,数据结构化,数据的共享性高,冗余度低且易扩充数据独立性高
- 1
数据独立性包括物理独立性和逻辑独立性,物理独立性是指用户的应用程序与存储磁盘上的数据库中的数据是相互独立的,即,数据在磁盘上怎么样存储是由数据库管理系统管理,用户不需要了解,应用程序要处理的只是数据的逻辑结构,数据的物理内存改变了,应用程序不需要改变 比如说:从物理上来看,数据存储在磁盘上的任意位置会变来变去,但要用到他的数据应用程序是不用变位置的(应用程序也在磁盘上)
(1) 改变存储设备或引进新的存储设备。
(2) 改变数据的存储位置,例如把它们从一个区域迁移到另一个区域。
(3) 改变物理记录的体积。
(4) 改变数据物理组织方式,例如增加索引,改变Hash函数,或从一种结构改变为另一种结构。
逻辑独立性是指,用户的应用程序与数据库的逻辑结构是相互独立的,数据的逻辑结构改变,应用程序可以不变,也就是说,数据库在逻辑上的结构与应用程序可以相互分离,相互结合,qq的数据库可以进行适量删删减减,而不发生程序无法运行情况
- 在模式中增加新的记录类型,只要不破坏原有记录类型之间的联系。
- 在原有记录类型之间增加新的联系。
- 在某些记录类型中增加新的数据项。
- 2
从模式角度来看,物理数据独立性是指db的内模式改变尽量不影响逻辑模式,或物理逻辑结构的改变尽量不影响应用程序,外模式/模式映像保证了数据库系统中的数据具有较高的逻辑独立性,模式/内模式映像保证了数据库系统中的数据具有较高的物理独立性
数据模型是数据库系统的核心和基础
数据模型分为两类,概念模型,也称信息模型,按用户的观点对数据和信息建模,用于数据库设计,逻辑模型和物理模型,逻辑模型主要包括网状模型,层次模型,关系模型
- 层次数据模型
其实层次数据模型的图形表示就是一个倒立生长的树,有二叉树可知,每棵树都有且仅有一个根节点,其余的节点都是非根节点
优点,简单,效率高;缺点,单板缺乏灵活性,必须知道双亲结点才能知道下一个节点,限制了数据库存取路径的控制
- 网状数据模型
可以看作放松层次数据模型的约束性的一种扩展。网状数据模型中所有节点允许脱离父节点而存在
优点,方便表示很多复杂的关系,效率高,缺点,复杂,不利于维护和重建
- 关系型数据模型
应用最多的数据库,使用表格表示实体和实体之间的关系,关系型数据库中,无论是实体还是实体之间的联系都被映射成统一的关系,一张二维表,操作对象和结果都是一张二维表。关系型数据库可用于表示多对多的关系
将图映射为关系型数据库中的表格如图四 ,sut_id和cour_id分别是引用学生表和课程表的cour_id的外键 。优点结构鲜明操作方便,缺点查询效率低
实体之间有一对一,一对多,多对多等多种类型
数据模型的组成要素,数据结构,数据操作,数据的完整性约束条件
关系型数据模型定义了三种约束完整性:实体完整性(关系必须含有主键,且主键不能重复,不能为空),参照完整性(以外键的形式维护实体间的引用关系,可以为空或者值为被参照关系的主键值)以及用户定义完整性(用户由应用环境决定的针对具体关系数据库的约束)
- 关系模型
关系模型的数据结构是二维表结构,是关系型数据库的基础,关系的每一个分量必须是一个不可分的数据项,不许表中还有表
关系模型的基本概念,关系,一张表。元组,表中的一行记录。属性,表中的一列,有属性名和属性值(分量)。分量,元组中的一个属性值。分量,元组中的一个属性值。关系模式,对关系的描述,通常有几张表就有几个关系模式。域,属性值的取值范围。键。超键(关键字),在关系中唯一标识元组的属性集。候选键,不含有多余属性的超键,少一个属性都够不成一个元组。主键,用户选作元组标识的候选键。外键,如果关系模式r中属性k是其他关系模式的主键,那么k是r的外键。主属性,只要在任何一个候选键中出现,这个属性就是主属性。非主属性,与上面的相反
数据操作是集合操作,操作对象和操作结果都是关系select,insert,delete.updata
关系的完整性约束条件,实体完整性,参照完整性,用户定义完整性
dbms在三层之间提供了两层映像,外模式/模式映像,模式/内模式映像
笛卡尔积,所有域(类似定义域)取值的组合
基本关系的性质,
- 列是同质的,
- 不同的列可出自同一个域,其中,每一列称为一个属性,不同的属性要给予不同的属性名
- 列/行的顺序无所谓,列/行的次序可以任意交换
- 任意两个元组候选码不能相同
关系模式的符号 R,关系名,包括以下全部。u,组成该关系的属性名集合。D,u中属性所来自的域的集合。DOM,属性向域的映像集合。F,属性间数据的依赖关系的集合
基本的关系操作
- 并
- 差
笛卡尔积
选择 相当于:select * from 表名 where 条件。
投影 用于从R中选择出若干属性列组成新的关系(默认去重)
关系操作的特点,对象和结果都是集合方式,一次一集合
考试的时候创建一个类似的关系(表)
函数依赖,就是知道了学号就可以知道他的姓名,除非定义两个人不重名
- 平凡依赖
- 反之非平凡
完全函数依赖,例子,学生数学成绩完全由该学生学号和数学课程决定,所以数学课成绩完全依赖于学号和数学课
部分函数依赖:学生学号和姓名可以完全决定唯一的学生,但是学号也可以决定唯一学生
传递函数依赖:书的出版编号是唯一,版权归出版社所有,所以只能由该出版社出版,书的出版编号-》出版社名,出版社名-》出版社地址,但出版社名不能决定唯一的出版书编号(除非出版社只出版这一本书),则出版书编号传递依赖于出版社地址
范式是符合某一种级别的关系模式的集合。数据冗余是指各个数据文件存在重复的数据,当存在传递依赖或者部份依赖时,必然会存在数据冗余,我们依据关系范式进行数据表分解,从而减轻冗余
第一范式1NF:表中的每一列都是不可分解的基本数据项,每一个属性不可拥有多个值
第二范式2NF:前提是满足第一范式。,没有部分依赖
(出现意外,插入,删除,更改都费劲的话就把一个表拆分成若干个表)
第三范式:没有传递依赖,没有部份依赖
BC范式BCNF,主属性不能依赖于主属性,不能存在主键的一部分被另一部分或者非主键的其他部分所决定(右侧全部为候选键)
第四范式:没有多对多关系
第五范式:从最终结构重新建立原始结构
各种范式之间存在联系:1nf>2nf>3nf>4nf>5nf
低一级的关系模式通过模式分解可以转化为一个高一级范式的关系模式,过程叫做规范化
2nf完全依赖于主键
3nf没有传递依赖
bcnf:主键不被别的决定
BCNF由Boyce与Codd提出,通常被认为是修正的第三范式
3nf和BCNF是在函数依赖的条件下对模式分解所能达到的分离程度的测度
一个模式中的关系模式如果都属于bcnf,那么在函数依赖范畴内,它以实现了彻底的分离,以消除插入和删除的异常,3nf不彻底
码是可以确定一个元组所有信息的属性名,例如{a,b,c,d}知道a或者{a,b}的值就可以确定abcd,{a},{ab}就是码
候选码的真子集中不存在码,就是候选码里面不存在码,例如{a}
主码就是主键,是任意一个候选码
把同一表内的多对多关系删除
消除,主属性对码的部分函数依赖,消除非主属性对码的传递函数依赖,消除主属性对码的部分和传递依赖,消除非平凡且非函数依赖的多值依赖
求范式步骤:
1.求闭包()候选码
2.候选码,主属性
3.判断范式
4.分解(一范式分解成二三范式):分成多个表
- 实体使用长方形,属性用椭圆型表示,关系用菱形表示
- 会er图也得会把er图转化为关系模式
假设教学管理规定:
一个学生可选修多门课,一门课有若干学生选修;
一个教师可讲授多门课,一门课只有一个教师讲授;
一个学生选修一门课,仅有一个成绩。
学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。
要求:根据上述语义画出ER 图,要求在图中画出实体的属性并注明联系的类型。
先看仓库和商品之间是M:N的关系,于是我们首先想到的应该是把联系 库存转换为库存实体。
库存 (仓库号,商品号,日期,库存量)
然后是商品实体和仓库实体
商品(商品号,商品名,单价)
仓库(仓库号,仓库名,地址)
除此之外仓库和商品还有一个供应关系,同样是M:N关系:
供应 (仓库号,商品号 ,月份,月供应量)
在上图的商店和仓库之间的关系可能写漏了,但是它们应该也是M:N的关系,一个商店可以被多个仓库供应,一个仓库也可以供应多个商店。上面已经创建了供应实体,现在只需在供应实体中假如商店号即可,也就是商店实体的主键。
供应(仓库号,商品号,商店号 ,月份,月供应量)
商店(商店号,商店名,地址)
应用
- DDL(data defintition language)
对数据库内部对象进行改变表的结构,数据类型,表之间的连接操作
1 | create table () |
- DML(data manipulation language)
数据库操纵语言,对表内数据增删改
1 | insert into 表名(字段) values (某值); |
- DQL(data query language)
1 | select 列明 from 表名 where 限定条件; |
- DCL(data control language)
设置更改数据库权限
1 | grant |