关系数据库的基本概念
关系:二维表
行:元组
列:属性
域:属性取值范围
关键字:唯一确定一个元组(主码)
一般显示表示形式:关系名(属性1,属性2,……属性n)
如:学生(学号,姓名,性别,年龄,学部号)
数据完整性
指数据库中数据的正确性和唯一性。
三类完整性规则:
1、实体完整性规则
2、参照完整性规则
3、用户定义的完整性规则
关系操作:选择,投影,连接
1、选择,又称为限制。i在关系中选择满足给定条件的诸元组
选择运算实际上就是从关系中选择逻辑表达式为真的元组
在关系的行的角度进行运算
逻辑表达式运算符可以是:>、<、>=、<=、!=、=
2、投影。
在关系上选择若干属性列组成新的关系
投影是在列的角度进行运算
投影操作后可能取消一些元组,因为一旦选取了特定列,可能就会产生重复的行,这些重复的行必须消除
3、连接。
通过一个关系中的某个属性等于另一个关系的某个属性作为连接条件的连接。
逻辑数据库设计
将实体和关系转化为关系模式
函数依赖型
无损分割
规范化准则
联系
事物的联系可以分为两类:一类是实体集内部的联系,表现在属性之间;另一类是实体集之间的联系,可分解为多个实体间的了联系。
两个实体间联系的类型:
1:1 实体集A中每个实体至多只与实体集B中一个实体相联系。反之亦然。
1:n 实体集A中每个实体与实体集B中多个实体相联系,而B中每个实体至多只与A中一个实体相联系。
m:n 实体集A中每个实体与实体集B中多个实体相联系,反之,B中每个实体也与A中多个实体相联系。
实体型之间的一对一、一对多、多对多联系也存在于两个以上实体型之间。
实体-联系数据模型,用E-R图表示。
实体(型):矩形框,框内为实体名称。
属性:矩形框,以线与实体连接。属性较多时也可以将实体及其属性单独列表。
实体间的联系:菱形框,框内为联系的名称。用线将菱形框与实体相连,线上标注联系类型。
关系模型评价
冗余度高。即:多次重复出现。
修改困难。修改数据时,容易影响其他数据。
插入问题。插入数据时,容易影响其他数据。
删除问题。删除数据时,容易影响其他数据。
函数依赖性
根据函数的定义,若X取已确定的值,则Y肯定有唯一的值与值对应,则Y函数依赖于X,记作:X→Y。可以这么理解:X决定Y
例:学生(学号,姓名,年龄,班级,籍贯),存在“姓名” 函数依赖于“学号” 记作:学号→姓名
完全函数依赖:在关系模式 R(A1, A2, …,An)中,若X→Y,且对X的任一真子集X′,都没有X′→Y,则称Y完全函数依赖于X。若X→Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X。(完全函数依赖主要针对组合主键)
传递函数依赖:在关系模式R(A1, A2, …,An)中,若X→Y,Y→Z,且Y不属于X,Z不属于Y,Y→X,则称Z传递函数依赖于X。(传递函数依赖主要针对外键)
范式
关系数据库中的关系式需要满足一定的要求的,称为范式。
1、第一范式(1NF)。最低的要求成为第一范式。
每一列的值不可以分割为更简单的数据项。
若一个关系满足:每一属性值都必须是不能再分的元素,则为规范化关系,称为第一范式,简记为1NF。
例:关系“考勤表”(编号,姓名,上下班时间)——可以把第三个字段分解为上班时间和下班时间。
2、第二范式(2NF)。主要解决部分函数依赖。
满足第一范式。
非主键列都完全函数依赖于主键。
下面表中“雇员号码”和“工程号码”是组合主键,但是,员工部门编号与工程号码没有函数相关性,不符合2NF;不能由工程号码唯一确定员工部门编号。
例:
3、第三范式(3NF)。每个非主属性不部分依赖于关键字,也不传递依赖于关键字的关系。解决传递函数依赖。
满足第二范式。
表中每一个非键列都不传递依赖于主键。
下表中在非主键“部门编号”和“部门名称”之间就具有了函数依赖性,因为一旦指定部门编号,就会存在一个部门名称与之对应。
无损分割:表的分割不能破坏函数的依赖关系,满足这条件的叫无损分割。
来源:https://www.cnblogs.com/phantom-k/p/3967380.html