数据库系统原理(二)关系和关系模式

数据库系统原理(二)关系和关系模式

文章目录

  • 数据库系统原理(二)关系和关系模式
    • 关系和关系模式
      • 什么是关系模型?
      • 属性类型
      • 关系的概念
      • 码,键
      • 外键(foreign key)
    • 关系代数
      • 关系代数
        • 六个基本运算
        • 附加运算
    • 扩展的关系代数运算
        • 广义投影
        • 聚集函数
        • 外连接
    • 数据库的修改

关系和关系模式

什么是关系模型?

关系数据库基于关系模型,是一个或多个关系组成的集合

关系通俗来讲就是表(由行和列构成)

关系模型的主要优点是其简单的数据表示,易于表示复杂的查询。

SQL语言是最广泛是使用的语言,用于船舰,操纵和查询关系数据库,而关系模型是其基础

属性类型

关系的每个属性都有一个名称

域:每个属性的取值集合成为属性的域

属性值必须是原子的,即不可分割(1NF,第一范式)

  • 多值属性不是原子的
  • 复合属性不是原子的

特殊值null是每一个域的成员

空值给数据库访问和更新带来很多困难,因此应该尽量避免使用空值

关系的概念

关系涉及两个概念:关系模式关系实例

关系模式描述关系的结构

例,Instrctor-schema = (ID:string ,name:string ,dept_name:string ,salary:int)

关系实例表示一个关系的特定实例,也就是所包含的一组特定的行

关系,关系模式,关系实例的区别:

变量<---->关系

变量类型<---->关系模式

变量值<---->关系实例

关系的无序性:元组的顺序是无关紧要,但一个关系中不能由重复的元组

码,键

使 K ⊆ R ( 属 性 集 ) 使 K \subseteq R(属性集) 使KR()
如果K值能够在一个关系中唯一低标志一个元组,则是R的超码

如,学生的学号或身份证号

如果K是最小超码,则k是候选码

如仅有学号或仅有身份证号时,由于他们的任意真子集都不能成为超码,因此在仅有他们任意一个时,它可以成为候选码

如果k是一个候选码,并由用户明确定义,则K是一个主键(primary key)。主键通常由下划线标记

如用户明确定义从候选码学号和身份证号中选取学号,则学号为主键

外键(foreign key)

假设存在关系r和s:r(A,B,C),s(B,D),在关系r上的属性B称作参照s的外码,r也称为外码依赖的参照关系,s叫做外码被参照关系

例,学生(学号,姓名,性别,专业号,年龄) -参照关系

​ 专业(专业号,专业名称) -被参照关系(目标关系)

其中属性 ***专业号***被称为关系 学生的外码

参照关系中外码的值必须在被参照关系中实际存在或为null(用于保证定义完整性

如 要求被参照关系 专业中 属性专业号必须存在

关系代数

关系代数

在某种程度上是过程化语言

六个基本运算

Select 选择

从表中选择满足条件的行

Project 投影

表r包含A,B,C三种属性,从中选取A,C列,并删除重复的行

Union 并

合并两张同类型(等目同元)表,并删除重复的行

set difference 差(集合差)

关系r,s 差运算r-s删除r中与s相同的行,并返回运算后的r

Cartesian product 笛卡尔积

将表r(A,B)和表 s(C,D,E)两行表合并表成r*s(A,B,C,D,E),如果有交集则重命名这些属性

Rename 更名(重命名)

允许我们用其他名字指代关系,也可以给每个属性赋予新的名字

附加运算

Set intersection 集合交

取两个集合共有的部分 r∩s = r-(r-s)

Natural join 自然连接

R = (A,B,C,D) S = (E,B,D

关系r和s自然连接的结果模式为(A,B,C,D,E)同名属性只出现一次,原理:两表笛卡尔积后取同名属性相等的行(同名属性的行进行笛卡尔积)

Division 除(不是很明白:拓展阅读)

r÷s适用于包含了“对所有的”此类短语的查询

Assignment 赋值

可以使复杂的查询表达变得简单

扩展的关系代数运算

广义投影

允许在投影列表中使用算数符号来对投影操作进行扩展。

聚集函数

聚合函数输入一个值集合,然后返回单一值作为结果

avg: 平均值

min: 最小值

max:最大值

sum: 值的总和

count :值的数量

外连接

  • 外连接运算时连接运算的扩展,可以处理缺失信息。

  • 保留一侧关系中所有与另一侧关系的任意元组都不匹配的元组,再把产生的元组加到自然连接的结构上

  • 使用空值:控制表示值不知道或不存在

  • 存在三种,左外连接,右外连接,全外连接

数据库的修改

数据库的内容可以使用西面的操作来修改:

  • 删除
  • 插入
  • 更新

所有这些操作都使用赋值操作表示

你可能感兴趣的:(数据库)