一:概念
- 数据模型
对现实世界数据特征的抽象,用来抽象、表示和处理现实世界。满足三点要求
1.能比较真实地模拟现实世界
2. 容易为人所理解
3. 便于在计算机上实现
数据模型分成两个不同的层次
(1) 概念模型 也称信息模型,它是按用户的观点来对数据和信息建模。
(2) DBMS支持的数据模型 从逻辑模型角度看,主要包括层次模型、网状模型、关系模型、面向对象模型、对象关系模型等,它是按计算机系统的观点对数据建模。物理模型是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法。
- 信息世界中的基本概念
(1) 实体:客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念。例如:一个学生、学生的一次选课。
(2) 属性:实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画,例如:
(20071001,李明,男,18,江苏,计算机系,2007)
(3) 码:唯一标识实体的属性集称为码。
(4)候选码的定义:如果关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码;
(5)主码的定义:如果一个关系有多个候选码,则选定其中一个为主码;
(6)主属性定义:候选码的诸属性称为主属性;
(7)非主属性定义:不包含在任何候选码中的属性称为非主属性;
(8)实体型:用实体名及其属性名集合来抽象和刻画同类实体称为实体型。
(9)实体集:同型实体的集合称为实体集。
(10)联系(Relationship):现实世界中事物内部以及事物之间的联系在信息世界中反映为实体型内部的联系和实体型之间的联系。
- 实体型之间的联系
(1)一对一联系
a) 定义:如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系。记为1:1。
b) 实例
班级与班长之间的联系:
一个班级只有一个正班长;
一个班的正班长只在该班中任正班长职务。
(2)一对多联系定义:如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系。记为1:n。
b)实例
班级与学生之间的联系:
一个班级中有若干名学生;
每个学生只在一个班级中学习。
(3)多对多联系(m:n)a) 定义:如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体B具有多对多联系。记为m:n。
b) 实例
课程与学生之间的联系:
一门课程同时有若干个学生选修;
一个学生可以同时选修多门课程。
二:概念模型的工具(E-R图)
实体型:用矩形表示,矩形框内写明实体名。
属性:用椭圆形表示,并用无向边将其与相应的实体型连接起来。
联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)。
- E-R图的建立步骤
(1) 对需求进行分析,从而确定系统中所包含的实体型;
(2) 分析得出每个实体型所具有的属性;
(3) 找出每个实体型的码;
(4) 确定实体型之间的联系。
一:三大范式
- 第一范式
如果一个关系模式的所有属性都是不可分的基本数据项,则该模式为第一范式
(1)满足第一范式的是对关系模式的基本要求,不满足第一范式的数据库模式不能称为关系数据库
(2)满足第一范式的关系模式不一定是一个好的关系模式
(3)数据库不能出现重复的记录,每一个字段都是原子性不能再分
- 第二范式
如果一个关系模式属于第一范式,且每一个非主属性完全依赖码
- 第三范式
如果一个关系模式属于第二范式,且每一个非主属性都不传递依赖该模式的候选码,则该关系属于第三范式
二:事务(保证数据的一致性和完整性)
- 特征
(1)原子性:一个最小的不可再分的工作单元
(2)一致性:事务要求所有DML语句操作的时候,必须保证同时成败或者同时成功
(3)隔离性:一个事务不会影响其他事务的运行 - read uncommitted 读未提交(级别最低)
a:事务A和事务B,事务A未提交的数据,事务B可以读取
b:这里读取到的数据叫做"脏数据"或者脏读
c:隔离级别最低,只在理论上存在,数据库的默认级别一般高于此级别 - read commit 读已提交
- repeatable read 同重复读(默认级别)
- serializable 串行化
(4)持久性:在事务完成之后,该事务对数据库所做的更改将持久的保存的数据库中,并不会被回滚 - 相关概念
(1)开启事务 start transaction
(2)结束事务
(3)提交事务 commit
(4)回滚事务 roll back - 几个命令
show variables like '%commit%' #查看提交状态
set autocommit=foo #关闭自动提交
select @@tx_isolation #查看会话隔离级别
select @@global.tx_isolation #查看全局隔离级别
set TRANSCTION-isolation level=READ-COMMITTED(READ-UNCOMMITTED,READ-COMMITTED,REPEATEABLE-READ,SERIALIZABLE) #也可以通过my.ini设置