1.5 关系数据库
1.5 关系数据库
关系数据库
基于关系模型
,使用一系列表
来表达数据以及这些数据之间的联系。关系数据库也包括DML
和DDL
。在第2章中,我们简单介绍关系模型的基本概念。多数的商用关系数据库系统使用SQL
语言,该语言将在第3章、第4章和第5章中详细介绍。第6章我们将讨论其他有影响的语言。
1.5.1 表
每个表有多个列,每个列有唯一的名字。
关系模型是基于记录
的模型的一个实例
。基于记录的模型,之所以有此称谓,是因为数据库的结构是几种固定格式的记录。每个表包含一种特定类型的记录。每种记录类型
定义固定数目的字段或属性。表的列
对应记录类型的属性
。
表可以存储在文件中。例如,一个特殊的字符(比如逗号)可以用来分隔记录的不同属性,另一特殊的字符(比如换行符)可以用来分隔记录。对于数据库的开发者和用户,关系模型屏蔽了这些低层实现细节。
在关系模型中,有可能创建一些有问题的模式,比如出现不必要的冗余信息。在第8章我们将研究如何区分好的和不好的模式设计。
1.5.2 数据操纵语言
SQL
查询语言是非过程化的。它以几个表作为输人(也可能只有一个),总是仅返回一个表。查询可以涉及来自不止一个表的信息。
1.5.3 数据定义语言
SQL
提供了一个丰富的DDL
语言,通过它,我们可以定义表
、完整性约束
、断言
,等等。
1.5.4 来自应用程序的数据库访问
有一些计算可以用通用的程序设计语言来表达,但无法通过SQL
来表达。SQL
还不支持诸如从用户那儿输入、输出到显示器,或者通过网络通信这样的动作。这样的计算和动作必须用一种宿主
语言来写,比如C、C++或Java
,在宿主语言
中使用嵌入式的SQL
查询来访问数据库中的数据。
通过宿主语言来执行DML语句
为了访问数据库,DML
语句需要由宿主语言来执行。有两种途径可以做到这一点
- 一种是通过提供应用程序接口来将
DML
和DDL
的语句发送给数据库,再取回结果。例如:- C语言的开放数据库连接
ODBC
Java
数据库连接JDBC
- C语言的开放数据库连接
- 另一种是通过扩展宿主语言的语法,在宿主语言的程序中嵌人
DML
调用。通常用一个特殊字符作为DML
调用的开始,然后通过DML
预编译器来将DML
语句转变成宿主语言中的过程调用。