数据库的四大特性以及三大范式

这两个问题经常会在一些面试题中被问到。

一、数据库的四大特性

总得来说,数据库事务的4大特性可以简称为ACID。

1、原子性(Atomicity)

  事务中包含的程序作为数据库的逻辑工作单位,它对数据库中的数据进行操作时,要么全部执行,要么都不执行。

  举个例子,你给小A转账500块时。这个时候银行的数据库会将你卡里的金额减500,同时小A卡里的金额增加500。不存在你的钱被扣,小A的钱没加。或者你的钱没扣,小A的钱增加了。

2、一致性(Consistancy)

  一个事务执行前和执行后,数据库都必须要处于一致性的状态。

  这句话是怎么理解:就是你给小A的卡里转了500块,不管怎么样你卡里的钱和小A卡里的钱的总和是不变的。不会出现你们两的钱相加之和会出现变化的。

3、分离性、独立性(Isolation)

  分离性是指在并发的事务是相互隔离的。即一个事务的内部操作及正在操作的数据必须被封锁起来,不会被其他的事务来企图修改。这一点和Java中多线程编程的同步锁很像。

  例子:假如你给小A打钱过去,同时小B也在给小A打钱。这时候数据库服务器中要么会让你的事务先执行,或者让小B的事务先执行。不存在你两个的打钱动作会同时来修改小A卡里的金额。

4、持久性(Durability)

  持久性是指当数据库系统出现故障了,要确保已经提交的事务的更新是不会丢失的。即数据库中的数据的修改是永久性的。就算系统出现了故障,我们也可以使用数据库的备份和恢复来保证数据的修改。

  例子:当你从卡里面取出500块,在银行的数据库中你的卡里的金额会减少500。就算银行的数据库进行维修,等到再次恢复的时候你的卡里的钱还是减少500的。不存在取了钱,由于数据库的故障你卡里的钱不变这种情况。

二、数据库的三大范式

第一范式:

  原子性:是指每列的数据不能再分裂出其他的列

  例如:联系人的中的姓名,电话,性别,其中电话不属于第一范式,要属于第一范式的话就要对电话在进一步分裂(姓名,性别,手机,家庭电话)

第二范式:

  在满足第一范式的情况下,每一列的数据都与主键有关系

  例如:订单的编号,生产编号,价格,生产日期,其中生产编号与订单的信息没有直接关系所以可以去掉

第三范式:

  在满足第二范式的情况下,所有的列都与主键有关(这个关系是指全部满足对主键的关系而不是部分)也不依赖于其他主键

  例如订单的信息(订单号,产品,单价,顾客姓名,顾客编码),其中顾客姓名与顾客编码相关所以应该吧顾客姓名去除

总结:

  1.每列的数据不能再分裂出其他的列

  2.每列都与主键有关系

  3.确保每列都与主键有着直接的关系而不是间接关系

转载于:https://www.cnblogs.com/Ericzya/p/7793151.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值