一、数据库基本概念
1、关系数据库
(1)关系操作
关系操作所操作的对象和结果都是集合,成为一次一集合的方式。而非关系数据模型的数据库操作方式为一次一记录的方式。
关系数据模型中最重要的是关系查询操作,主要分为:选择(select)、投影(project)、连接(jion)、除(divide)、并(union)、差(except)、交(intersection)和笛卡尔积等。其中,选择、投影、并、差、笛卡尔积是5种基本的操作。
(2)关系型数据库语言
在实际的关系数据库系统中,为实现选择、投影、并、差等操作,为用户提供了一种介于关系代数和关系验算之间的语言sql(strutured query language,结构化查询语言)。sql语言是用于关系数据库查询的结构化语言,目前许多关系型数据库管理系统支持sql语言,如sql server、access、oracle、db2、mysql等。
sql语言的功能包括数据查询、数据操纵、数据定义和数据控制四个部分。sql语言简洁、方便、实用,为完成其核心功能只用了6个动词——select、create、insert、update、delete和grant(revoke)。作为关系型数据库标准语言虽然被众多商用数据库管理系统产品采用,但是不同的数据库管理系统在实践过程中都对sql规范做了某改编和扩充。所以,在实际上不同数据库管理系统之间的sql语言不能完全互相通用。如甲骨文公司的oracle数据库所使用的sql语言是procedural language/sql(简称pl/sql),而微软的sql server数据库系统支持的是transact-sql(简称t-sql)。
(3)关系的完整性
关系数据库模型的完整性规则是对关系的某种约束条件。关系模型中有三类完整性约束:实体完整性、參照完整性、用户定义的完整性。当中实体完整性和參照完整性是关系模型必须满足的完整性约束条件。被称作是关系的两个不变性。应该由关系系统自己主动支持。
-
实体完整性(entity integrity):若属性(指一个或一组属性)a是基本关系r的主属性,则a不能取空值。所谓空值就是“不知道”或“不存在”的值。
依照实体完整性的规则的规定,基本关系的主码都不能取控制。假设主码由若干属性组成,则全部这些主属性都不能取空值。
对于实体完整性规则说明:
1)实体完整性规则是针对基本关系而言的。一个基本表通常相应现实世界的一个实体集。如学生关系相应于学生的集合。
2)现实世界中的实体是可区分的。即他们具有某种唯一性标识。比如每一个学生都是独立的个体,是不一样的。
3)关系模型中以主码作为唯一性标识。
4)主码中的属性,即主属性不能取空值。假设主属性取空值。就说明存在某个不可标识的实体,即存在不可区分的实体,这与2)相矛盾,因此这个规则称为实体完整性。 - 参照完整性(refernetial integrity):在现实生活中,实体之间往往存在某种联系,在数据库模型中的实体机实体之间的联系都用关系描述,这样就存在着关系与关系间的引用。在关系数据库系统中,通过引入外键的概念来表达实体之间的相互引用。
1)设f是基本关系r的一个或一组属性,但不是关系r的码。
k是基本关系s的主码。假设f与k相相应,则称f是r的外码(foreign key)。
并称基本关系r为參照关系。
基本关系s为被參照关系。外码并不一定要与相应的主码同名。
2)若属性(或属性组)f是基本关系r的外码。它与基本关系s的主码k相相应(基本关系r与s不一定是不同的关系)。则对于r中每一个元组在f上的值必须为:◀或者取空值(f的每一个属性值均为空值)◀或者等于s中的某个元组的主码值。
- 用户定义的完整性(user-defined integrity):实体完整性和参照完整性是任何关系数据库系统都必须支持的。除此之外,不同的关系数据库系统根据其应用环境不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。
例如,在‘学生’表中,用户规定总学分为60分才为及格。