`
callmegod
  • 浏览: 108045 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类
最新评论

关于数据库范式及关系的总结

 
阅读更多

 

关于数据库范式及关系的总结

PowerDesigner的使用:

1 创建概念模型,首先要找出实体,然后再确定实体之间的关系
2 生成报告、交给负责人认可
3 生成物理模型
4 建立数据库连接
5 导入数据库

-------------------------------
数据建模技术:

数据模型:数据库系统中关于数据和联系的逻辑组织的形式表示。
        层次模型、网状模型和关系模型三种,现在应用最广泛的是关系模型。
关系模型与面向对象思想不一致,因此有了ORM来解决表和对象之间的关系。

数据库模式就是数据库结构,确定数据库模式是数据库建模的最重要任务
模式分为逻辑模式、外模式和内模式,实际上可以分别对应到表、视图和索引
模式在英文中是schema

模式:也叫作逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有
用户的公共数据视图。

外模式:是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图
   是与某应用有关的数据的逻辑表示。

内模式:是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。

外模式也叫作子模式或者用户模式,内模式也叫作存储模式。

数据库建模就是确定数据库结构的过程,也就是定义数据库模式的过程。

将现实世界中的事物以及他们之间的联系抽象出来,并且以某种组织方式存储在数据库中。
这种组织方式就是数据库结构。

现实世界中的事物在数据库设计中称为实体,而事物与事物之间的联系叫做关系。

网上购物,业务流程是什么?有哪些事物呢?哪些事物需要持久化?哪些不需要?

数据库建模方法:1 ER图 2 对象定义语言(ODL:Object Defination Language)
矩形表示实体,椭圆表示属性,菱形表示关系

先有一个思路,然后画出ER图,确定好关系,然后导入关系型数据库中。

--------------------------------
数据库范式:
一范式:数据库表中不存在重复字段,并且字段不可分割
二范式:不存在非主键字段对任一主键字段的部分依赖关系(用来约束联合主键
   一个爸爸和一个妈妈决定了一个孩子;一个妈妈决定了一个孩子就是不符合第二范式
   假如必须有两个主键但是你只设了一个主键的话,那么不符合第二范式
三范式:不存在非主键对任一主键的传递依赖关系。
   由a决定b,b决定c,但是没有a直接去决定c,就是传递依赖   
BC范式:
   任何字段都不存在传递函数依赖,即主键对主键没有传递依赖。

---------------------------------------------------------------------

第一范式就不说了,只要是个合法的表都满足第一范式,但是假如有个地址的字段,里面包含
国、省份、市、地区的话,可以通过设置外键,或是分解字段的方法来解决。

 

二范式主要规范联合主键情况:要求非主键字段不能由符合主键的一个完全决定,而必须由符合主键共同决定!
       只要没有使用联合主键,肯定不会出现违反第二范式的情况!
例:学生选课表的设计应该如何实现?
假设选课关系表为学号、姓名、年龄、课程名称、乘积、学分。
那么这个表里面的主键应该为学号和课程名称联合作为主键,这是毫无疑问的,但是不符合第二范式:因为姓名
可以由学号完全决定,和课程名称没有任何关系,也就是说姓名这个非主键字段对这个联合主键有部分依赖关系存在。
同理,学分完全由课程名称来决定,也是部分依赖的。
成绩是不存在部分依赖的,是由学号和课程名称共同决定的

所以这个表是不满足第二范式的,危害如下:
1 数据冗余
2 更新异常,若调整了课程的学分,那么每条记录都要调整
3 删除异常,假如要删一个学生,那么他选的课也跟着丢了,要是这门课没有别人选的话,该课程的信息就永远的丢失了
4 插入异常,假如新来了一门课程,但是没有人选,试问这怎么插入呢?没办法弄……
  
解决不满足第二范式情况的办法是分解主键
建立学生表(学号,姓名,年龄)课程表(课程名称、学分)和选课关系(学号,课程名称,成绩)

一般认为,所有单关键字的数据库表都符合第二范式,因为不可能存在组合关键字

满足第二范式的设计肯定满足第一范式的要求!

 

下面说说第三范式:
要求不存在非关键字段对任一候选关键字段的传递函数依赖关系,其实,就是不能出现非主键字段决定其他非主键字段!

关键字段决定了非关键字段x,而x又决定了另外一个非关键字段y,这就不满足第三范式!

假设须生关系表(学号,姓名,年龄,所在班级,教室编号,班级人数)
主键是学号

学号确定了其余的字段,但是呢,所在班级直接决定了教室编号和班级人数,这就是典型的传递依赖,不满足第三范式

解决方法:
分解实体:学生(学号,姓名,年龄,所在班级)
   学院(班级,地点,人数)
   两者之间用主外键关系联系起来,二者是一对多的关系。

 

BC范式:主键也不可以有传递依赖关系。
例:
假如一个表(班号,课程号,老师号,课程时间)
那么课程号和班号唯一决定是课程时间
而且课程号和老师号也可以决定课程时间
但是呢,班号决定了老师号,这就是说主键存在传递依赖。

解决方法:分解关系
班级号,课程号,课程时间
班级号,老师号
建立成上面两个关系表就ok了

总的来说,各个范式都是在尽力去分解,不把数据都存在一个表中。
应该尽可能的去满足范式的要求!
在性能的要求下,也并非一定要严格遵从范式要求,以适当的数据冗余来提升性能也是一个很好的选择。


怎么在数据库中的表中表示关系:
关系种类:
一对一,多对多,一对多,多对一

怎么在数据库中的表里面表示上面这四种关系??
可以通过外键方式;还可以通过主键对应方式,比如学生和电脑的一对一的关系可以通过
让学生的主键和对应电脑的主键一致来做到,其中必然有一个主键是主动变化的,而另外一个
主键是跟随这这个主键来变化

还有可以通过再建立一个关系表的方式,这个关系表中就有两个主键,一个是电脑,一个是学生
将他们两个关联起来,在学生表和电脑表中都不考虑关系的问题,全部让关系表去考虑

一对多或是多对一的关系里面,用多的那一端来存放外键,还可以用关系表方式。

多对多的关系只能用关系表来解决了,没别的办法了。

因此一对一有三种方式:主键方式,外键方式和关系表方式
一对多有两种方式:外键和关系表方式
多对多只有关系表方式

hibernate中强烈建议使用关系表,这样把对象和关系分离开来,好处理。

分享到:
评论

相关推荐

    详解MySQL 数据库范式

    关于数据库范式,时常有听说过,一直没有详细去了解。一般数据库书籍或数据库课程会介绍范式相关内容,范式也经常出现在数据库考试题目中。不清楚你是否对范式有比较清晰的了解呢?本篇文章我们一起来学习下数据库...

    数据库系统原理总结.pdf

    关于数据库系统原理,我来讲讲我⾃⼰的理 解:主要内容有:数据库基础,关系运算,数据库管理。 1.数据库基础:数据库抽象,DBMS,DBS 数据库抽象:即建⽴模型,包括概念模型,逻辑模型,外部模型和内部模型 概念...

    数据库三大范式

    为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。

    数据库范式及MYSQL优化整体思路

    一、数据库范式  为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定...

    数据库系统概念复习总结.pdf

    数据库系统概念复习总结 数据库系统概念复习总结 数据库系统概念 数据库系统概念 Database Systems Concepts 第六版 来源: // 感谢原作者整理的笔记。 // 更改了部分错误,但不保证叙述完全正确。 // 供复习参考。 ...

    数据库设计三大范式简析

    在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。  在实际开发中最为常见的设计范式有三个: 1.第一范式(确保每列保持原子性) 第...

    数据库+研究生复试+求职+面试题

    包括数据库基本概念及各章节问题回答。可供研究生复试或相关专业岗位面试使用。 1. 基本术语 数据、数据库、数据库管理系统、数据库系统 3. 数据模型的组成三要素 5. 解释二级独立性 6. DBMS(数据库管理系统)的...

    数据库入门(一)范式理解:1NF,2NF,3NF,BCNF,4NF详析

    数据库入门(一)范式理解:1NF,2NF,3NF,BCNF,4NF详析引言范式种类第一范式(1NF)符合1NF的关系中的每个属性都不可再分存在问题第二范式(2NF)在1NF基础上消除了非主属性对码的部分函数依赖二范式判断步骤优缺点第...

    MySQL之范式的使用详解

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

    数据库设计与优化.pdf

    所以我希望按照软件生命周期的不同阶段来总结数据库性能优化相关 的注意事项。 1.2 分析阶段 一 般来说,在系统分析阶段往往有太多需要关注的地方,系统各种功能性、可用性、可靠性、安全性需求往往吸引 了我们大...

    数据库的设计和设计合理性检验.pdf

    数据库的设计和设计合理性检验 数据库的设计和设计合理性检验 以下是学习笔记: ⼀,数据库的设计 ...不合理的情况: 数据库三范事式原则: 1,第⼀范式: 2,第⼆范式: 经过分析后: 3,第三范式: 分析后最后: 总结:

    最新 MySQL 8.0 从入门到实战

    02:什么是关系数据库与非关系型数据库 03:关系型数据库的特点和适用场景 04:非关系型数据库的特点和适用场景 05:关系统型数据库选型步骤 06:为项目选择适合的数据库 07:下载安装VirtualBox 08:准备虚拟服务器 09:...

    SQL Server 2008数据库设计与实现

    通过将理论融入数据库实践,清晰地讲解了关系型数据库的设计原则,完整地展示了如何进行良好的关系型数据库设计,深入揭示了SQL Server 2008的技术细节。  本书浓缩了作者作为SQL Server数据库架构师多年来丰富的...

    数据库资料

    应用范式规范化设计应用第二范式规范化应用第三范式规范化规范化和性能的关系 总结 2-1 在需求分析阶段,设计数据库的一般步骤为:收集信息标识对象标识每个对象的属性标识对象之间的关系在概要设计阶段和详细设计...

    Oracle数据库、SQL

    13.1按范式要求设计表结构 23 13.2多表连接的种类 23 13.3交叉连接 23 13.4内连接 23 13.5外连接 25 13.6非等值连接 27 13.7表连接总结 27 十四、 集合 28 14.1表连接主要解决的问题 28 14.2集合运算 28 14.3集合...

    数据库设计规范化反规范化.doc

    实体关系图是表示实体及实体间关系的图解形式,是数据库设计的初步.常简称E- R图 (3).实体关系图的表现形式: 实体:矩形框 属性:椭圆 关系:菱形框 2.实体图示例 3.实体-关系图(E-R)示例 4.同类实体间可能存在关系 5.二...

    怎样设计良好的数据库.pdf

    3、将E-R图转换成表格 类似于这样 4、利⽤三⼤范式对表进⾏缓解数据冗余和数据表的合理性 由于不是专门研究数据库的,所以对于三⼤范式并不是理解的很透彻。 数据库命名 接下来说⼀下数据库的命名,我习惯于⽤⼩写...

    人脸识别对抗系统——数据库设计心得.pdf

    ⼈脸识别对抗系统 ⼈脸识别对抗系统——数据库设计⼼得 数据库设计... 4 全局结构图展⽰ 全局结构图展⽰ 当前我们的数据库设计共有 12 张表 5 总结与感想 总结与感想 数据库设计的整个过程需要团队所有⼈都参与进来,多

Global site tag (gtag.js) - Google Analytics