目录
数据库的分类和常见的数据库你知道那些?
关系型数据库
典型产品:MySQL、SqlServer、Oracle、PostgreSQL、SQLite等。
非关系型数据库
几种主流数据库的对比:
介绍一下三范式,设计表时一定要追求三范式吗?
在设计数据库表时不一定要追求三范式,要以效率和性能为第一追求,然后以此为基础追求范式规范
第一范式1NF:要求数据看表的每个字段具有原子性,不可再分割
通俗的理解是,字段还可以再分吗?如过不能,则是符合1NF的设计。
第二范式2NF:要求数据库表主键与非主键是完全依赖关系(不能用联合主键),即:每个非主键跟主键都有直接关系
简单的解释,比如你和一个女生约会建立一张表,不用每条约会记录都记录她的身高、体重,将身高体重单独的存在一张表中供查询即可。
第三范式3NF:非主键列之间没有传递依赖关系,要求字段之间没有冗余
打个比方,比如评论表,如果你将用户ID,用户头像都放在这留言表中,就是不合适的了。用户头像是依赖于用户ID,而不依赖该评论。
1、第一范式(1NF)
在关系型数据库的设计中,第一范式是对关系模式的基本要求,不满足第一范式的数据库就不是关系数据库。
所谓第一范式是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。在第一范式中表的每一行只包含一个实例的信息。举个栗子,对于学生的信息表中,不能将学生信息都放在一列中显示,也不能将其中的两列或多列在一列中显示;学生信息表的每一行只表示一个学生的信息,一个学生的信息在表中只出现一次。简而言之,第一范式就是无重复的列。
2、第二范式(2NF)
第二范式是在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式。 第二范式要求数据库表中的每个实例或行必须可以被唯一地区分开。这通常需要为表加上一列,以存储各个实例的唯一标识。比如在学生信息表中加上了一列学号,因为每个学生的学号是唯一的,因此每个员工可以被唯一区分,即使是重名的同学。这个唯一属性列被称为主关键字或主键、主码。简而言之,第二范式就是表中非主关键字的列全部依赖于主关键字。
3、第三范式(3NF)
满足第三范式必须先满足第二范式。第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个学院信息表,其中有每个学院的学院代号、学院名称、学院简介等信息。那么在学生信息表中列出学院代号后就不能再将学院名称、学院简介等信息都录入到学生信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。