这几周个人几篇文章介绍了改字段、数据库表-的文章. 关联文章的地址
数据库三大范式
第一范式(1NF):
是指数据库表的每一列都是不可分割的基本数据项,统一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。个人总结:不能有表中表。
如数据表不能这样计划,因为数据表的一个维二表:
姓名 | 思想道德素质测评(20%) | 专业素质测评(60%) | |||||||||
础基分 | 励奖分 | 罚惩分 | 最后得分 | 名排 | 必修课成就 | 励奖分 | 罚惩分 | 最后得分 | 名排 | ||
得分 | 名排 | ||||||||||
张三 | 78 | 0 | 0 | 78 | 2 | 71.7 | 1 | 0 | 0.0 | 71.7 | 1 |
王五 | 78 | 0 | 0 | 78 | 2 | 71.3 | 24 | 0.0 | 0.0 | 71.3 | 2 |
李四 | 78 | 0 | 0 | 78 | 2 | 70.8 | 25 | 0.0 | 2.0 | 68.8 | 3 |
而这样计划是可以的:
姓名 | C言语 | java | MySQL | Oracle |
张三 | 78 | 88 | 68 | 78 |
王五 | 78 | 55 | 87 | 78 |
李四 | 78 | 86 | 91 | 56 |
第二范式(2NF):
要求数据库表中的个每实例或行必须可以被唯一地辨别,数据库表中不存在非症结字段对任一候选症结字段的分部函数依赖(分部函数依赖指的是存在合组症结字中的某些字段定决非症结字段的况情),也即全部非症结字段都完整依赖于意任一组候选症结字。个人总结:非主属性依赖于主属性
如以下成就表
student_id | course_id | grade | birthday |
20101661 | 1 | 56 | 1991,07,14 |
20101662 | 3 | 58 | 1993,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_id | course_id | birthday | SD(在所系的名称) | SL(在所宿舍楼) |
20101661 | 1 | 1991,07,14 | 软件学院 | 1栋 |
20101662 | 3 | 1993,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软件往往没几行代码,干一件很小的事情,自然需要的软件就多。就像吃西瓜和吃瓜子的来比数目,单位不同啊。