在中介绍过数据模型(Data Model)是数据库系统的抽象,而关系型数据模型(Relational Model)是经典的关系型数据库系统的抽象,DB-BOOK作者用五个章节进行描述,可见对于理解数据库系统而言还是相当重要的。本章节就是对关系数据模型的概述(好吧,又是概述),但是对于易于混淆的概念的阐释还是很精辟清晰滴 :)
通常,在关系数据模型中,“关系”(relation)用来指代表格(table),相应的,表格的列与属性的概念相同,表格的行与元组的概念相同,即 columns == attributes; rows == tuples; 对于具体的属性值而言,其规定的取值范围称之为属性的domain,并且通常被要求是atomic的。同理,database schema和relation schema表达同样的意思,database instance与relation instance也表达相同的意思。然而有这么三个概念还是很容易被混淆的,分别是super key , candidate key 和 primary key。
- 凡是可以在table中区分不同tuples的都叫做super key, 这样使得super key决然不止一个;
- 如果是super key并且还是该概念的最小的子集,那就是candidate key了;
- 被database的设计者拿来作为唯一区分table中不同tuples的不可或缺的唯一标识,称为primary key,并且要求never, or very rarely, changed :(
此外还有个概念叫外键(foreign key),指的是对于表1而言具有某个attribute是表2的primary key,表1被称之为referencing relation,而表2被称之为referenced relation,很自然的,这样导致在表1的这些attribute可不敢为NULL啊,这么个事儿被称之为引用完整性限制(referential integrity constraint),还是很重要的概念哦,给出了如下的解释:
Referential integrity is a property of data which, when satisfied, requires every value of one attribute (column) of a relation (table) to exist as a value of another attribute (column) in a different (or the same) relation (table)
当然,将这些具有引用完整性限制的table的schema描述出来的就是schema diagram了,如下图所示,还是很令我这个初学者不明觉厉的。
在关系数据库中需要使用关系查询语言(Relational Query languages)进行查询等操作,这个关系操作(relational operations)可以用关系代数(relational algebra)总结为这么几个典型操作:
这个章节还是很易于理解的,期待明天 :)