1,数据库的三大范式是什么
数据库的范式:是设计数据库的一种规范要求,每一个范式呈的次规范;
第一范式1NF:数据库表中每一列是不可拆分的原子列,不能出现复合列(集合数据)
第二范式2NF:在1NF的基础上,每一张表描述一件事情;非主键字段必须完全依赖于主键字段
第三范式3NF:在2NF基础上,非主键字段不能传递依赖于主键,使用外键约束来操作
2,什么是数据库事务
事务:是关系型数据库的一种机制:当批量操作sql或者多张表同时操作(update,insert into,delete),这些语句的执行要么同时成功,要么同时失败:当执行成功了,将事务提交,直接影响数据库的记录数:当执行失败时,需要回滚事务;
应用场景:
在某些业务中,同时操作(update,inseret into,delete)多张表的时候(同时执行多个sql),就需要开启事务,否则在执行多个sql中如果出现异常,一部分成功,一部分失败,就会导致数据紊乱!
举例:
提交订单----->生成订单---给order以及order_item都需要插入数据
订单表 order
订单项表 order_item
商品表 product
3.数据库事务的特点以及隔离级别
事务的特点:ACID
原子性:针对数据的操作要么同时成功要么同时失败
一致性:数据的操作前后数据总量不变的
隔离性:事务就是管理业务操作,业务和业务独立,事务和事务也是分离开来的
持久性:针对数据的操作,如果提交事务了,及时关机,数据也会永久保存!
事务的隔离级别:
read uncommitted:读未提交,,会导致最严重的问题 "脏读"(一个事务读到另一个没有提交事务)
read committed:读已提交,,可以有效防止脏读,但是会现在一个问题"不可重复读"(在提交事务之前和事务,数据不一致!)
repeatable read:可重复读, 有效防止脏读(mysql的默认隔离级别),会出现"幻读
serializable:串行化(序列化) 隔离级别最高,安全性最高效率最低