DBMS(database-management system)包括数据库和用于存取数据的程序,DBMS的基本目标是为数据的存取提供方便、高效的方式,此外对大多数企业来讲,数据是很是重要的,因此DBMS还要保证数据的安全,好比在系统奔溃或收到未受权访问请求的时候。
1、数据抽象
a) 数据库系统隐藏了数据在存储、维护方面的细节,以视图的形式为用户提供数据。数据库系统必须能知足高效地查询数据的需求,为此设计者将数据库系统抽象为三层:物理层、逻辑层、视图层
b) 物理层,描述了数据在物理存储介质的实际存储方式;
逻辑层,描述了数据在数据库的存储方式以及数据之间的逻辑关系,尽管为了实现这些逻辑关系须要复杂的物理关系,逻辑层为用户隐藏了这些复杂性。
视图层,是对数据库最高级别的抽象,虽然逻辑层隐藏了物理层的复杂度,但对于一个完整的数据库所储存的信息来讲,逻辑层仍然是很是复杂的,除了DBA有时可能直接操做逻辑层,普通用户每每只须要访问其中的一部分数据,视图层就是为了简化普通用户与数据库的交互而存在的。同一个数据库能够有多份视图。
c) 随着数据的增删改,数据库会不断变化。在某一刻数据库中全部信息的集合称为Instance;而数据库的总体结构称为Schema,Schema不多发生变化。用程序来类比的话,Schema至关于预先声明的变量,Instance则至关于变量的值。
数据库有不一样的分层,对应就有不一样的Schema,视图层甚至有多个subschema。
2、数据模型
数据模型是用于描述数据、数据关系、数据语义、一致性约束的一系列工具的集合。数据模型能够从物理、逻辑、视图的层面描述数据库的设计,有多种类型:
a) Relational Model
关系模型用表来描述数据及相互关系,每张表有多个列,每一个列有惟一的名称,表和表之间又存在必定的关系。关系模型是一种基于记录的模型,采用这种模型记录的数据都有固定数量的字段或属性(列),这种模型的使用最为普遍。
b) Entity-Relationship Model
E-R模型用了实体和实体间关系这样的概念,实体对应于现实世界的对象。这种模型也被普遍使用。
c) Object-Based Data Model
因为面向对象的编程语言成为主流,基于对象的数据模型也应运而生,这种模型结合和关系模型和E-R模型的特性,并增长了封装、方法等面向对象的思想。
d) Semistructured Data Model
在XML等半结构化的数据模型中,容许数据有不一样的字段,这与以前的模型都不相同。
3、数据库语言
SQL包含DDL(data-definition language)和DML(data-manpulate language)。
a) DML
DML用于对数据的操做如增删改查,分为过程化DML和非过程化DML,前者在使用时要指定须要操做的数据以及操做的方式,后者只须要指定须要的数据就能够了,剩下的交给数据库系统(将查询语句翻译成对物理层的操做),因此后者更容易学习和使用。
b) DDL
DDL用于定义数据的schema、存取方式、约束等。
域约束(domain constraints):对数据类型的约束,每次插入数据都会检查
参照完整性(referential ingegrity):要保证被关联的对象是存在的,好比course表中dept_name与department表的某列关联,那么dept_name的值必须是department实际存在的。数据库的修改有可能会破坏参照完整性,这时应该阻止操做以免破坏参照完整性。
断言(assertions):是数据库在任什么时候候都必须知足的条件,域约束和参照完整性是特殊的断言。通常的对相似“每一个部门必须提供至少5个节目”这样的限制就能够建立断言,而后每次对数据改动前都会检查是否知足断言。
权限(authorization):常见的权限类型有读取、插入、更新、删除等,能够控制用户拥有某几项权限。
DDL语句执行的结果为数据字典,这种数据字典能够看做是只能被数据库系统维护的特殊表。数据库在进行数据的查询、操做前都会先查阅数据字典。
学习资料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan数据库