sql 范式

原创 2015年07月11日 09:21:16

范式,英文 normal from ,直接翻译就是通用的形式。也就是在数据库设计中的通用设计标准。


在说明一个范式前先声明几个概念。表中的关键字。

一张表总会有好几个字段,其中有某些字段是有一定作用的,叫做关键字,关键字有几种:公共关键字,主关键字,外关键字,候选关键字。

公共关键字就是在表中能够共同表示同样的意思的几部分;

主关键字,也会简称主键,主键可以代表这张表的存在;

外关键字,也会简称外键,就是在这张表中可以通过这个外键找到对应的其他表,在语法中要加上一个映射;

候选关键字就是加入表中有几部分都可以作为关键字,选好其中一个作为主键,那么其他的几个就是候选关键字了。

create table test(

  a int primary key,

 b varchar(3)

);

其中表test就是主键

create table test1(

 a int primary key ,

 b varchar(3),

 test_id int,

 foreign key(test_a) test(a)

);

其中a 是主键,test_id 是外键,外键的映射在下一句中  foreign key(test_a) test(a) ,表明这个外键对应表test的主键。

对于这几个关键字就好比美国选总统一样,所有参加被选举的人一起就是公共关键字,最后当上总统那个就是代表美国的人,即主键,参选但是没被选上的就是候选关键字,如果总统刚选上就死掉了,这个候选人就有资格继续参选,如果有某些国家的外加大使在那里看着,这个人就可以当做外键了。


函数依赖:函数依赖是 一种依赖关系,这种关系没有绝对的存在,要看具体的环境,函数依赖就是一张表中,里面的某些字段是有关联的,其他的一个或几个的存在可以决定其他的字段的存在,这个比如表 test(name,address,identity,factory_address),对于这张表大部分的情景下都可以认为是一个人的name,可以决定他的  address, identity  的存在,所以存在依赖(name)->(address,identity),这就是函数依赖。


在sql中一般有  几种范式  第一范式(1NF),第二范式(2NF),第三范式(3NF),BC范式,(还有第四范式和第五范式,这两个不提)。

    第一范式:就是表的中字段的设计要符合原子性,原子性就是不可分开,比如一个字段  名字,名字有名和姓 的存在,所以这个字段就是不符合原子性的。

    第二范式:表中所有的字段都必须和主键有依赖关系,如果主键是组合主键(多个关键字组合形成主键),也必须是同时和组合主键中的所有字段有依赖关系,不能只和主键中部分字段有依赖关系。这样可以看到,如果主键只是一个字段的话,那表就符合第二范式。如果出现不符合第二范式的字段的情况,可将该字段分离出来。

    第三范式:在第二范式的基础上不存在传递依赖(X->Y,Y->Z),如果出现这种情况可以将原来的表(X,Y,Z),分离为两张表,表1(X,Y),表2(Y,Z)。

    BC范式:在第三方式的基础上,候选关键字不存在相互依赖的关系,比如在一种情景中有(X,Y)->(R,Z),(R,Y)->(X,Z),这样(X,Y)和(R,Y)就属于候选关键字,但注意到有这样的关系X->R  和R->X,这样就不符合第三范式了。


sql-92_bnf巴格达范式

  • 2008年11月24日 11:15
  • 75KB
  • 下载

关于SQL数据库中的范式

范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中...

SQL 中的 1NF 2NF 3NF三大范式

第一范式(1NF) (必须有主键,列不可分) 数据库表中的任何字段都是单一属性的,不可再分   create table aa(id int,NameAge varchar(1...

SQL-Oracle10数据库设计范式

数据库设计范式工具 PowerDesigner     数据库范式非常重要,但从实际开发来看,如果真的全部按照范式去做,则 这个程序没法写,包括查询语句也会变得复杂。   在Oracle中的s...

sql 范式 转

网上搜的范式说明大部分都看不懂的.. 转一篇很好的文章"细说数据库范式"http://www.cnblogs.com/KissKnife/ "(开头的几句话很精辟) 理论性的东西,往往容易把人人...
  • gal1024
  • gal1024
  • 2012年06月01日 15:51
  • 815

sql 范式

网上搜的范式说明大部分都看不懂的.. 转一篇很好的文章"细说数据库范式"http://www.cnblogs.com/KissKnife/ "(开头的几句话很精辟) 理论性的东西,往往容...

sql 三大范式

关系模型原理的核心是“规范化” 概念,当然用数据库的目的是帮我们整理复杂,繁多的数据。规范化是可以将数据的冗余最小化,也就是节约存储空间,但在实际的项目开发中,难免会为了开发效率,而牺牲存储空间,我们...

SQL那些事儿(六)--数据库三大范式

一、基本概念 函数依赖: 通俗描述: 描述一个学生的关系,可以有学号(SNO),姓名(SNAME),系名(SDEPT)等几个属性。由于一个学号只对应一个学生,一个学生只在一个系学习。因此当学...

SQL数据库范式

关系数据库设计范式 简介 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。 目前关系数据库有六种...
  • wbq2018
  • wbq2018
  • 2013年04月01日 22:03
  • 422
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sql 范式
举报原因:
原因补充:

(最多只允许输入30个字)