数据库学习(二):关系模型

数据库学习(一):数据库系统概述

关系模型

基本概念

  • 关系:关系模型的数据结构,二维表,笛卡儿积的有限子集。是元组的集合。
  • 元组:关系中的每个元素(一行),也称记录。
  • 属性:关系中的列,也称字段
  • 候选码:简称码。属性组,可以唯一地标识一个元组,而其子集不能。注意它是一个集合。
  • 主属性:在候选码中的属性
  • 非主属性:不在候选码中的属性
  • 主键/码:选定的候选码中一个。
  • 全码:候选码包含所有属性。
  • 主属性:包含在某一个候选码中的属性。
  • 非主属性:不包含在每一个候选码中的属性。
  • 域:一组具有相同数据类型的值的集合。
  • 关系数据库:所有关系(表)的集合。

关系有三种类型:基本表(数据存储的逻辑表示),查询表(查询结果),视图表(虚的,外模式)

关系操作

有两种:查询(query)操作 与 插入(insert)、删除(delete)、修改(update)操作
其中查询:包括选择(select)、投影(project)、连接(join)、除(divide)、并(union)、差(except)、交(intersection)

操作对象和结果都是集合。

关系数据语言

  • 关系代数:用代数表达式表示查询
  • 关系演算:用谓词表达查询要求。
  • sql:结构化查询语言(structured wuery language),集查询、数据定义、操纵、控制语言与一体。介于关系代数、关系演算之间。

关系的完整性

关系的完整性为对关系的某种约束条件,三种:

  1. 实体完整性:主属性不能为空。保证了每个元组是唯一的。
  2. 参照完整性规则:由下述,外码在p中的值只能为空值或c中主码的值。
  3. 用户自定义完整性:由用户自己设定约束条件,如某个属性不能为空等。上两个是所有数据库系统都支持的,而用户定义完整性为自定义
  • 外码:关系p中有一个不是主码的属性t,而t在另一个关系c中的主码,则t为p外码。p为参照关系,c为被参照关系。p与c可以是同一个。t在c中可改名,且与c主码在一个域。

如(1)学生(学号,密码,专业名)
专业(专业名,代号)
专用名是学生表外码,是专业表主码。关系学生是参照关系,专业是被参照关系。
(2)学生(学号,姓名,班级,班长)
班长是外码,关系学生即是参照又是被参照关系

关系代数

关系代数运算符:

五种基本运算:∪、- 、×、σ、Π

而∩、÷、\Join可以由它们推出

集合运算符:

  • 并:∪
  • 差:-
  • 交:∩
  • 笛卡尔积:×  (直接相连,所以可能会有重复列)

专门的关系运算符:

  • 选择:σ
  • 投影:Π  (去除重复元组)
  • 除:÷
  • 连接:\Join  从两个关系笛卡儿积中挑选满足比较关系的元组。

等值连接:

自然连接为特殊的等值连接,会自动去重。

悬浮元组:在自然连接中,Student表中某些元组的Sno可能在SC表中找不到相同的,则该元组就会被舍弃,反过来一样,这样的元组即为悬浮元组。

外连接:把悬浮元组也保存在结果关系中,没有的属性列设为空

左外连接:把Student悬浮元组也保存在结果关系中,没有的属性列设为空

右外连接:把SC悬浮元组也保存在结果关系中,没有的属性列设为空

 R表:     S表:

则R÷S算法:R中不在S中的属性列为A,A中有4个值{a1,a2,a3,a4}

a1的象集:{(b1,c2),(b2,c3),(b2,c1)}

a2的象集:{(b3,c7),(b2,c3)}

a3的象集:{(b4,c6)}

a4的象集:{(b6,c6)}

而S在(B,C)上的投影为{(b1,c2),(b2,c1),(b2,c3)},显然只有a1包含了他,所以除的结果为

 

一些概念:

  • 关系笛卡尔儿积
  • 象集:关系R(是外码,关系学生即是参照又是被参照X,Z),则对t[X]=x,x在R中象集为Zx={t[Z] | t[Z]=x} (即所有为x行的z值)

例子

一般用σ、Π、\Join、÷、∪、-运算就够

  • 查询计算机系全体学生
σ Sdept='CS' (Student)
  •  查询学生姓名和所在系
 Π Sname,Sdept (Student)
  • 查询至少选修了一门其先修课为5号课程的学生姓名
Π sname(σ pno=5 (course) >< sc >< s)
//简化一下
Π sname(σ pno=5 (course) >< sc >< Π sno,sname(s))
  • 查询选修了全部课程的学生号码和姓名
Π sno,cno(sc) ÷ Π cno(sc) >< Π sno,sname(s)
  •  检索不学2号课的学生姓名与年龄 
Π sno,sage((Π sno(sc) - Π sno(σ cno=2 (sc)) >< s)
  •  将新学习关系元组(10,'PHYSICS',2,2)插入到关系course中
course  ∪ (10,'PHYSICS',2,2)
  •  将学号4选修课程号为10的成绩改为85分 [?用法]
(SC-(4,10,?)∪(4,10,85))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值