在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,范围越来越小,划分越来越细,数据冗余和修改操作不一致、插入异常、删除异常的现象也在也来越少。
我们在开发中对数据库的设计需要满足三大范式,那么数据库规范的三大范式是什么呢?下面就来介绍。
关系型数据库的设计方法之一就是要满足范式的模式。主要的范式有 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,范围越来越小,划分越来越细,数据冗余和修改操作不一致、插入异常、删除异常的现象也在也来越少。
相关文章推荐
- JAVA操作数据库方式与设计模式应用-Java基础-Java-编程开发
- 用Java设计下载软件-Java基础-Java-编程开发
- JAVA设计模式系列之Adapter(适配器)-Java基础-Java-编程开发
- 黑马程序员--java基础--概述及开发环境的建立
- [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
- java基础第十讲——数据库、单例设计模式、服务器、项目(数据库—服务器—网络)
- Swing是MVC设计的典范-Java基础-Java-编程开发
- 大型Java多用户商城系统设计开发的心得和困难
- web开发之商城订单模块数据库设计
- Java软件开发基础知识梳理之(3)------JDCB操作数据库性能优化策略
- Java连接Oracle数据库开发银行管理系统【二、设计篇】
- 在Eclipse中用SWT设计界面-Java基础-Java-编程开发
- java中删除数据库中重复数据的几个方法-Java基础-Java-编程开发
- 大型Java多用户商城系统设计开发的心得和困难
- java连接常见数据库的连接字符串-Java基础-Java-编程开发
- java OA 系统开发一:数据库设计之用户—角色—权限分配
- Java基础-设计一个Java类所需的方法-Java基础-Java-编程开发
- Hypersonic SQL开源数据库方向比较流行的纯Java开发的关系型数据库
- 大型Java多用户商城系统设计开发的心得和困难
- 【Java基础】开发中的23种设计模式详解