关系模型
- 关系数据库基于关系模型,是一个或多个关系组成的集合
- 关系通俗来讲就是表(由行和列构成)
- 关系模型的主要优点是其简单的数据表示,易于表达复杂的查询
- SQL语言是最广泛使用的语言,用于创建,操纵和查询关系数据库,而关系模型是其基础
联系:一些实体之间的联系
关系:是一种数学概念,指的是表
实体集和联系集能表示真实的世界
关系-表,元组-行能表示机器的世界
关系基本结构
前提知识:
笛卡尔积:指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X×Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员 。
例:假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
一般地,给出集合D1,D2,……Dn(Di=aij|j=1……k)
- 关系r是:D1xD2x……xDn的子集,即一系列D域的笛卡尔积
因而关系是一组n元组(a1j,a2j,……anj)的集合,其中每个aij属于Di
属性类型(表的列)
关系的每一个属性都有一个名称
域:每个属性的取值集合称为属性的域
属性值必须是原子的,即不可分割(1NF,第一范式)
- 多值属性不是原子
- 复合属性不是原子
特殊值null是每一个域的成员
空值给数据库访问和更新带来了困难,因此应尽量避免使用空值
关系的概念
涉及两个概念:关系模式和关系实例
关系模式描述关系的结构
关系实例表示一个关系的特定实例,也就是所包含的一组特定的行。
类似于C语言中的变量。
变量-关系;变量类型-关系模式;变量值-关系实例。
关系模式
A1 A2 ……An是属性
关系模式 R=(A1,A2,……An)
具体实例 r(R) 用于表示关系模式R上的关系
关系实例
关系的当前值(关系实例)由表指定
一个元组t代表表中的一行
如果元组变量t代表一个元组,那么t[name]表示属性name的t值
关系的特征
- 无序性(但不能重复)
码、键
若K值能够在一个关系中唯一地标志一个元组,则K是R的超码
若K是最小超码,则K是候选码
若K是一个候选码,并由用户明确定义,则K是一个主键(通常用下划线标记)。
外键
若A表中的主键出现在B表中(不为主键),则称B表中的为外键。
A表中的叫做外码被参照关系,B表中的叫做外码依赖的参照关系。
注意:参照关系中的外码的值必须在被参照关系中实际存在或为null
例:
instructor (ID,name,dept_name,salay) 参照关系
department (dept_name,building,budget) 被参照关系
也可用图来构建。