数据库技术
数据库技术所研究的问题就是如何科学地组织和存储数据,如何高效地获取和处理数据。
SQL
SQL(Structured Query Language)结构化查询语言,是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。
数据库系统
数据库系统(DBS),一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户组成。
要想了解DBS,先来认识几个概念:
- 数据(Data)
- 数据库(Database)
- 数据库管理系统(DBMS)
数据(Data)
数据是对客观事物的符号表示,如图形符号、数字、字母等,数据是数据库中存储的基本对象。
数据的类型:文字、图形、图像、声音、…
在日常生活中,人们直接用语言来描述事物;在计算机中,为了存储和处理这些事物,就要将事物的特征抽象出来组成一个记录来描述。例如:学生档案中的学生记录:
- 张三,男,2009,威海,大数据专业,2020
数据的解释:张三是个大学生,2009年出生,威海人,2020年考入大数据专业。
数据的形式不能完全表达其内容。
数据库(DB)
数据库是长期存储在计算机内的、有组织的、可共享的数据集合。
数据库中的数据是按一定的数据模型组织、描述和存储的。具有较小的冗余度、较高的数据独立性和易扩展性,并可以为各个用户共享。
数据库管理系统(DBMS)
DBMS是位于应用程序与存储数据之间的一层数据管理软件,用来科学地组织和存储数据、高效地获取和维护数据。
DBMS的主要功能
- 定义数据库:创建、修改和删除数据库。
- 操作数据库:对数据进行 检索和更新。
- 保护数据库:数据恢复、数据完整性控制和数据安全性控制、以及并发控制等等。
- 维护数据库:数据导入、转换、存储、数据库性能监控等。
DBMS的优点
- 相互关联的数据的集合
- 较少的数据冗余
- 程序与数据相互独立,通过DBMS建立连接
- 保证数据的安全、可靠、正确
- 数据可以并发使用,并能同时保证一致性
主流的DBMS
- Oracle,关系型数据库,应用广泛、功能强大,分布式数据库系统
- MySQL,快捷可靠,开源免费的数据库系统。
- SQL Server,易用性好
数据库系统的发展(☆)
数据系统的发展经历了3个阶段:
- 层次数据库,树形结构,层次模型
- 网状数据库,图形结构,网状模型
- 关系数据库,二维表结构,关系模型
相关概念
信息和数据
数据
数据是对客观事物的符号表示,如图形符号、数字、字母等,数据是数据库中存储的基本对象。
信息
信息是指数据经过加工处理后所获取的有用知识。信息是以某种数据形式表现的。
实体-联系模型
实体
客观事物在信息世界中称为实体(Entity),是现实世界中任何可区分、识别的事物。
属性
描述实体或者联系的性质或者特征的数据项。
联系
反应事物内部或事物之间的关联集合。
常见的实体联系有3种
- 一对一联系
- 一对多联系
- 多对多联系
关系模型(Relational Model)
关系
一个关系就是一张二维表,通常将一个没有重复行、重复列的二维表看成一个关系,每个关系都有一个关系名。
元组
二维表的每一行在关系中称为元组。在SQL Server中一个元组对应表中的一个记录。
属性
二维表的每一列在关系中称为属性,每个属性都有一个属性名,属性值则是各个元组属性的取值。
域
属性的取值范围称为域。域作为属性值的集合其类型与范围由具体的属性性质及其所表示的意义确定。同一属性只能在相同域中取值。
关键字
关系中能惟一区分、确定不同元组的属性或者属性组合,称为该关系的一个关键字,或者称为惟一标识。
关系模式
关系模式是指对关系的描述,其格式为:
关系名(属性名1,属性名2,…,属性名n)
关系的基本特点
在关系模型中,关系具有以下基本特点:
- 关系必须规范化,属性不可再分割
- 在同一关系中不允许出现相同的属性名
- 在同一关系中元组的顺序可以任意
- 在同一关系中属性的顺序可以任意
关系运算(☆)
关系运算主要有选择、投影和连接3种。
- 选择,从关系模式中找出满足给定条件的元组组成新的关系(从行的角度进行运算)。
- 投影:从关系模式汇总指定若干属性组成新的关系(从列的角度进行的运算)。
- 连接:从两个关系的笛卡尔积中选取属性间满足一定条件的元组,组成新的关系。
假设集合 A = { a , b } A=\{a,b\} A={a,b},集合 B = { 0 , 1 , 2 } B=\{0,1,2\} B={0,1,2},则两个集合的笛卡尔积为 { ( a , 0 ) , ( a , 1 ) , ( a , 2 ) , ( b , 0 ) , ( b , 1 ) , ( b , 2 ) } \{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)\} {(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。
如果 A A A表示某学校学生的集合, B B B表示该学校所有课程的集合,则 A A A与 B B B的笛卡尔积表示所有可能的选课情况。
关系的完整性约束(☆)
- 实体的完整性
主属性值(主关系键的值)不能为空。
例如:学生信息表(学号,姓名,性别,年龄,地址)中学号不能为空。
- 参照完整性(引用完整性)
主键与外键的关系。
例如:学生表与选课表之间用学号建立关联。学生表是主键,选课表是从表。若向从表中输入一条新的记录,系统会检查记录的学号是否在主表中存在:若存在,则允许此操作,否则将拒绝输入。
- 域完整性(用户定义完整性)
限制了某些属性中出现的值,把属性限制在一个有限的集合中。
例如属性类型是正整数,那么输入值则不能为小数等其它任何非整数。
关系模型的规范化
关系模式要满足的条件称为规范化形式,简称范式(Normal Form)。
关系模型规范化目的是为了消除存储异常,减少数据冗余,保证数据的完整性和存储效率,一共有六种范式。一般来说,数据库只需满足第三范式(3NF)就行了。
第一范式
如果关系
R
R
R的所有属性均为简单属性,即每个属性都是不可再分的,则称
R
R
R满足第一范式(1NF)。
简单来说,第一范式就是无重复的列。
第二范式
如果关系
R
R
R满足第一范式,且每一个非主键字段完全依赖于主键,则称
R
R
R满足第二范式。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
例如,下面的选课关系不满足第二范式:
选课关系:student(学号,姓名,年龄,课程名称,成绩)
满足第二范式的设计如下:
学生:student(学号,姓名,年龄)
课程:course(课程名称,学分)
选课关系:select_course(学号,课程名称,成绩)
第三范式
如果关系
R
R
R满足第二范式,且非主键字段之间不存在依赖关系,则称
R
R
R满足第三范式。
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
例如,下面的员工关系不满足第二范式:
部门:department(编号,名称,部门简介)
员工:employee(编号,姓名,部门编号,部门名称,部门简介)
在员工信息表中列出部门编号后就不能在将部门名称、部门简介等和部门有关的信息再加入员工表中。满足第三范式的设计如下:
部门:department(部门编号,部门名称,部门简介)
员工:employee(编号,姓名,部门编号)
E-R图
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实时间的概念模型。
- 矩形表示实体,框内写明实体名
- 椭圆表示属性,框内写明属性名
- 菱形表示实体间的联系,框内写明联系名
- 用线段连接起来