大白话理解数据库范式

第一范式(无重复的列)

理解:要求记录的属性是原子性,不可分,就是属性不能分,这是关系型数据库的基本要求,不满足这个就不能叫关系型数据库了

  • 通俗点讲(一个字段只存储一项信息)
    EG: 班级:高三年级14班,应改为2个字段,一个年级、一个班级,才满足第一范式
学号姓名班级
0001小红高三年级14班

满足1NF后为

学号姓名年级班级
0001小红高三年级14班

第二范式(属性完全依赖于主键)

理解:不能有部分依赖,部分依赖的前提条件是有组合主键,就是每条记录是需要一个主键的,这个主键可以是一个单独的属性,但也可以是组合主键,就是由记录的多个属性来唯一确定一条记录,那么只要出现了组合主键就可以产生部分依赖,部分依赖是组合主键出现的前提下,剩余的属性,不完全依赖于组合主键,也是部分依赖组合主键,比如该表的N条记录中由组合主键中的一条或者几条就可以确定剩余属性的属性,那么就可以说产生部分依赖,而在实际开发中,一般不采用组合主键,而是自己增加一个字段id自增长,作为主键,这样的单属性主键是不会产生部分依赖的!
EG:

学生证学生证号借书证借书证号

满足2NF后为

主键ID学生证学生证号借书证借书证号

或者改为两张表

学生证学生证号
借书证借书证号

第三范式(属性不能传递依赖于主属性)

理解:满足第二范式前提,如果某一属性依赖于其他非主键属性,而其他非主键属性又依赖于主键,那么这个属性就是间接依赖于主键,这被称作传递依赖于主属性。大白话说就是一张表最多只存2层同类型信息
EG:

爸爸儿子女儿女儿的小熊女儿的海绵宝宝

满足3NF后

爸爸儿子女儿
女儿女儿的小熊女儿的海绵宝宝

参考:https://blog.csdn.net/weixin_37766087/article/details/103405623

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
并发CAS是指在高并发环境下的一种无锁算法,它可以实现多个线程之间的变量同步,而不需要使用锁来进行线程阻塞。这种机制在处理高并发访问时非常常见和常用,它可以有效地提高并发性能。 简单来说,并发CAS的工作原理是通过比较内存中的值与期望值是否相等来确定是否需要更新这个值。如果相等,则使用新的值来更新内存中的值;如果不相等,则说明其他线程已经修改了这个值,当前线程需要重新读取内存中的值并重新比较,直到成功为止。 举个例子来说明,并发CAS的过程:假设有两个线程同时执行incrementAndGet()操作,他们都希望将某个变量的值增加1。首先,线程1读取内存中的值,并将期望值设为读取到的值。接着,线程1使用CAS操作来比较内存中的值与期望值是否相等,如果相等,则将新的值更新到内存中。与此同时,线程2也在执行相同的操作。如果线程1和线程2同时执行CAS操作,那么只有一个线程能够成功更新内存中的值,而另一个线程需要重新读取内存中的值并重新比较。这样就避免了锁机制下的线程阻塞,提高了并发性能。 总的来说,并发CAS是一种非常有效的并发优化手段,它可以在高并发环境下提供更好的性能和可伸缩性。然而,需要注意的是,并发CAS并不是适用于所有并发场景,它对于一些复杂的并发问题可能无法提供完全准确的结果。这需要开发者在使用并发CAS时对多线程并发问题有一定的了解和处理经验。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值