说明:大多数初学者对于关系数据库中的范式很是头疼,我本人也是,所以今天又看了视频,总结了一下内容,尽量语言通俗易懂,少用专业术语以及概念。

首先要理解几个键值。

超键:在关系模式中,能唯一标识元组的属性集称为 super key。

候选键:关系模式中,能唯一标识元组并且不含多余属性的属性集称为候选键。值得注意的是,超键与候选键的区别,超键可能含有多余属性,而候选键不能。

主键:在一个关系的若干个候选键中随意指定一个作为关键字,此关键字就是主键。

外键:关系R1中的属性或属性组非R1的码,但它是其他关系的码,那么该属性集对于关系模式R1而言是外键。

主属性:候选码的所有属性称为主属性。

如何区分超键,候选键,主键?

相同点:功能方面,用于唯一标识一个元组。

不同点:超键有多余的属性,主键和候选键没有,它们中的属性是必要的。主键是候选键的一个,只是被数据库设计者选中而已。

联想理解:候选人和候选键,主席与主键。(也就是说,候选键中的任何一个键都可以作为主键,只是设计者之选择了其中的一个。)

(例子是检验概念的唯一标准),大家看例子吧。

例1:学生(学号,姓名,性别,专业号,年龄)

(学号,姓名)是超键,而不是候选键,学号是候选键,同时也是主键。

例2:学生(学号,姓名,性别,专业号,年龄)主键:学号,外键:专业名

专业(专业号,专业名)主键:专业号,外键:无

例3:成绩(学号,姓名,课程号,成绩)学生无同名。

(学号)等价于(姓名)

(学号,课程号)候选键

(姓名,课程号)候选键

所以主属性:学号,姓名,课程号

范式

1NF:通俗的说,就是所有的属性都是不可再分的,复合属性是不允许的。(这一点容易理解)

2FN:

先了解部分函数依赖的概念。

部分函数依赖:主码的部分只要有一部分就可以确定属性的值。

在第一范式的前提下,保证函数依赖关系是全部函数依赖,而非部分函数依赖。

第三范式:

在第二范式的前提下,且没有函数传递依赖于码。

定理:如果某个关系模式,它的关键字是单个关键字,没有部分的函数依赖问题,那么它的肯定是2NF。(仔细理解这句话)

我有点笨,还是初学者,所以有什么不对的地方,还请大家多多指点。

SqlServer------范式小结的更多相关文章

  1. sqlserver索引小结

    1.1 什么是索引? SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 下面举两个简单的例子: 图书馆的例子:一个图书 ...

  2. SQL范式小结

    说明:大多数初学者对于关系数据库中的范式很是头疼,我本人也是,所以今天又看了视频,总结了一下内容,尽量语言通俗易懂,少用专业术语以及概念. 首先要理解几个键值. 超键:在关系模式中,能唯一标识元组的属 ...

  3. 数据库范式小结 1NF 2NF BCNF 3NF 4NF DB normal form

    1. 1NF指关系中的每个变量不可再分 2. 2NF指消除了非主属性对码(candidate key)的部分依赖的1NF 比如(S#,C#)-> SN ,(S#,C#)-> SD .S#- ...

  4. MySQL 基础回顾

    mysql 回顾 数据库的设计必须满足三范式 1NF: 强调列的原子性,列不可拆分 eg: 一张表(联系人) 有(姓名,性别,电话)三列,但是现实中电话又可分为家庭电话和公司电话,这种表结构设计就不符 ...

  5. MySQL 表的约束与数据库设计

    DQL 查询语句 排序 # 单列排序 * 只按某一个字段进行排序,单列排序 # 组合排序 * 同时对多个字段进行排序,如果第1个字段相等,则按照第2个字段排序,依次类推 * 语法: # 具体操作 * ...

  6. MySQL:基础语法-3

    MySQL:基础语法-3 记录一下 MySQL 基础的一些语法,便于查询,该部分内容主要是参考:bilibili 上 黑马程序员 的课程而做的笔记,由于时间有点久了,课程地址忘记了 上文MySQL:基 ...

  7. SqlServer之数据库三大范式

    分析: 数据库设计应遵循三大范式分别为: 第一范式:确保表中每列的原子性(不可拆分): 第二范式:确保表中每列与主键相关,而不能只与主键的某部分相关(主要针对联合主键),主键列与非主键列遵循完全函数依 ...

  8. sqlserver 连接远程数据库小结

    A,B两个数据库,不在同一台服务器实例 当需要通过sqlserver语句来实现对远程数据库操作(OPENDATASOURCE): select * from -- 操作类型 OPENDATASOURC ...

  9. sqlserver数据库三范式的理解

    从来都是听过概念,过一段时间就忘记了,根本就没有深入的理解.这次梳理一遍,用自己的方式记录一下. 1nf 原子性,不可拆分性 例如一张表里包含一个class属性(软件系,外语系,经贸系...)字段,这 ...

  10. 【SqlServer系列】数据库三大范式

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

随机推荐

  1. c++使用http协议上传文件到七牛云服务器

    使用c++ http协议上传文件到七牛服务器时,比较搞的一点就是header的设置: "Content-Type:multipart/form-data;boundary=xxx" ...

  2. C#进阶之路(七)反射的应用

    反射在C#中的应用还是很多的,但它对代码的性能有一定影响. 反射的性能: 使用反射来调用类型或者触发方法,或者访问一个字段或者属性时clr 需要做更多的工作:校验参数,检查权限等等,所以速度是非常慢的 ...

  3. sqlalchemy的缓存和刷新

    其实只是第一次查询了数据库,其他的时候都使用的是缓存,所以有时候,因为这个特性会出错,所以需要刷新对象或者使对象过期 参考链接:http://www.cnblogs.com/fengyc/p/5369 ...

  4. 从如何优化SQL入手,提高数据仓库的ETL效率

    1        引言数据仓库建设中的ETL(Extract, Transform, Load)是数据抽取.转换和装载到模型的过程,整个过程基本是通过控制用SQL语句编写的存储过程和函数的方式来实现对 ...

  5. Linux修改数据库的访问权限

    以下方法可以帮助你解决这个问题了,下面的语句功能是,建立一个用户为monitor密码admin权限为和root一样.允许任意主机连接.这样你可以方便进行在本地远程操作数据库了. CREATE USER ...

  6. Java Integer和String内存存储

    标签: java内存string 2016-01-10 12:51 1545人阅读 评论(2) 收藏 举报  分类: Java(7)  版权声明:本文为博主原创文章,未经博主允许不得转载. 先看代码: ...

  7. 用css来写一个背景图片的切换

    代码如下: <!DOCTYPE HTML> <htmllang="en-US"> <head> <meta charset="U ...

  8. nginx 限制

    在nginx.conf里的http{}里添加: http{ limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $s ...

  9. Win7旗舰版一直显示检查更新的问题

    最近部门机器从新安装win7 64位 旗舰版之后,每次检查更新,都会一直卡在检查更新的界面过不去,上网搜了一下,看到了网友提供的解决办法, 测试了一下,果然可以.记录下来,以备后用: 到微软官网去下载 ...

  10. Jmeter 录制浏览器https请求

    Jmeter录制脚本时,跟http脚本录制主要区别是,https录制需要添加安全证书. 一Jmeter代理服务器及证书配置. 1.打开Jmeter,右键测试计划添加线程组,右键工作台→非测试元件→ht ...