文档章节

三大范式及存储方式

自由的角马
 自由的角马
发布于 2015/01/10 13:57
字数 744
阅读 8
收藏 0

数据库三大范式

第一范式(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;

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

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

聚簇存放,记录聚簇是指将不同类型的记录分配到相同的物理区域中,以充分利用顺序性的优点,提高访问速度。



本文转载自:http://blog.csdn.net/luoweifu/article/details/8814030

自由的角马
粉丝 1
博文 269
码字总数 0
作品 0
文山
私信 提问
Mysql 数据库的三大范式

一、数据库设计范式 1. 什么是范式 简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据存储...

edison_kwok
04/30
25
0
三大范式和BC范式

引言 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入 (insert)、删除(delete)和更新(update)操作异常。反之则是乱七八...

楠木楠
2016/10/31
224
0
数据库三大范式

概述 一般地,在进行数据库设计时,应遵循三大原则,也就是我们通常说的三大范式,即第一范式要求确保表中每列的原子性,也就是不可拆分;第二范式要求确保表中每列与主键相关,而不能只与主...

stutterr
2017/10/08
0
0
hibernate与数据库建模--原作robbin

其实围绕Hibernate的话题,我都已经说过不下30遍,以致于最近两年以来,我对所有Hibernate的问题都不愿意再回应。另外最近一年多来,使用Rails的ActiveRecord,让我对ORM的认识又加深了很多,...

ChowJames
2012/09/02
360
0
数据库 三大范式

数据库设计三大范式 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的...

LYQ1990
2016/04/29
42
0

没有更多内容

加载失败,请刷新页面

加载更多

【jQuery基础学习】05 jQuery与Ajax以及序列化

本文转载于:专业的前端网站➭【jQuery基础学习】05 jQuery与Ajax以及序列化 好吧,这章不像上章那么水了,总是炒剩饭也不好。 关于AJAX 所谓Ajax,全名Asynchronous JavaScript and XML。(也...

前端老手
23分钟前
10
0
CVE-2019-14287(Linux sudo 漏洞)分析

作者:lu4nx@知道创宇404积极防御实验室 作者博客:《CVE-2019-14287(Linux sudo 漏洞)分析》 原文链接:https://paper.seebug.org/1057/ 近日 sudo 被爆光一个漏洞,非授权的特权用户可以...

极客君
24分钟前
6
0
关于分布式,你需要知道的真相

目录 一、分布式锁 数据库的唯一索引 Redis 的 SETNX 指令 Redis 的 RedLock 算法 Zookeeper 的有序节点 二、分布式事务 2PC 本地消息表 三、CAP 一致性 可用性 分区容忍性 权衡 四、BASE 基...

李红欧巴
24分钟前
7
0
读书笔记:深入理解ES6 (附录B)

附录B:了解ES7(2016)   ES6经历了4年的发展,之后TC-39决定将发布周期转换为每年一版,以确保新语言特性能够更快地发展。   ES6中添加了三个语法特性,下面一一来讲。 第1节 指数运算...

张森ZS
30分钟前
13
0
计算机公开课推荐 2019.8

欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 面试求职交流群 724187166 ApacheCN 学习资源 编程 哈佛 CS50:计算机科学导论 视频 MIT 6.00.1x:计算机科...

ApacheCN_飞龙
30分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部