关系型数据库基本概念

1.

关系型数据库简单的可以理解为二维数据库,表的格式就如Excel,有行有列。常用的关系数据库有Oracle,SqlServer,Informix,MySql,SyBase等。(也即是我们平时看到的数据库,都是关系型数据库)

 

2.

所谓关系型数据库,是指采用了关系模型来组织数据的数据库。关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为数据库架构的主流模型。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。

 

3.

关系型数据库并不是唯一的高级数据库模型,也完全不是性能最优的模型,但是关系型数据库确实是现今使用最广泛、最容易理解和使用的数据库模型。大多数的企业级系统数据库都采用关系型数据库,关系型数据库的概念是掌握数据库开发的基础,所以本节的问题也成为.NET面试中频繁出现的问题之一。

 

4.

关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名。

元组:可以理解为二维表中的一行,在数据库中经常被称为记录。

属性:可以理解为二维表中的一列,在数据库中经常被称为字段。

域:属性的取值范围,也就是数据库中某一列的取值限制。

关键字:一组可以唯一标识元组的属性。数据库中常称为主键,由一个或多个列组成。

关系模式:指对关系的描述,其格式为:关系名(属性1,属性2,…,属性N)。在数据库中通常称为表结构。

 

5.

关系型数据库的优点

关系型数据库相比其他模型的数据库而言,有着以下优点:

容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解。

使用方便:通用的SQL语言使得操作关系型数据库非常方便,程序员甚至于数据管理员可以方便地在逻辑层面操作数据库,而完全不必理解其底层实现。

易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大降低了数据冗余和数据不一致的概率。

 

6.

标准数据查询语言SQL就是一种基于关系数据库的语言,

这种语言执行对关系数据库中数据的检索和操作。

 

7.

关系操作

关系模块中常用的操作包括:

数据查询

选择 投影 连接 并 交 差 除 数据操作 增加 删除 修改 查询

 

什么是主键、外键 

 

若其中某一个属性组(注意是组)能唯一标识一条记录该属性组就可以成为一个主键 

 

(学号姓名性别班级) 其中每个学生的学号是唯一的学号就是一个主键 

(课程编号,课程名,学分)   其中课程编号是唯一的,课程编号就是一个主键 

(学号,课程号,成绩)  成绩表中单一一个属性无法唯一标识一条记录学号和课程号的组合才可以唯一标识一条记录所以学号和课程号的属性组是一个主键成绩表中的学号不是成绩表的主键但它和学生表中的学号相对应并且学生表中的学号是学生表的主键则称成绩表中的学号是学生表的外键 同理成绩表中的课程号是课程表的外键定义

 

主键和外键主要是为了维护关系数据库的完整性总结一下 

1.主键是能确定一条记录的唯一标识

一条记录包括身份正号姓名年龄。身份证号是唯一能确定你这个人的其他都可能有重复所以身份证号是主键。 

2.外键用于与另一张表的关联。是能确定另一张表记录的字段用于保持数据的一致性。 

A表中的一个字段是B表的主键那他就可以是A表的外键。 

 

E-R模型

一、那么什么是E-R模型?

E-R模型即实体-联系模型,E-R模型的提出基于这样一种认识,数据库总是存储现实世界中有意义的数据,而现实世界是由一组实体和实体的联系组,E-R模型可以成功描述数据库所存储的数据。

二、为什么要设计E-R模型?

E-R模型能够更有效和更好的模拟现实世界。

三、E-R模型的基本要素

1) 实体 :实体是E-R模型的基本对象,是现实世界中各种事物的抽象,凡是可以相互区别,并可以被识别的事、物概念等均可认为是实体。在一个单位中,具有共性的一类实体可以划分为一个实体集,例如,学生李明,黄颖等都是实体,为了便于描述,可以定义学生这样的一个实体集,所有学生都是这个集合的成员。

2)属性:每个实体都具有各种特征,称其为实体的属性,如学生有学号,姓名,年龄等属性。实体的属性值是数据库存储的主要数据。能唯一标识实体的属性或属性组称为实体键,如一个实体有多个键存在。则可从中选取一个作为主键。

3)联系:实体间会存在各种关系,如人与人之间可能存在领导与雇员关系等,实体间的关系被抽象为联系。

 

以下例子解释的很好 :引自《Oracle 11g基础教程与实验指导》

联系可分为以下 3 种类型:

(1) 一对一联系(1 ∶1)

A和实体集B来说,如果对于A中的每一个实体a,B中至多有一个实体b与之有联系,而反过来也是如此,则称实体集A与实体集B存在一对一联系。

例如,一个部门有一个经理,而每个经理只在一个部门任职,则部门与经理的联系是一对一的。

(2) 一对多联系(1 ∶N)

对于实体集A和实体集B来说,如果对于A中的每一个实体a,B中有N个实体b与之有联系,而实体B中每一个实体b,A中至多有一个与之有联系,则称体集A与实体集B存在一对多联系。

例如,某校一个班级可以有多个学生,但一个学生只能有一个班级

多对多联系(M ∶N)

对于实体集A和实体集B来说,如果对于A中的每一个实体a,B中有N个实体b与之有联系,而实体B中每一个实体b,A中有M个与之有联系,则称实体集A与实体集B存在多对多联系。

      

实体符号用矩形表示,并标以实体名称,属性用椭圆表示,并标以属性名称,联系用菱形表示,并标以联系名称

  

用关系型数据库替代列式存储 在关系型数据库中_实体集

(1) 一对一联系(1 ∶1)E-R图(画图画的请见谅、)

    

用关系型数据库替代列式存储 在关系型数据库中_主键_02

 

在关系模型中一张二维表格(行,列)对应一个表格,二维表中的每行代表一个实体,每个实体的列代表该实体属性。E-R图最终需要转换为关系模型才有意义。

四、将E-R模型转化为关系模型

1、实体转化为关系  

实体集转化为关系非常简单,只需将实体的属性作为关系的列即可(实体的所有属性);

用关系型数据库替代列式存储 在关系型数据库中_实体集_03

2、联系转化为关系

1)一对一联系需要将其中一个实体的主键作为另一个实体的属性。反映到映射中,将一个关系的主键作为另一个关系的普通列联系本身的属性也应当以列的形式植入。对于一对一关系可将主从关系颠倒,也不会导致信息丢失

 

可将角色编号作为用户关系中的一个普通列,反过来也可以!

2)一对多联系,需要将一的一方作为主表,多的一方作为从表。联系的所有属性为从表的列,这样才不会导致信息丢失。

  如学生与班级:学生信息为从表,班级信息为主表

 

3)一对多。无论联系加入到哪一方都将造成信息丢失。

Id,以及关系的属性---学分作为新关系的列

《参考文献》:郝安林,康会光,《Oracle 11g基础教程与实验指导》