关系型数据库,摘要

  关系型数据库,简单理解就是“行列-表-库”形式的二维数据库,采用关系模型来组织数据,简而言之就是二维表之间的字段可能通过某种关系而组合起来,形成规模较大的数据网络;当然,单独的关系表也可以作为一个简单库。  

  关系型数据库相较于其他类型数据库的最大优势是可以保持数据的一致性(事务处理),其他还有诸如以标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处)、 可以进行Join等复杂查询等。

  关系型数据库也有相应的弊端,比如海量的读写都集中在一个数据库上的话,将会严重影响数据库的工作效率,所以大部分关系型数据库的用户都采用了主从数据库的形式来缓解负荷问题,主库负责写入,从库负责读出。但是这又可能造成主从数据更新不一致或冲突等问题。为了避免这样的问题,需要把对每个表的请求分别分配给合适的主数据库来处理。若将大数据库进行分割,实现并行操作的话,又无法进行join处理。为了加快查询的效率,一般会为关系型数据库添加索引,当表中需要添加一些必要字段时,表的结构将发生变化。此时,需要对表进行共享锁定,这期间数据的增删改查将停滞。如果需要进行一些耗时操作,例如为数据量比较大的表创建索引或是变更其表结构,就需要特别注意,长时间内数据可能无法进行更新。另外,当表结构不固定时,即采用了相对变化较多的字段时,关系型数据库也是比较难于处理的,频繁的更新表结构会使工作量大大增加。而如果查询条件相对简单时,也没有必要使用关系型数据库。

  关系型数据库的三范式:  

  • 第一范式:每一个属性(字段)都是原子项,不可分割

        此处的不可分割,是指在可分割的情况下必须分割,这是在应用环境中来判断的,当属性是文档时,虽然文档有段落标记,但还是不应该分割。

举例:        

--数据库表中的任何字段都是单一属性的,不可再分
create table aa(id int,NameAge varchar(100))
insert aa values(1,‘‘25-女‘‘)
--没有达到第一范式 

create table aa(id int,name varcahr(10),age char(2))
insert aa values(1,‘‘25‘‘,‘‘女‘‘)
--达到第一范式
  • 第二范式:每个次属性(字段)要完全函数依赖于候选键,或者是主键

        关键词是“完全依赖”,与“部分依赖”或“局部依赖”相对,如果候选键或主键由两个属性组成,非主属性不能只依赖与其中一个或部分属性。

举例:

create table sci( sno int(32),cno int(32),grade int(32),credit int(32),
primary key sno,cno)
课程(cno)1---1学分(credit)
学生(sno)n---n课程(cno)
学生+课程--->分数(grade)
sci
sno cno grade credit
1    1   60     80
2    1    90     80
3   1    70     80
.   .   .      .
.   .   .     .
.    .   .     .
/*
如此以来,学分被大量重复存储,数据冗余
如要某课程学分,则要大量重复操作
如要加新课程,由于sno和cno共同做为主键,则在加入新课程时,必须有人选该课
如某学生某课程结业,则该学生其它课程信息也同时被删除了
总之
这种设计不太好吧,非关键字属性credit仅函数依赖于cno,也就是credit部分依赖组合关键字(sno,cno)而不是完全依赖
解决
分成两个关系模式 sc1(sno,cno,grade),c2(cno,credit)。新关系包括两个关系模式,它们之间通过sc1中的外关键字cno相联系,需要时再进行自然联接,恢复了原来的关系
*/
  • 第三范式:所有非主属性(字段)对任何候选关键字都不存在传递依赖

        关键词是“传递依赖”,如果非主属性通过另一个非主属性依赖主键,则是传递依赖。

举例:

--例
S1(SNO,SNAME,DNO,   DNAME, LOCATION)
          学号 姓名   所在系 系名称 系地址
/*
关键字SNO决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是2NF。但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。
*/
/*
原因:关系中存在传递依赖造成的。
即SNO 1->1 DNO。 而DNO 1->n SNO却不存在,而DNO -> LOCATION存在, 因此关键字 SNO 对 LOCATION 函数决定是通过传递依赖 SNO -> LOCATION 实现的。也就是说,SNO不直接决定非主属性LOCATION。
*/
/*
解决目地:每个关系模式中不能留有传递依赖。
解决方法:分为两个关系 S(SNO,SNAME,DNO),D(DNO,DNAME,LOCATION)
注意:关系S中不能没有外关键字DNO。否则两个关系之间失去联系
*/

 相关术语:

  • 超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键
  • 候选键(candidate key):不含有多余属性的超键称为候选键
  • 主键(primary key):用户选作元组标识的一个候选键称为主键
  • 主属性(Prime Attribute):候选键中的属性称为主属性
  • 非主属性(Non-Key Attribute):不包含在任何候选键中的属性称为非主属性。
时间: 2024-07-31 16:08:40

关系型数据库,摘要的相关文章

关系型数据库性能优化总结(转)

关系型数据库性能优化总结 作者: 刘晓军  来源: 博客园  发布时间: 2010-12-12 21:09  阅读: 2763 次  推荐: 1   原文链接   [收藏] 摘要:今天我们要讨论的是关系型数据库性能优化的问题,平时我们也最好要遵守一定的规则,希望对大家有所帮助. 对于web应用开发,多数性能瓶颈均出现在数据库上,除了采用分布式架构或云处理(大公司基本上都是),更重要的是平时程序设计时要遵照一些规则,从根本上提高系统的性能,以下总结了一些常用的规则方法,仅供参考,欢迎跟帖补充...

形象了解关系型数据库三大范式

接下来就对每一级范式进行一下解释,首先是第一范式(1NF).符合1NF的关系(你可以理解为数据表."关系"和"关系模式"的区别,类似于面向对象程序设计中"类"与"对象"的区别."关系"是"关系模式"的一个实例,你可以把"关系"理解为一张带数据的表,而"关系模式"是这张数据表的表结构.1NF的定义为:符合1NF的关系中的每个属性都不可再分.表1所示的

关系型数据库和文档型数据库的比较

关系型数据库 比较 nosql和关系型数据库比较? 关系型数据库与NOSQL数据库的区别 10个出色的NoSQL数据库 15个nosql数据库 走近NoSQL数据库的四大家族 深度解读

关系型数据库与非关系型数据库的区别

在关系型数据库中,导致性能欠佳的最主要因素是多表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询.     为了保证数据库的ACID特性(ACID:● 安全存储合适的数据  ●快速检索合适的数据  ●支持多个并行的用户会话 ), 我们必须尽量按照其要求的范式进行设计,关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于表与表之间进行连接等操作,但从另一个角度来说它也是关系型数据库性

关系型数据库

最初人们都是以纸质文件保存数据,为了保存这些纸质文档,我们可能需要很多的文件夹和文件柜,而且需要对他们进行编号排列,而且如果需要进行查找,修改会极为的不方便,在计算机出现以后我们可以使用电子文件保存数据,大大减少了存储问题,但是同样的进行查找修改数据存在着诸多不便,因此提出数据库的概率,方便进行数据的集中控制. 关系型数据库是数据库的一种模式,采用关系模型,将世界看成实体和联系组成,实体通过其具备的属性来描述,将实体按照属性存放到关系数据库的核心单元--表中,表中的每一行代表一个实体对象,每一列

图数据库与关系型数据库的区别与联系

最近我在用图形数据库来完成对一个初创项目的支持.在使用过程中觉得这种图形数据库实际上挺有意思的.因此在这里给大家做一个简单的介绍. NoSQL数据库相信大家都听说过.它们常常可以用来处理传统的关系型数据库所难以解决的一系列问题.通常情况下,这些NoSQL数据库分为Graph,Document,Column Family以及Key-Value Store等四种.这四种类型的数据库分别使用了不同的数据结构来记录数据.因此它们所适用的场景也不尽相同. 其中最为特别的便是图形数据库了.可以说,它和其它的

​NOSQL与关系型数据库的区别

关系型数据库存在的瓶颈 1.高并发读写需求网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈 2.海量数据的高效率读写网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的 3.高扩展性和可用性在基于web的结构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负

mysql系列之一关系型数据库基础理论

mysql-关系型数据库基础理论 关系模型:(结构化数据模型) 关系模型 实体- 关系模型 对象关系模型:基于对象的数据模型 半结构化数据模型 关系:关系代数运算 交集: 并集: 差集: 全集: 补集: SQL:结构化查询语言 DML:数据操作语言 insert delete select update DDL:数据定义语言 create drop alter DCL:数据控制语言 grant revoke 关系型数据库 表示层:表 逻辑层:存储引擎 物理层:数据文件 数据存储和查询 存储管理器

关系型数据库知识小结

一.基础术语 DML(data manipulation language): 如SELECT.UPDATE.INSERT.DELETE,主要用来对数据库里的数据进行操作的语言 DDL(data definition language): 主要的命令有CREATE.ALTER.DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,大多在建立表时使用. DCL(Data Control Language):数据库控制功能.是用来设置或更改数据库用