关于数据库三大范式的一些个人思考

关于数据库三大范式的一些个人思考

对于三大范式,上课时了解到的方式是通过自然语言的描述,所谓的直接相关和间接相关等内容,要自己反复琢磨才能够大致明白其意思,我个人觉得用函数等描述手法,就可以把这个问题说得更明白一些。

一些准备工作

数据库储存数据的方式是二维表格,我们可以这样来看,一列代表一个变量,也就是代表一个属性,单个表格内是一个属性的一个实例,我们大可以将一列代表看成一个变量,并将数据库中的概念一一与数学概念相对应,比如一个列表的主键看成自变量,一个列表的其他列看作是因变量,这为用映射关系来描述三大范式提供了基础

第一范式

第一范式并不涉及属性之间的相互关联,所以就不用详细说了,第一范式也是三大范式中最清楚的一个,也最好理解,具有方便数据的操作等好处。

第二范式

第二范式的自然语言描述为,确保表中的每列都和主键系相关,不能有部分相关,应当是整体相关,个人觉得没有形象的例子其实是有些费解的,我们尝试用数学一些的语言来描述。

每个因变量,都能够表示为包含所有自变量的函数,如果只能表示为部分自变量的函数,就将这部分自变量设置为外键,作为另一张表的主键,并将这些因变量放入另一张表。

既保证,每一张表的非主键都能表示为 F(x,y,z,……) ,其中,x,y,z等为全部自变量(主键)的集合。

第三范式

第三范式确保数据表中的每一列数据都和主键直接相关,而不能间接相关,这个就显得比较模糊了,同样我们用我的语言来重新描述。

在保证第一二范式的前提下,如果存在,一个因变量y,使得在我们变量集中其他的因变量(也就是非主键属性集)能够被表示为这个只含有y的函数,那么就将这个y设定为外键,将能够表示为函数的因变量抽出写另外的一张表,这个表中y为主键,显然新的这个表同时满足第一二三范式,是一张“好的”表。

既保证,一张表中,不存在一个因变量y,或者因变量组y……,能够使得其他因变量能够被表示为 F(y) 或者 F(y,……) 。

小结

在我看来,三大范式,是由于人们对于二维数据的理解较为深,处理较为方便的基础之上,用于规范数据,用类似构造复合函数的方式,保证了同张表内仅存在单一映射,能够使得变量之间不互相纠缠的好办法!

至于能不能用其他的数据结构储存数据?我其实存疑,事实上在学习数据库知识之前,我绝对想不到数据是像类似excel表格一样存储在数据库中的。

为什么不用三维的?或者树状的结构?或者没有发现的其他方式的结构?留待以后再学再思考吧,毕竟刚开始。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值