关系型数据库

关系型数据库是指采用了关系模型来组织数据的数据库。

简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

关系型数据库的最大特点就是事务的一致性:传统的关系型数据库读写操作都是事务的,具有ACID的特点,这个特性使得关系型数据库可以用于几乎所有对一致性有要求的系统中,如典型的银行系统。

关系型数据库为了维护一致性所付出的巨大代价就是其读写性能比较差,而像微博这类社交应用,对并发读写能力要求极高,关系型数据库已经无法应付,因此,必须用新的一种数据结构存储来代替关系数据库。

关系数据库的另一个特点就是其具有固定的表结构,因此,其扩展性极差,系统的升级,功能的增加,往往意味着数据结构巨大变动,这一点关系型数据库也难以应付,需要新的结构化数据存储。 于是,非关系型数据库应运而生,由于不可能用一种数据结构化存储应付所有的新的需求。必须强调的是,数据的持久存储,尤其是海量数据的持久存储,还是需要关系数据库。

三大范式本质:

第一范式:字段唯一,凡是关系型数据库都满足,所以一般不用管

第二范式:满足第一范式,每个键都唯一,即每行数据都唯一,没有重复的行数据,一般使用主键或复合主键

第三范式:满足第二范式,且每两个设计实体之前都无相同(相同功能作用)的字段,如果只使用一张表,字段冗余(重复)很大,所以要两张以上表以关系形式维护(一对多或多对一,一对一意义不大因为完全可以设计成一张表),第三范式目的就是消除冗余,如果需要其字段使用外键(外键一般都需要建立索引)来参照(参照主键或 (候选键:唯一索引))来关联。

数据库中的五大约束包括:

1.主键约束(Primay Key Coustraint) 唯一性,非空性;

2.唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个;

3.默认约束 (Default Counstraint) 该数据的默认值;

4.外键约束 (Foreign Key Counstraint) 需要建立两表间的关系;

5.非空约束(Not Null Counstraint):设置非空约束,该字段不能为空。

详细介绍:

(1)[外键约束 (Foreign Key Counstraint) ]

1.设置外键的注意事项:   

  ①:只有INNODB的数据库引擎支持外键,修改my.ini文件设置default-storage-engine=INNODB;   

  ②:外键与参照列的数据类型必须相同。(数值型要求长度和无符号都相同,字符串要求类型相同,长度可以不同);   

  ③:设置外键的字段必须要有索引,如果没有索引,设置外键时会自动生成一个索引;

2.设置外键的语法:

  [CONSTRAINT 外键名] FOREIGN KEY(外键字段) REFERENCES 参照表(参照字段);

  [ON DELETE SET NULL ON UPDATE CASCADE] -- 设置操作完整。

3、外键约束的参照操作: 当对参照表的参照字段进行删除或更新时,外键表中的外键如何应对。

   参照操作可选值:   

  RESTRICT: 拒绝对参照字段的删除或修改(默认);   

  NO ACTION:与RESTRICT相同,但这个指令只在MySql生效;   

  CASCADE: 删除或更新参照表的参照字段时,外键表的记录同步删除或更新;   

  SET NULL: 删除删除或更新参照表的参照字段时,外键表的外键设为NULL (此时外键不能设置为NOT NULL)。

(2)[主键约束](Primay Key Coustraint)

1.主键的注意事项:主键默认非空,默认唯一性约束,只有主键可以设置自动增长(主键不一定自增,自增一定是主键)。

2.设置主键的方式:   

  ①:在定义列时设置:id INT UNSIGNED PRIMARY KEY。   

  ②:在列定义完成后设置:PRIMARY KEY(id)。

原文地址:https://www.cnblogs.com/chandb/p/7413584.html