数据库发展史、数据库类型、数据规划流程、范式、SQL概念、约束、索引、数据模型

数据库发展史

萌芽阶段:文件系统
使用磁盘文件来存储数据

初级阶段:第一代数据库
出现了网状模型、层次模型的数据库

中级阶段:第二代数据库
关系型数据库和结构化查询语言

高级阶段:新一代数据库
“关系-对象”型数据库

文件管理系统的缺点
编写应用程序不方便
数据冗余不可避免
应用程序依赖性
不支持对文件的并发访问
数据间联系弱
难以按用户视图表示数据
无安全控制功能

数据库管理系统的优点
相互关联的数据的集合
较少的数据冗余
程序与数据相互独立
保证数据的安全、可靠
最大限度地保证数据的正确性
数据可以并发使用并能同时保证一致性

数据库管理系统
数据库是数据的汇集,它以一定的组织形式存于存储介质上
DBMS是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心
DBA:负责数据库的规划、设计、协调、维护和管理等工作
应用程序指以数据库为基础的应用程序


数据库类型

网状数据库
最早出现的是网状DBMS,1964年通用电气公司的Charles Bachman成功地开发出世界上第一个网状IDS,也是第一个数据库管理系统,IDS 具有数据模式和日志的特征,只能在GE主机运行。

层次数据库
以树型结构表示实体及其之间的练习。关系只支持一对多。
代表数据库:IBM IMS

数据库系统的架构
单机架构
大型主机/终端架构
主从式架构(C/S)
分布式架构

关系型数据库
关系 :关系就是二维表,其中:表中的行、列次序并不重要
行row:表中的每一行,又称为一条记录
列column:表中的每一列,称为属性,字段
主键Primary key:用于惟一确定一个记录的字段
域domain:属性的取值范围,如,性别只能是‘男’和‘女’两个值

关系数据库
MySQL: MySQL, MariaDB, Percona Server
PostgreSQL: 简称为pgsql,EnterpriseDB
Oracle
MSSQL
DB2

实体-联系模型E-R
实体Entity:客观存在并可以相互区分的客观事物或抽象事件称为实体

在E-R图中用矩形框表示实体,把实体名写在框内

属性:实体所具有的特征或性质

联系:联系是数据之间的关联集合,是客观存在的应用语义链

实体内部的联系:指组成实体的各属性之间的联系。如职工实体中,职工号和部门经理号之间有一种关联关系

实体之间的联系:指不同实体之间联系。例:学生选课实体和学生基本信息实体之间

实体之间的联系用菱形框表示

联系类型
联系的类型
一对一联系(1:1)
一对多联系(1:n)
多对多联系(m:n)

数据的操作:
数据提取:在数据集合中提取感兴趣的内容。SELECT
数据更新:变更数据库中的数据。INSERT、DELETE、UPDATE

数据的约束条件 :是一组完整性规则的集合
实体(行)完整性 Entity integrity
域(列)完整性 Domain Integrity
参考完整性 Referential Integrity


数据规划流程

第一阶段:收集数据,得到字段
收集必要且完整的数据项
转换成数据表的字段

第二阶段:把字段分类,归入表,建立表的关联
关联:表和表间的关系
分割数据表并建立关联的优点
节省空间
减少输入错误
方便数据修改

第三阶段:
规范化数据库

数据库的正规化分析
数据库规范化,又称数据库或资料库的正规化、标准化,是数据库设计中的一系列原理和技术,以减少数据库中数据冗余,增进数据的一致性。关系模型的发明者埃德加·科德最早提出这一概念,并于1970年代初定义了第一范式、第二范式和第三范式的概念

RDMBS设计范式基础概念
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,不同的规范要求被称为不同范式,各种范式呈递次规范,越高的范式数据库冗余越小

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般数据库只需满足第三范式(3NF)即可


范式

1NF:无重复的列,每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,确保每一列的原子性。除去同类型的字段,就是无重复的列
说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库

违反第一范式举例:

表student,存放学生参与的课程
id		名字		课程1	课程2
1		张三		语文	数学
2		李四		语文	无
***由于李四只参加一门课程,课程2的字段对李四来说是空闲没有使用的所以此表设计不合理。

id		名字		课程1
1		张三		语文
1		张三		数学
2		李四		语文
张三参加了2门课程,在表中会出现2条张三的信息
如果有n门课程,就会出现n条,此表也不合理

符合第一范式解决方案:

表student,存放学生信息
id(PK)	名字
1		张三
2		李四

表class,存放课程信息
id(PK)	课程
1		语文
2		数学

表schedule,存放学生对应的课程信息
id(PK)	学生id	课程id
1		1		1
2		1		2
3		2		1

2NF:属性完全依赖于主键,第二范式必须先满足第一范式,要求表中的每个行必须可以被唯一区分。通常为表加上一个列,以存储各个实例的唯一标识PK,非PK的字段需要与整个PK有直接相关性
违反第二范式举例:

记录人员信息的表,假设不同城市中姓名是唯一的,单一字段设置主键都不合适
此时可以名字和城市加起来做复合主键
名字	城市	区号	年龄
张三	北京	010		20
李四	上海	021		21
张三	上海	021		24
李四	北京	010		22
**名字和城市是复合主键,而区号是由城市决定的,不依赖名字决定,违反第二范式

3NF:属性不依赖于其它非主属性,满足第三范式必须先满足第二范式。第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息,非PK的字段间不能有从属关系
违反第三范式举例:

表a
id(PK)	名字	城市	区号	年龄
1		张三	北京	010		20
2		李四	上海	021		21
3		张三	上海	021		24
4		李四	北京	010		22
**主键不是城市,而城市与区号有从属关系,违反第三范式

范式仅用于创建数据表结构时的参考,准守范式有时候会造成查询缓慢,此时还是忽略范式,性能优先


SQL概念

SQL: Structure Query Language
结构化查询语言

SQL解释器:
数据存储协议:应用层协议,C/S
S:server, 监听于套接字,接收并处理客户端的应用请求
C:Client

客户端程序接口
CLI
GUI

应用编程接口
ODBC:Open Database Connectivity
JDBC:Java Data Base Connectivity


约束

约束:constraint,表中的数据要遵守的限制
主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,即NOT NULL,一个表只能有一个

惟一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为NULL,一个表可以存在多个

外键:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据检查:字段值在一定范围内


索引

索引:将表中的一个或多个字段中的数据复制一份另存,并且按特定次序排序存储

关系运算:
选择:挑选出符合条件的行
投影:挑选出需要的字段
连接:表间字段的关联


数据模型

数据抽象:
物理层:数据存储格式,即RDBMS在磁盘上如何组织文件
逻辑层:DBA角度,描述存储什么数据,以及数据间存在什么样的关系
视图层:用户角度,描述DB中的部分数据

关系模型的分类:
关系模型
基于对象的关系模型
半结构化的关系模型:XML数据

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值