数据库设计二《函数依赖和三范式》

函数依赖:

定义:R(U)是在属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能关系r,r中的不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y,或者Y函数依赖X,记作X--->Y。

单纯的概念有点难以理解,通过例子1:属性集U,关系模式R(U),子集X,Y,可能关系r1。

可以理解为X能唯一确定Y,则X--->Y。常用为主键------>其他属性

函数依赖和三范式

函数依赖的分类:完全依赖,部分依赖,传递依赖。

完全依赖和一范式

完全依赖:X--->Y。Y只能有X推到出来

例子2:选课关系(学号,课程号,成绩)

(学号,课程号)--->成绩

一范式:主要确定属性的原子性,每个属性不可再分。

例子3:职工号,姓名,电话号码组成一个表(电话号码有包括手机号,家庭号码)

修改方法:1、新建一个表,职工号为主键,添加手机号和家庭号码两个属性。

2、强制只能选择一个号码属性。

二范式消除部分依赖

部分依赖:X--->Y Y除了能有X推到出来外还可以有其他属性推到出来。

例子4:选课关系(学号,课程号,成绩,课程名)

(学号,课程号)--->课程名,   课程号--->课程名

二范式:非主键属性完全依赖主键,二范式的作用主要是消除部分依赖。

例子4可以改为两个关系模式:选课关系(学号,课程号,成绩,课程名)

课程关系(课程号,课程名)

主键是组合属性的时候容易出现部分依赖,主键是单个属性的时候只要符合第一范式就会符合第二范式。

三范式消除传递依赖

传递依赖:X--->Y 、Y--->Z 则X--->Z

例子5:选课关系(学号,姓名,专业号,专业名,所属学院号)

学号--->专业号,专业号--->专业名。

三范式:在符合二范式的基础上,没有非主属性传递依赖函数。

例子5解决方法:转换成两个关系模式,消除传递依赖。

选课关系(学号,姓名,成绩)

专业关系(专业号,专业名,所属学院号)

三范式作为数据库设计的一个标准,确保非主键属性都完全依赖主键属性。

时间: 2024-10-11 22:32:36

数据库设计二《函数依赖和三范式》的相关文章

数据库设计时不得不违背三范式的情景

1.在进销存系统中,订单信息中关联到好多其他的基本信息,比如:客户,付款方式,货运方式等,这些信息是有专门表进行维护的,在下订单时也是用下拉框选择的,但在保存订单信息时,不能只记录所谓的外键ID,而是应该同时记录名称等其他的信息. 这是因为订单不能因为没有了客户ID或是付款方式ID而不知道客户与付款方式了.对于订单这种客观存在的事物,是具有一定的历史性质的,因此在设计时应该与其他的关联信息可以“断开”,这也就是保证了订单的独立性. 摘自:http://www.cnblogs.com/tongtk

数据库设计中的四个范式

在创建一个数据库的过程中,必须依照一定的准则,这些准则被称为范式,从第一到第六共六个范式,一般数据库设计只要遵循第一范式,第二范式,和第三范式就足够了.满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息. I.关系数据库设计范式介绍 1.1 第一范式(1NF)无重复的列 所谓第一范式(1NF)是指数据库表的每一列都是不可分割

数据库设计中的四个范式(转)

http://blog.sina.com.cn/s/blog_4f925fc30102e9ze.html 在创建一个数据库的过程中,必须依照一定的准则,这些准则被称为范式,从第一到第六共六个范式,一般数据库设计只要遵循第一范式,第二范式,和第三范式就足够了.满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息. I.关系数据库

浅谈数据库设计二三事

作为程序员,程序设计前的数据库设计非常重要,这将直接关系到紧接着的代码编写工作,这里谈谈有关数据库设计过程中的一些细节问题.  一.数据表主键的字段选择(ID,Code,Number) ID(编号)一般是选择GUID,这种格式的字符串是一串全球唯一的字符串.当程序需要调用不同平台上的相同结构的数据库时,建议使用guid来作为主键.这样做的好处是,当在某一平台上汇总不同平台的数据时,同一表中的数据汇总不会出现因为主键相同而无法正常汇总的情况.Code(编码)一般是一串非全数字的字符串,比如字母混合

数据库设计关系规范化的标准—范式

预备知识:属性:实体所具有的某一特性称为属性 码:唯一标识实体的属性集称为码,如果一个实体有多于一个候选码,则选定其中一个为主码 包含在任何一个候选码中的属性称为主属性,不包含在任何码中的属性叫做非主属性. 多值依赖:设于关系模式R(U),U 是属性全集,X,Y和Z是U的子集,且Z=U-Z-Y,如果对于R的任一关系r,对于X的一个确定值,存在Y的一组值与之对应,且Y的这组值仅仅决定于X的至而与Z值无关,此时称Y多值依赖与X.在多值依赖中,若Z不是空集,则称非平凡的多值依赖,否则是平凡的多值依赖.

数据库设计理论与实践·<三>物理设计

一.物理设计核心任务与关键细节 二.物理设计经验之谈 1.数据类型的设计:建议字段数据类型定义时结合以下几点(以MYSQL为例) 1)不适用image,而使用varbinary等 2)不使用text和ntext,而使用varchar或者nvarchar 3)不使用money和small,而使用decimal 4)使用bit而非char(1) 来表示男/女,或者是/否的布尔值 5)自增主键根据预期范围选择int或者bigint,GUID使用unique identifier而非varchar(N)

学生成绩数据库设计 二 数据库设计

数据库表关系图 数据库脚本建表脚本 1 /*学生表*/ 2 CREATE TABLE Student 3 ( 4 StuNO NVARCHAR(12) NOT NULL PRIMARY KEY,/*学号*/ 5 StuName nvarchar(20) not null,/*姓名*/ 6 StuState int not null default(1),/*学籍状态.1:在读:2:试读:3:退学:*/ 7 StuJoinYear int /*入学年份*/ 8 ) 9 /*学年表*/ 10 CRE

数据库设计二

1. 2. 3. 4. 5. 6. 6. 7. 8. 9. 10.

mysql数据库的三范式的设计与理解

一般的数据库设计都需要满足三范式,这是最基本的要求的,最高达到6NF,但是一般情况下3NF达到了就可以 一:1NF一范式的理解: 1NF是关系型数据库中的最基本要求,就是要求记录的属性是原子性,不可分,就是属性不能分,这是关系型数据库的基本要求,不满足这个就不能叫关系型数据库了 例如: 讲师 性别 班级 教室 代课时间 代课时间(开始,结束)韩忠康 Male php0331 102 30天 2013-03-31,2013-05-05韩忠康 Male php0228 106 30天 2013-02