数据库简介
1 数据库原理
1.1 数据(Date)
数据是数据库中存储的基本对象。
数据就是描述事物的符号记录。描述事物的符号可以是数字,也可以是文字、图形、图像、声音、语言等,数据有多种表现形式,都可以经过数字化后存入计算机。
==数据的形式还不能完全表达其内容,需要经过解释。==所以数据和关于数据的解释是不可分的,数据的解释是指对数据含义的说明,数据的含义称为数据的语义,数据与其语义是不可分的。
1.2 数据库(DateBase)
数据库(DataBase,简称DB)是指长期储存在计算机内的、有组织的、可共
享的数据集合。
数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可以为各种用户共享。
1.3 数据管理系统(DBMS)
数据库管理系统(DataBase Management System,简称DBMS)是数据库系统的一个重要组成部分,位于用户与操作系统之间的一层数据管理软件。
1.4 数据管理的三个阶段
背景特点 | 人工管理阶段 | 文件系统阶段 | 数据库系统阶段 |
---|---|---|---|
应用背景 | 科学计算 | 科学计算、管理 | 大规模管理 |
硬件背景 | 无直接存储设备 | 磁盘、磁鼓 | 大容量磁盘 |
软件背景 | 无操作系统 | 有文件系统 | 有数据库管理系统 |
处理方式 | 批处理 | 联机实时处理、批处理 | 联机实时处理、分布处理、批处理 |
数据的管理者 | 用户(程序员) | 文件系统 | 数据库管理系统 |
数据面向的对象 | 某一应用程序 | 某一应用 | 显示世界 |
数据的共享性 | 无共享,冗余度极大 | 共享性差,冗余度大 | 共享性高、冗余度小 |
数据的独立性 | 不独立,完全依赖程序 | 独立性差 | 具有高度的物理独立性和一定的逻辑独立性 |
1.5 数据模型
模型是现实世界特征的模拟和抽象。
数据模型(Data Model)也是一种模型,它是现实世界数据特征的抽象。不同的数据模型实际上是给我们提供模型化数据和信息的不同工具。
根据模型应用的不同目的,可以将这些模型划分为两类,它们分属于两个不同的层次。
1.6 概念模型
第一类模型是概念模型,也称信息模型,它是按用户的观点来对数据和信息建模,是用户和数据库设计人员之间进行交流的工具,这一类模型中最著名的就是实体关系模型。
实体关系模型直接从现实世界中抽象出实体类型以及实体之间的关系,然后用实体关系图(E-R图)表示数据模型。
1.6.1 E-R图
- E-R图有下面四个基本成分:
(1)矩形框,表示实体类型(问题的对象)
(2)菱形框,表示关系类型(实体之间的关系)
(3)椭圆形框,表示实体类型或关系类型的属性;相应的命名均记入各种框中。对于键的属性,在属性名下画一条横线。
(4)连线。实体与属性之间,关系与属性之间用直线连接;关系类型与其涉及的实体类型之间也以直线相连,并在直线端部标注关系的类型(1:1,1:N或M:N)。
1.7 数据库数据模型
数据模型通常由数据结构、数据操作和完整性约束三部分组成。
1.7.1 常用数据模型
数据库领域中最常用的数据模型有四种:
层次模型(Hierarchical Model)
网状模型(Network Model)
关系模型(Relational Model)
面向对象模型(Object Oriented Model)
非关系数据库(大数据)
其中,层次模型和网状模型统称为非关系模型。现在已逐渐被关系模型的数据库系统取代。
1.7.2 常见关系型数据库
ORACLE(甲骨文)、DB2、SQL Server、Sybase、Informix、MySQL、VF、Access等。
数据库系统几乎支持所有的操作系统,也就是上述数据库几乎与平台无关(当然除SQL Server和Access以外,因为这是微软的东西,平台依赖性很强的)。
2 数据库设计
2.1 数据库设计三大范式
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。
范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。
2.1.1 第一范式
确保每列保持原子性
上例中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。
但是如果系统经常会访问“地址”属性中的“城市”部分,那么就要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对地址中某一部分操作的时候将非常方便。
2.1.2 第二范式
确保表中的每列都和主键相关。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
这个表中是以订单编号和商品编号作为联合主键。但是在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品编号相关。所以在这里违反了第二范式的设计原则。
如果把这个订单信息表进行拆分,把商品信息分离到另一个表中,把订单项目表也分离到另一个表中,就非常完美了。
2.1.3 第三范式
确保每列都和主键列直接相关,而不是间接相关。
比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。
3 SQL语言
3.1 SQL语言概述
SQL语言,是结构化查询语言(Structured QueryLanguage)的简称。
SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
SQL语言之所以能够为用户和业界所接受,成为国际标准,是因为它是一个综合的、通用的、功能极强的、简学易用的语言。其主要特点包括:
综合统一
高度非过程化
用同一种语法结构提供两种使用方式
语言简洁,易学易用
3.2 SQL语言的核心
- DDL
数据定义语言(Data Definition Language,简称 DDL),DDL用于定义数据库的逻辑机构,是对关系模式一级的定义,包括基本表、视图及索引的定义。
- DQL
数据查询语言(Data Query Language,简称DQL),DQL用于查询数据。
- DML
数据操纵语言(Data Manipulation Language,简称DML),DML用于对关系模式中的具体数据的增、删、改等操作。
- DCL
数据控制语言(Data Control Language,简称DCL),DCL用于数据访问权限的控制。
- DTL
数据事务语言(Data Transcation Language,简称DTL),DTL用于数据库事务的控制。