数据的分类:
-
结构化数据:有固定的格式,例如一个表格里面的信息
-
非结构化数据:无固定格式,例如图片、网页、语音、视频
-
半结构化数据:html、xml格式的数据
数据库:存放数据的一个集合,可以是文件的方式,也可以是其他的方式。
数据库的发展:
- 萌芽阶段:文件系统
使用磁盘文件来存储数据,比如一个文档里面存了很多数据内容。
缺点:管理不方便,且容易造成文件的损坏、安全性差。
- 初级阶段:第一代数据库
出现了网状模型、层次模型的数据库
- 中级阶段:第二代数据库
关系型数据库和结构化查询语言
- 高级阶段:新一代数据库
"关系-对象"型数据库
相关概念
-
DBMS:Database Management System,数据库管理系统,就是一个应用软件,实现对数据的管理。例如mysql、orcler、redis等。
-
Database:数据库
-
DBA:Database Administrator(DBA)数据库管理员
-
Application:应用程序,用户访问数据不是直接通过DBMS来进行访问的。通过一些图形界面软件等来访问这些数据。例如京东、淘宝等。
DBMS工作逻辑:数据放在磁盘上,用户通过工具访问DBMS,然后DBMS访问到对应的数据。
数据库结构:
-
单机架构:数据库就在一个机器上,只能通过这个机器来操作数据库,例如access
-
主从架构(C/s):客户端-服务器,将要客户端和服务器区分开,通过客户端发送请求来和服务器交互。
-
分布式架构:把数据分散在多个地方,不是集中在一起。
各种数据库管理系统:
-
层次结构:按层(树状结构)组织数据,容易产生冗余
-
网状结构:关系复杂,不容易管理
-
关系型数据库:RDBMS,
关系型数据库相关概念:把所有数据放在一张二维表里面
-
关系:就是一张二维表,
-
行:row,称为记录,每一行称为一条记录(record)
-
列:column,称为属性、字段或者域(field)
-
主键:Primary key,一个或者多个字段的组合,主键不能为空且不能重复
-
唯一键:Unique key, 一个或多个字段的组合,不能重复但可以为空
-
域:domain,属性的取值范围。
常用的关系型数据据:
-
mysql: MySQL, MariaDB, Percona Server
-
oracle
-
DB2
-
PostgreSQL
实体-联系模型E-R:
-
E-R:描述数据库存储数据的结构模型
-
实体Entity:用矩形表示,例如课程、班级、学生等
-
属性Attribute:用椭圆形表示,描述实体的特征
-
联系Relationship:实体的属性之间的关联规则
E-R模型的联系类型:
- 一对一: 假设有两张表,一张存姓名,另一个存身份证,一个人只能有一个身份证。
- 一对多:假设两张表部门和员工,一个部门能有多个员工信息。
- 多对多:假设两张表课程和学上。一个学生能拥有多门课程,一个课程也能被多个学生选择。
数据库的操作:
- 增加:Insert
- 删除:Delete
- 查找:Select
- 修改:Update
数据库的规范化:
作用:减少数据的冗余,增进数据的一致性。越高的范式数据库冗余越小
-
第一范式(1NF):无重复列、一列不能有多个值
-
第二范式(2NF):表中的每一条记录都能被唯一区分(通过主键区分),某一个非主键的字段要依赖整个组件,而不能只依赖部分主键(多个字段组成一个逐渐)。
-
第三范式(3NF):非主键的字段之间不能有从属关系
注意:满足第一范式的数据库才能称为关系数据库。
SQL
-
SQL:Structure Query Language,结构化查询语言。SQL配套关系型数据库使用的。
-
SQL解释器:将SQL语句解释成机器语言
-
数据存储协议:应用层协议,C/S
S:server, 监听于套接字,接收并处理客户端的应用请求
C:Client
数据约束:
- 约束:constraint,需要遵守的限制
常见的约束:
-
主键:primary key,一个或多个字段的组合,非空且唯一。
-
唯一键:unique key, 一个或者多个字段的组合
-
非空:not null
-
外键:foreign key,用来建立表和表之间的关系。外键的字段依赖于另一张表的字段。
-
默认:default,默认值
-
检查:字段值的一个范围
主键和外键的区别:
-
主键:primary key
作用:用于惟一地标识表中的某一条记录,确保每列的原子性。
形式:主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键
其他:建立主键会生成唯一索引,一个表只能建一个主键。 -
外键:foreign key
作用:保持数据一致性,完整性,主要目的是使两张表形成关联,并控制存储在外键表中的数据。
形式:建立外键的表为“从表”,外键依赖的表为“主表”,主表是从表的“外表”
其他:外键只能引用外表中的列的值!一个表只能建一个外键。
建立外键的列,必须是外表的主键,并且字段类型必须一致。
关系运算:
-
选择:筛选行(记录)
-
投影;(cut)筛选列
-
连接:表和表之间的关系。比如外键。