(一)数据库原理基础
数据(Data)
数据库中存储的基本对象。(信息=数据+语义)
数据库(DataBase)
- 存放和提供数据的库房
是指长期储存在计算机内的、有组织的、可共享的大量数据集合。
数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享
数据库管理系统(DataBase Management System)
- 位于用户与操作系统之间的一层数据管理软件。
一个对数据库进行统一管理、统一控制的系统软件,
用户对数据库的任何操作都是通过它来完成的,因此也被称为数据平台,是用户和数据库之间的桥梁
数据库系统(DataBase System)
计算机系统中引入数据库后的一个人机系统。
一般由数据库、数据库管理系统(DBMS)、计算机硬件系统、软件系统(含操作系统、开发工具、应用系统)、数据库管理员和用户构成
数据库系统的内部体系结构
从DBMS的角度来看,数据库系统通常采用三级模式结构。三级模式即物理模式(整个数据库的数据存储方式和存储结构),概念模式(整个数据库的逻辑)和用户模式(某一个用户能看到的局部的逻辑);
数据库系统的外部体系结构
从最终用户角度来看,数据库系统分为:单用户结构、主从式结构、分布式结构(物理上是分布的,但所有节点的数据在逻辑上是一个整体,节点数据相对独立)、C/S结构、B/S结构。
三个世界及其有关概念
- 现实世界
- 信息世界:
- 实体:客观存在并且可以相互区别的“事物”
- 属性:实体所具有的某一特性称为属性。型——>属性名 值——>具体值
- 实体型:具有相同属性的实体必然具有共同的特征;用实体名及其属性名集合来抽象和描述同类实体,称为实体型。如实体型 学生(学号,姓名,专业)
- 实体集:同型实体的集合称为实体集
- 码:能唯一标识一个实体的属性或属性集,称为实体的码
- 域:某一属性的取值范围
- 两个实体型间的联系:指两个不同的实体集间的联系,包括一对一、一对多、多对多。
- 计算机世界:信息世界到数据世界,使用数据模型来描述,数据库中存放数据的结构是由数据模型决定的
- 字段(Field):标记实体属性的命名单位,字段名往往和属性名相同。如学生的学号、姓名、年龄、性别等
- 记录(Record):一个记录描述一个实体,字段的有序集合。如一个学生(99001,张立,20,男,计算机)
- 文件(File):用来描述实体集的,同一类记录的集合
- 关键字(Key):能唯一标识文件中每个记录的字段或字段集
现实世界 | 信息世界 | 计算机世界 |
---|---|---|
事物总体 | 实体集 | 文件 |
事物个体 | 实体 | 记录 |
特征 | 属性 | 字段 |
事物间联系 | 实体模型 | 数据模型 |
数据模型
数据模型是描述数据、数据联系、数据的语义和完整性约束的概念集合,由数据结构、数据操作和完整性约束三要素组成
数据的完整性约束:一组完整性规则的集合
- 完整性规则是数据模型中数据及其联系所具有的制约和依存规则
- 用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容
数据库的类型是根据数据模型来划分的,而任何一个DBMS也是根据数据模型有针对性地设计出来的,这就意味着必须把数据库组织成符合DBMS规定的数据模型。
层次模型(Hierchical)
- 以“树结构”表示数据之间的联系,只能直接处理一对多的实体联系,查询效率高,性能优于关系模型,不低于网状模型。插入和删除操作的限制多,查询子女结点必须通过双亲结点。
网状模型
-
用网状有向图表示实体和实体之间的联系。可以表示多个从属关系的联系,也可以表示数据间的交叉关系,是层次模型的扩展。具有良好的性能和存储效率,修改数据时,只需要更新指定记录即可,但数据结构复杂,记录之间联系是通过存取路径实现的,用户必须了解系统结构的细节
关系模型(主流)
- 以二维表结构来表示实体与实体之间的联系,由表名、表头和表体三部分构成。一个二维表就是一个关系。 关系(Relation):一个关系对应通常说的一张表
- 元组(Tuple):表中的一行即为一个元组
- 属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名
- 主码(Key):也称码键。表中的某个属性组,它可以唯一确定一个元组,从候选码中选取。
- 域(Domain):是一组具有相同数据类型的值的集合。属性的取值范围来自某个域。
- 分量:元组中的一个属性值。
- 关系模式:对关系的描述,是关系模型的“型”。表示为:关系名(属性1,属性2,…,属性n),如:学生(学号,姓名,年龄,性别,系名,年级)
- 数据结构简单、清晰、用关系描述实体及其联系,但查询效率不如非关系模型(层次、网状)
主流关系型数据库简介
MySQL: 08年被sun公司收购09年sun被oracle收购,开源免费,到oracle发布了5.0版本(使用了oracle核心技术 性能提高30%),因为Oracle数据库地位受到威胁,计划把mysql闭源,原mysql作者们不干了,原程序员出去单干,发布了MariaDB数据库、名字是因为作者女儿叫Maria ,市场排名第一;
Oracle:闭源、最贵、性能最高,市场排名第二;
SQLServer:微软公司的产品,市场排名第三,主要应用在.net(C#)开发的网站中;
DB2:IBM公司有做网站的完整解决方案(操作系统,we服务器(如tomcat),数据库等)主要应用在银行等国有大型企业中;
sqlite:轻量级数据库,只有几十k,一般应用在嵌入式和移动设备中;