字段、数据库表-三大范式及存储方式-by小雨

这几周个人几篇文章介绍了改字段、数据库表-的文章. 关联文章的地址

    

 

    

数据库三大范式

    第一范式(1NF):
是指数据库表的每一列都是不可分割的基本数据项,统一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。个人总结:不能有表中表。

    如数据表不能这样计划,因为数据表的一个维二表:

    

姓名思想道德素质测评(20%) 专业素质测评(60%) 
础基分励奖分罚惩分最后得分名排 必修课成就 励奖分罚惩分最后得分名排
得分名排
张三780078271.7100.071.71
王五780078271.3240.00.071.32
李四780078270.8250.02.068.83

    而这样计划是可以的:

    

姓名C言语javaMySQLOracle
张三78886878
王五78558778
李四78869156

    
第二范式(2NF):
要求数据库表中的个每实例或行必须可以被唯一地辨别,数据库表中不存在非症结字段对任一候选症结字段的分部函数依赖(分部函数依赖指的是存在合组症结字中的某些字段定决非症结字段的况情),也即全部非症结字段都完整依赖于意任一组候选症结字。个人总结:非主属性依赖于主属性
如以下成就表

    

student_idcourse_idgradebirthday
201016611561991,07,14
201016623581993,7,25

    这样计划不可,因为grade完整依赖于主码student_id、course_id,而birthday只依赖于分部主码student_id。所以要将其拆成分两个表

    student(student_id, birdthday);

    grade(student_id, course_id, birthday); 

    course_id为联系student表的外键

    

第三范式(3NF):
要求一个数据库表中不包括已在其它表中已包括的非主症结字信息,在第二范式的础基上,数据表中如果不存在非症结字段对任一候选症结字段的传递函数依赖则符合第三范式。个人总结:不能有传递性

    如以下表

    

    

student_idcourse_idbirthdaySD(在所系的名称)SL(在所宿舍楼)
2010166111991,07,14软件学院1栋
2010166231993,7,25经管学院2栋

    student_id为主码,SL依赖于student_id,但可以从非主码属性SD导出,即知道了SD,也就知道了SL。可以奖这个表拆成分两个表,如下:

    grade(student_id, course_id,SD);

    department(SD, SL);

    SD为联系grade表的主键

    

    

数据库的存储式方

    次序放存,均匀询查次数为系关的录记个数的1/2;

    杂凑存入,均匀询查次数由杂凑算法定决;

    索引放存,要肯定立建何种索引,及立建索引的表和属性;

    聚簇放存,录记聚簇是指将不同型类的录记分配到同相的物理区域中,以充分利用次序性的长处,进步问访速度。

    


    

文章结束给大家分享下程序员的一些笑话语录: PC软件体积大,是因为一个PC软件功能往往较多,能够满足你一个方面的需求,而一个iphone软件往往没几行代码,干一件很小的事情,自然需要的软件就多。就像吃西瓜和吃瓜子的来比数目,单位不同啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值