dream

一个菜鸟程序员的成长历程

0%

数据库原理第三节

数据库原理第三节

关系数据模型

关系数据结构

码或键:
属性(属性组)的值都能用来唯一标识该关系的元组,则称这些属性为该关系的码或键

超码或超键:
在码中去除某个属性,他仍然是这个关系的码

候选码或候选键:
在码中不能从中移去任何一个属性,否则它就不再是这个关系的码或键。候选码或候选键是这个关系的最小超码或超键

主属性或码属性:

主码或主键:
在若干个候选码中指定一个唯一标识关系的元组(行)

全码或全键:
一个关系模式的所有属性集合是这个关系的主码或主键,这样的主码或主键称为全码或全键

外码或外键:
某个属性不是这个关系的主码或候选码,而是另一个关系的主码

参照关系被参照关系:
参照关系称为从关系,被参照关系称为主关系,它们是指以外码相关联的两个关系

域:
表示属性的取值范围

数据类型:
每个列都有相应的数据类型,它用于限制(或容许)该列中存储的数据

关系模式:
关系模式是,关系是,即关系模式是对关系的描述。

关系模式是静态的,稳定的

关系是动态的,随时间不断变化的。

关系数据库:
所有关系的集合,构成一个关系数据库
以关系模型作为数据的逻辑模型,并采用关系作为数据组织方式的一类数据库,其数据库操作建立在关系代数的基础上

关系数据库对关系的限定/要求:

  • 每一个属性都是不可分解的
  • 每一个关系仅仅有一种关系模式
  • 每一个关系模式中的属性必须命名,属性名不同
  • 同一个关系中不允许出现候选码或候选键值完全相同的元组
  • 在关系中元组的顺序是无关紧要的,可以任意交换
  • 在关系中属性的顺序是无关紧要的,可以任意交换

基本的关系操作

查询Query:

  • 选择
  • 投影
  • 笛卡尔积
    从上面的基本的组合:
  • 连接

特点:集合操作方式

关系数据语言的分类

关系代数语言

关系演算语言

  • 元组关系演算
  • 域关系演算

SQL结构化查询语言

共同特点:具有完备的表达能力,是非过程化的集合操作语言,功能强,能够独立使用也可以嵌入高级语言中使用。

关系代数的运算符

任何一种操作都包含三大要素

  • 操作对象
  • 操作符
  • 操作结果

传统的集合运算

并,差,交,笛卡尔积

专门的关系运算

选择,投影,连接,除

选择 select:a
a id = 1 (user) //获取id = 1的user表的数据
相当于这个SQL:select * from user where id = 1
a id = 1 ^ name = ‘abc’ (user)
SQL: select * from user where id = 1 and name = ‘abc’

投影 projection:π
projection 关系名(属性名1,。。。) 选出要展示的列
π id,name (id = 1 ^ name = ‘abc’ (user))
SQL: select id,name from (select * from user where id = 1 and name = ‘abc’)

并集 union:union 需要两个表的属性值一样才可以,假设两个表都是id,name字段那么可以,如果一个表有三个字段就不行
t1 union t2, 就是把两个表合并
SQL: (select * from t1) union all (select * from t2) //和union不完全一样

交集 intersection:和union要求一样,选的是交集
t1 intersect t2

差集 difference: 和union要求一样,取得是第一个表出现过第二表没出现的数据
t1 except t2

笛卡尔积 product: 把两个表所有的组合列出来
t1 * t2
SQL: select * from t1 cross join t2

连接 join: 取某个字段值相同的数据,和sql的join差不多
t1 join t2
SQL: select * from t1 natural join t2