首页 > 技术文章 > 数据库初解

spidermansam 2017-12-04 17:13 原文

数据库的优点
相互关联的数据的集合
 
较少的数据冗余
 
程序与数据相互独立
 
保证数据的安全、可靠
 
最大限度的保证数据的正确性
 
数据可以并发使用并能同时保证一致性
 
数据库的管理系统
DBMS是管理数据库的系统软件,它实现数据库系统的各种功能,是数据库系统的核心
DBA:负责数据库的规划,设计,协调,维护,和管理等工作
应用程序是指以数据库为基础的应用程序
 
数据管理系统的基本功能
数据定义
数据处理
数据安全
数据备份
 
#~~~~~~~~~~~~~~~~~~~~~~
数据库系统的架构
单机架构
大型主机/终端架构
主从式架构(C/S)
分布式架构
 
#~~~~~~~~~~~~~~~~~~~~~~
 
关系型数据库
关系:关系就是二维表,并满足如下性质:
     表中的行,列次序并不重要
列:表中的每一行,又称为一条记录
主键:用于唯一确定一个记录的字段
域:属性的取值范围,如,性别只能是‘男’和‘女’两个值
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
关型数据库都有 事物:
事物可以保证数据的可靠性
 
原子性
一个数据做了3/5那么,对数据的动作,要么全做,要么全不做
可选操作
rollback 回滚
undo撤销
redo从做
 
 
一致性
并发访问时保证数据的一致型
 
 
隔离性
解决 两个事物同时操作一个数据的冲突,有细微的顺序,事物1加锁访问,结束后解锁,事物2接着重复事物1的操作
 
 
持久性
一旦事物结束后,这个事物对其的操作时永久性的,没有备份无法还原
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
实体
客观存在并可以相互区分的客观事物或抽象事件 -->称为实体
在E-R图中用矩形表示实体,把尸体名卸载框内
 
属性
实体所具有的特征或性质
 
联系
联系是数据之间的关联集合,是客观存在的应用语义链
实体之间的联系用菱形框表示
#~~~~~~~~~~~~~~~~~~~~~~~~
 
构建表时需要考虑他们彼此之间的关系
联系类型:
一对一联系(1:1)
一对多联系(1:n)
多对多联系(m:n)     #利用主外键表题啊先了一对多的关系
 
确定没有重复项,建议要有主键,唯一键看情况
 
唯一键:可以为空,可以有多个,且唯一键作用在字段,该字段具有唯一性不可重复
 
主键: 一个记录中只能有一个,且不可以为空
 
复合主键:主键作用在多个字段上,但是主键还是只能有一个
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
数据库的内容
包括两类,一类是数据类型,内容,性质有关的对象
比如关系模型中的域,属性和关系等;另一类是与数据之间联系有关的对象,他从数据组织层表达数据记录与字段的结构
 
数据库的操作:
数据提取,在数据集合中提取感兴趣的内容(数据查询):select
数据库更新:变更数据库中的数据:(insert、delete、update)
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
数据的结束条件:是一组完整性的集合
实体(行)完整性
域(列)完整性
参考完整性
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
数据库的构建,数据规划流程:
第一阶段:收集数据,得到字段
 
收集必要且完整的数据项
转换成数据表的字段
 
 
第二阶段:把字段分类,归入表,建立表的关联
 
关联:表和表之间的关系
 
分割数据并建立关联的优点
 
节省空间(设计主键-->减少冗余)
 
减少输入错误(设计可选项,避免数据收集错误)
 
方便数据修改
 
 
第三阶段:
 
规范化数据库
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
数据库的正规化分析:
RDMBS设计范式概念:
满足三个范式便可满足日常生活中的使用
范式越多,数据库的规则就越多
 
第一范式:
不能有重复的列,每一列都是不可分割的基本数据项,每个属性不能有重复的属性
 
第二范式:
属性完全依赖于主键:第二范式满足前,必须先满足第一范式,
 
第三范式:
属性不依赖于其他非主键属性,满足第三范式前,必须先满足第二范式,
 
三个范式在特定环境下,可以不满足
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SQL概念
结构查询语言
SQL解释器:
数据存储协议:应用层协议,C/S
S(服务端):server,监听于套接字,接受并处理客户端的应用请求
 
C(客户端):
 
程序接口:CLI,GUI
应用编程接口:ODBC,JDBC
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
约束:
表中的数据要遵守的限制
主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,即NOT NULL,一个表中只能有一个
 
唯一键:一个或多个字段的组合,填入的数据能在本表中唯一标识本行;允许为NULL,一个表中可以存在多个
 
外键:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据
 
检查:字段在一定范围内
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
索引:
将表中的一个或多个字段中的数据复制一份另存,并且根据客户需要按特定次序排序存储
 
利用二叉树(二分)查找数据(速度很快),避免全表扫描
 
索引的更改,可能会降低索引的搜多速度,类似于python的insert
 
索引的建立应该是记录比较多的数据时创建,建立索引根据环境考虑
写命令时,避免命令前出现%,这样不会启用索引
 
关系运算:
选择:挑选出符合条件的行
投影:挑选出需要的字段
连接:标间字段的关联
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
数据抽象:
物理层:即数据的存储格式,及RDBMS在磁盘上如何组织文件
 
逻辑层:描述存储什么数据,以及数据间存在什么样的关系
 
视图层:描述DB中的部分数据(虚拟的表,将数据隐藏起来,返回用户不为隐私的数据,数据不全)
 
 
关系模型的分类:
 
关系模型
 
基于对象的关系模型
 
半结构化的关系模型:XML数据

推荐阅读