数据库设计三范式和事务

三范式

第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。

第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。

第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF.

通俗点讲:

第一范式

1、每一列属性都是不可再分的属性值,确保每一列的原子性

2、两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据

第二范式

每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来。 这样便实现啦一条数据做一件事,不掺杂复杂的关系逻辑。同时对表数据的更新维护也更易操作。

第三范式

数据不能存在传递关系,即没个属性都跟主键有直接关系而不是间接关系。像:a-->b-->c  属性之间含有这样的关系,是不符合第三范式的。

扫描二维码关注公众号,回复: 2741128 查看本文章

最后:

三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。

参考:https://www.cnblogs.com/knowledgesea/p/3667395.html

事务

事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。

MySQL事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 

事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。 

1. 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务
2. 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行
3. 事务用来管理 insert,update,delete 语句

一般来说,事务是必须满足 4 个条件(ACID): Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(永久性)
1、原子性:事务要么被全部执行,要么被全部不执行。如果事务下的子事务全部提交成功,则所有数据库操作被提交,否则,应进行事务回滚。(在一次事务中执行的语句,只要有一次执行失败,都会执行任务回滚,A给B转账,A转成功,B接收失败,那么事务回滚)
2、一致性: 事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。(A给B转账,A转成功,B接收成功,现在的数据都是正确的,转换了一种状态)因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是 不一致的状态。 
3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的
100%隔离,需要牺牲速度。
4、永久性:一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。

在 MySQL 控制台使用事务来操作
1、开始一个事务    start transaction
2、做保存点      savepoint 保存点名称
3、操作
4、可以回滚,可以提交,没有问题,就提交,有问题就回滚。

猜你喜欢

转载自blog.csdn.net/Demis_demis/article/details/81627099
今日推荐