您的位置:首页 > 编程语言 > Java开发

在java商城开发中关系型数据库设计是是建立在关系模型基础上的数据库

2014-06-05 13:37 363 查看
 关系型数据库设计是是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加·科德于1970年首先提出的,并配合“科德十二定律”。现如今虽然对此模型有一些批评意见,但它还是数据存储的传统标准。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。 关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。关系型数据库设计的理论核心是数据间的函数依赖问题,衡量的标准是关系规范化的程度及分解的无损连接和保持函数的依赖性。函数依赖是最重要的数据依赖。函数依赖又可分为一下几种情况。

    我们在开发中对数据库的设计需要满足三大范式,那么数据库规范的三大范式是什么呢?下面就来介绍。

    关系型数据库的设计方法之一就是要满足范式的模式。主要的范式有 1NF、2NF、3NF、BCNF、4NF、5NF。在一般的项目中做到3NF就可以了。下面列举 前3个范式的例子,以及他们存在的问题,来帮助大家更好的理解,数据库范式的实现。

    1NF(第一范式)

    根据第一范式的定义,如果关系模式中R的每个分量是不可再分的数据项,即满足原子性,每一列都不允许再次拆分,则关系模式R属于第一范式。举个例子,供应者和它所提供的零件信息。

    FIRST(SNo,SName,Status,City,Pno,Qty)

    F = {Sno->Sname,Sno->Status,Status->City,(Sno,Pno)->Qty} ,从上面可以看出每个数据项都是不可以再分的,所以是第一范式。

    下面举一个不是1NF的例子,方便大家进行对比。

    如果上面的上述R中有Address的数据项,它又可以分为Province,City,County etc.所以他不满足第一范式。

    2NF(第二范式)

    2NF是在1NF的基础上进行扩展的,在满足1NF的基础上,每一个非主属性完全依赖于码(码即能够唯一确定该数据行的标识属性)。

    FIRST关系中的码是Sno,Pno,而Sno->Status,因此非主属性Status部分依赖于码,因此不是2NF。

    如果上述的FIRST关系进一步分解FIRST1(Sno,Sname,Status,City)和FIRST(Sno,Pno,Qty).可以看出FIRST1的码为SNo,非主属性完全依赖于Sno,所以属于2NF。FIRST2的码为SNo、Pno,非主属性Qty完全依赖于Sno、Pno,所以也属于2NF。

    3NF(第三范式)

    第三范式是在2NF的基础上,当消除了非主属性的传递函数依赖,则成为第三范式。由于Sno->Status,Status->City,所以关系模式存在传递函数依赖,不满足3NF。

    如果在2NF的基础上再次进行划分FIRST1(Sno,Sname,Status)   FIRST2(Status,City)   FIRST3(Sno,Pno,Qty),关系模式不再存在传递函数依赖。所以符合第三范式的定义。要注意的是多个范式之间存在包含关系 5NF ∈4NF  ∈BCNF ∈3NF∈ 2NF∈ 1NF,范围越来越小,划分越来越细,数据冗余和修改操作不一致、插入异常、删除异常的现象也在也来越少。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息