关系型数据库
关系型数据库就是将所有的数据基于关系的方式来保存,所谓的关系就是将所有的数据将其保存在一个一个的二维表中。
关系 :关系就是二维表,其中:表中的行、列次序并不重要
行row:表中的每一行,又称为一条记录
列column:表中的每一列,称为属性,字段
主键Primary key:用于惟一确定一个记录的字段。主键是一个属性作用在某一个字段上,一旦作用在某一个字段上,那么就表示这个字段上所有的记录在这个字段内是不能重复的,注意每张表上的主键只能有一个。
域domain:每个字段、属性的取值范围,如,性别只能是‘男’和‘女’两个值
数据的操作
数据提取:在数据集合中提取感兴趣的内容。SELECT(查);
数据更新:变更数据库中的数据。INSERT、DELETE、UPDATE;
表和表之间的联系
数据库的表和表之间是有关联的,它们之间的关联有可能是一对一的关系,也有可能是一对多的关系或者多对多的关系。
一对一联系
比如说员工信息表和员工工资表,这两张表就是一对一的关系,但是如何将这两张表进行关联起来?这就需要靠员工编号进行关联,比如1号员工的信息是什么,1号员工的工资是多少。这样就将这两张表一对一的关联起来了。
表1:员工信息
表2:员工工资
一对多联系
比如说部门和员工的关系,假设一个公司有销售部,技术部等等,一个部门有多个员工,每个员工对应一个部门。如下表所示:
表1:员工信息表
表2:部门表
以上两张表从逻辑上来说的确是1对1的关系,但是从技术角度来说如何保证他们的一对一关系呢?比如说添加了第4个员工,它的员工编号为4,部门编号为3,而表2的部门编号为1、2没有第三个部门,那么如何避免这种错误的记录产生?
在上一节中我们说到了主键,在这两张表中表1的员工ID设为主键,表2的部门ID为主键,有了主键后那么主键上的每条记录都是唯一的,有了主键之后我们怎么把两张表上多对多的关系表现出来?也就是说确保表1中的部门ID就是表2中部门ID,这时候就需要用到外键技术foreign key (FK),外键就是将表和表之间一对多的关系表现出来。由于表1上的部门ID字段依赖于表2的部门ID字段,所以在依赖表(表1)上的部门ID字段建立一个外键,这个外键依赖于表2的部门ID字段,一旦外键建立,那就意味外键上的所有字段必须来自于表2的主键,如果此时在表1上插入一个不存在的部门字段将会报错。
这样就将表和表之间一对多的关系用主外键进行关联起来了,这里需要注意的是表1依赖于表2的话,那么表2上必须要有主键或者唯一键。
多对多联系
通常还有一些情况下表和表之间的关系有可能是多对多的关系。比如以下表之间的关系,表1为学生信息表,表2为课程表,表3为学生和课程的对应关系。
student_table
class_table
student_class
简易数据规划流程
第一阶段:收集数据,得到字段
收集必要且完整的数据项 转换成数据表的字段。
第二阶段:把字段分类,归入表,建立表的关联
关联:表和表间的关系 分割数据表并建立关联的优点 节省空间 减少输入错误 方便数据修改。
第三阶段:规范化数据库
数据库规范化,又称数据库或资料库的正规化、标准化,是数据库设计中的一系列原理和技术,以减少数据库中数据冗余,增进数据的一致性。关系模型的发明者埃德加·科德最早提出这一概念,并于1970年代初定义了第一范式、第二范式和第三范式的概念。
RDMBS设计范式基础概念
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,不同的规范要求被称为不同范式,各种范式呈递次规范,越高的范式数据库冗余越小目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般数据库只需满足第三范式(3NF)即可。
范式
1NF:无重复的列,每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,确保每一列的原子性。除去同类型的字段,就是无重复的列 说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
2NF:属性完全依赖于主键,第二范式必须先满足第一范式,要求表中的每个行必须可以被唯一地区分。通常为表加上一个列,以存储各个实例的唯一标识PK,非PK的字段需要与整个PK有直接相关性。
3NF:属性不依赖于其它非主属性,满足第三范式必须先满足第二范式。第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息,非PK的字段间不能有从属关系。