关系数据库概述
关系模型是关系数据库的基础。
关系数据库系统是支持关系数据库模型的数据库系统。
关系相关的名词
1️⃣ 属性 Attribute
例如学生用学号、姓名、性别、年龄等属性表示。
2️⃣ 域 Domain
每个属性的取值范围所对应的一个值的集合,称为该属性的域。
例如,学号的域是6位整型数;姓名的域是10位字符;性别的域是 {男,女}。
注意:
一般在关系模型中,所有的域都应是原子数据(atomic data)。例如整形、字符串;
而集合、记录、数组是非原子数据。
关系模型的这种限制,称为第一范式(first normal form),即1NF。
3️⃣ 目或度 Degree
D1 X D2 X…Dn的子集称作在域D1,D2…,Dn上的关系,表示为R(D1,D2…,Dn)
这里的R表示关系的名字,n是关系的目或度。
4️⃣ 候选码 Candidate Key
若关系中的某一属性或属性组的值能唯一标识一个元组,则称该属性或属性组为候选码。
5️⃣ 主码 Primary Key
或称主键,若一个关系有多个候选码,则选定其中一个为主码。
6️⃣ 主属性 Prime attribute
包含在任何候选码中的属性称为主属性。
不包含在任何候选码中的属性称为非主属性(NonPrime attribute)
7️⃣ 外码 Foreign Key
如果关系模式R中的属性或属性组非该关系的码,但它是其他关系的码,那么该属性集对关系模式R而言是外码。
8️⃣ 全码 All Key
关系模式的所有属性组是这个关系模式的候选码,称为全码。
笛卡尔积与关系
笛卡尔积又叫笛卡尔乘积,是一个叫笛卡尔的人提出来的。
简单的说就是两个集合相乘(Cartesian)的结果。
笛卡尔积可以用二维表来表示。
- 笛卡尔积的SQL表示
假如A表中的数据为m行,B表中的数据有n行,那么A和B做笛卡尔积,结果为m*n行(也称基数)。
select *
from A,B
-- 或者
select *
from A
cross join B
注意:
通常我们都要在实际SQL中避免直接使用笛卡尔积,因为它会使“数据爆炸”,尤其是数据量很大的时候。
关系的三种类型
关系的三种类型:
- 基本关系,又称基本表或基表,它是实际存在的表。
- 查询表:查询结果对应的表。
- 视图表: 是由基本表或其他视图表导出的表,又称虚拟表,本身不存储在数据库中。
关系数据库模型
数据库区分型和值。
关系数据库的型也称为关系数据库模式,是关系数据库结构的描述。
tips
关系的概念对应于程序设计中变量的概念。
而关系模式对应于程序设计语言中类型定义的概念。
关系数据库的值是这些关系模式在某一时刻对应的关系的集合。
关系的描述称为关系模式(Relation Schema),可以形式化的表示为:R(U,D,dom ,F)
- R 为关系名称
- U 为组成该关系的属性名的集合
- D 为属性的域
- dom 为属性向域的映象集合
- F 为属性间数据的依赖关系集合
关系的完整性约束
完整性规则提供了一种手段来保证当授权用户对数据库修改时不会破坏数据的一致性。
关系的完整性约束分三类:
- 实体完整性 Entity Integrity
主属性不能为空值。
- 参照完整性 Referential Integrity
外码不能为空值
- 用户定义完整性 User Deifined Integrity
反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。
例如,银行的用户账户规定大于等于 100 000,小于 999 999.
相关真题
2015年29题
若关系R(H,L,M,P)的主键为全码(All-key),则关系R的主键应(29)。
A.为HLMP
B.在集合{H,L,M,P}中任选一个
C.在集合{HL,HM,HP,LM,LP,MP}中任选一个
D.在集合{HLM,HLP,HMP,LMP)中任选一个
【答案】A
在关系数据库系统中,全码(All-key)指关系模型的所有属性组是这个关系模式的候选键