概叙
关系数据库的基本特征是使用关系模型的组织数据,20世纪80年代以后,在商用DBMS中,关系模型逐步取代早期的网状模型和层次模型。
关系数据模型
作为数据模型,关系模型包含三个组成要素:关系数据结构、关系操作集合和关系完整性约束。
关系数据结构
结构只包含单一的数据结构(关系),现实世界的实体与实体间的各种联系均用关系来表示。关系模型是把数据库表示为关系的集合,并以二维表格的形式组织数据。
录入一张二维表格如:
学号 | 姓名 | 性别 | 籍贯 | 民族 | … |
---|---|---|---|---|---|
001 | 张三 | 男 | 陕西 | 汉 | … |
002 | 李四 | 男 | 湘西 | 苗 | … |
003 | 王五 | 男 | 河北 | 汉 | … |
004 | 赵六 | 男 | 东北 | 汉 | … |
… |
基本术语
- 表(Table):也称为关系,是二维数据结构,由表名、构成表的各列及若干行数据组成,每个表由唯一的表名,每一行数据描述一条具体的记录值。
- 关系(Relation):一个关系逻辑上对应一张二维表,可以为每个关系取一个名称来标识。关系有三种类型:基本关系(基表,实际存在的表,是实际存储数据的逻辑表示)、查询表(查询结构对应的表)和视图表(由基本表或其他视图导出的表,不对应实际存储的数据)。
- 列(Column):称为字段(Field)或属性(Attribute)。每一列有一个名称,表示实体属性,具有相同数据类型。在一个数据库中,表名,字段名必须唯一,不同的表可以有相同的字段名,且命名须有意义,简单。
- 属性(Attribute):表列即属性,给属性起名即属性名。属性的个数称为关系的元或度。列值为属性值;取值范围为值域。
- 行(Row):称为元组(Tuple)或记录(Record)。表中的数据按行存储,一行数据即一条记录或元组,每行又若干个字段值组成。
- 分量(Component):元组的属性值为分量
- 码/键(key):在一个关系中,有一个属性或属性组,能用来标识该关系的元组,则为该关系的码或键。
- 超码或超键(Super Key):从码中去除某个属性,它仍然是对应关系的码,则为超码;每个关系至少有一个默认的超码(所有属性的集合)。
- 候选码或键(Candidate Key):关系中的一个码或键中,不能去除任何一个属性,否则它就不是对应关系表的码或键,则此码为候选码(键),它是关系表中最小的超码或超键。
- 主键/码(Primary Key):在一张关系表中的若干候选键中指定一个用来唯一标识该关系的元组,则该候选键为主键。
- 全键/码(All-Key):一个关系中所有的属性集合是是这个关系是主键/码,则为全键/码。
- 主/非属性(Primary Attribute/Nonprimary Attribute):关系中包含任何一个候选键/码的属性为主/码属性,不包含任何一个候选码的属性为非主/码属性。
- 外键/码(Foreign Key):关系中的某个属性或属性组不是这个关系的主键或候选键,而是另一个关系的主键,则该属性(属性组)为关系的外键/码。
- 参照关系(Referencing Relation)/被参照关系(Referenced Relation):参照关系也称从关系,被参照关系又称主关系,它们指以外码相关联的两个关系。而以外码为主码的关系为被参照关系;外码所在的关系为参照关系,这种联系通常是一对多关联。
- 域(Domain):指属性取值范围。
- 数据类型(Data Type):每列(元关系)都有相应的数据类型,用于限制该列中存储的数据。
- 关系模式(Relation Schema):通数据模型一样,数据库也有型和值,在关系数据库中关系模式是型,关系是值,关系模式是对关系的描述。
中文字段名 | 数据类型 | 宽度 | … |
---|---|---|---|
学号 | 字符类型 | 8 | … |
姓名 | 字符类型 | 10 | … |
身份证 | 字符类型 | 18 | … |
… | … | … | … |
上表是学生基本星系登记表关系的结构定义,关系则是元组的集合,是关系模式在某一时刻的状态或内容
实际工作中关系模式和关系统称为关系。
- 关系数据库(Relation Database):以关系模型作为数据的逻辑模型,并采用关系作为数据组织方式的一类数据库,其数据库操作建立在关系代数的基础上。在给定的应用领域中,所以关系的集合构成一个关系数据库。
在实际的数据库应用系统中,一般使用英文作为表名、字段名等。因为在编写数据库应用程序时,表名、字段名会作为变量名,使用中文不方便标识,且有些DBMS不能很好的兼容中文。
因此上表应该变更为:
含义 | 字段名 | 数据类型 | 宽度 | … |
---|---|---|---|---|
学号 | studentNo | 字符类型 | 8 | … |
姓名 | sutdentName | 字符类型 | 10 | … |
身份证 | studentId | 字符类型 | 18 | … |
… | … | … | … | … |
关系数据库对关系的限定:
- 每个属性都不可分解,是关系数据库对关系的最基本的限定,要求关系的每个分量必须是一个不可分的数据项,即不允许表中有表
- 一个关系对应一种关系模式,模式中的属性的数据类型及属性的个数是相对固定的
- 每个关系模式中的属性必须命名,在同一模式中,属性名必须是不同的
- 同一关系中不允许出现候选码或键值完全相同的元组
- 关系中的元组顺序是可任意交换
- 关系中的属性顺序可以任意交换