【数据库】数据库基础
数据库基础
正文开始@Assassin
目录:
- 数据库基础
- 1. 基本概念:
- 2. 常用数据模型:
- 3. 常用SQL操作:
- 4. 关系型数据库:
- 4.1 索引:
- 5. 数据库完整性:
- 6. 关系数据理论:
- 6.1 范式:
- 7. 数据库恢复:
- 8. 并发控制:
部分知识点参考自《 数据库系统概论(第 5 版) 》
1. 基本概念:
- 数据(
data
):描述事物的符号记录称为数据。 - 数据库(
DataBase
,DB
):是长期存储在计算机内、有组织的、可共享的大量数据的集合,具有永久存储、有组织、可共享三个基本特点。 - 数据库管理系统(
DataBase Management System
,DBMS
):是位于用户与操作系统之间的一层数据管理软件。 - 数据库系统(
DataBase System
,DBS
):是有数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DataBase Administrator
,DBA
)组成的存储、管理、处理和维护数据的系统。 - 实体(
entity
):客观存在并可相互区别的事物称为实体。 - 属性(
attribute
):实体所具有的某一特性称为属性。 - 码(
key
):唯一标识实体的属性集称为码。 - 实体型(
entity type
):用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。 - 实体集(
entity set
):同一实体型的集合称为实体集。 - 联系(
relationship
):实体之间的联系通常是指不同实体集之间的联系。 - 模式(
schema
):模式也称逻辑模式,是数据库全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。 - 外模式(
external schema
):外模式也称子模式(subschema
)或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。 - 内模式(
internal schema
):内模式也称为存储模式(storage schema
),一个数据库只有一个内模式。他是数据物理结构和存储方式的描述,是数据库在数据库内部的组织方式。
2. 常用数据模型:
- 层次模型(
hierarchical model
) - 网状模型(
network model
) - 关系模型(
relational model
)- 关系(
relation
):一个关系对应通常说的一张表 - 元组(
tuple
):表中的一行即为一个元组 - 属性(
attribute
):表中的一列即为一个属性 - 码(
key
):表中可以唯一确定一个元组的某个属性组 - 域(
domain
):一组具有相同数据类型的值的集合 - 分量:元组中的一个属性值
- 关系模式:对关系的描述,一般表示为
关系名(属性1,属性2, ..., 属性n)
- 关系(
- 面向对象数据模型(
object oriented data model
) - 对象关系数据模型(
object relational data model
) - 半结构化数据模型(
semistructure data model
)
3. 常用SQL操作:
对象类型 | 对象 | 操作类型 |
---|---|---|
数据库模式 | 模式 |
CREATE SCHEMA
|
基本表 |
CREATE SCHEMA ,ALTER TABLE
|
|
视图 |
CREATE VIEW
|
|
索引 |
CREATE INDEX
|
|
数据 | 基本表和视图 |
SELECT ,INSERT ,UPDATE ,DELETE ,REFERENCES ,ALL PRIVILEGES
|
属性列 |
SELECT ,INSERT ,UPDATE ,REFERENCES ,ALL PRIVILEGES
|
4. 关系型数据库:
- 基本关系操作:查询(选择、投影、连接(等值连接、自然连接、外连接(左外连接、右外连接))、除、并、差、交、笛卡尔积等)、插入、删除、修改
- 关系模型中的三类完整性约束:实体完整性、参照完整性、用户定义的完整性
4.1 索引:
- 数据库索引:顺序索引、B+ 树索引、hash 索引
5. 数据库完整性:
- 数据库的完整性是指数据的正确性和相容性。
- 完整性:为了防止数据库中存在不符合语义(不正确)的数据。
- 安全性:为了保护数据库防止恶意破坏和非法存取。
- 触发器:是用户定义在关系表中的一类由事件驱动的特殊过程。
6. 关系数据理论:
- 数据依赖是一个关系内部属性与属性之间的一种约束关系,是通过属性间值的相等与否体现出来的数据间相关联系。
- 最重要的数据依赖:函数依赖、多值依赖。
6.1 范式:
- 第一范式(
1NF
):属性(字段)是最小单位不可再分。 - 第二范式(
2NF
):满足1NF
,每个非主属性完全依赖于主键(消除1NF
非主属性对码的部分函数依赖)。 - 第三范式(
3NF
):满足2NF
,任何非主属性不依赖于其他非主属性(消除2NF
非主属性对码的传递函数依赖)。 - 鲍依斯-科得范式(
BCNF
):满足3NF
,任何非主属性不能对主键子集依赖(消除3NF
主属性对码的部分和传递函数依赖)。 - 第四范式(
4NF
):满足3NF
,属性之间不能有非平凡且非函数依赖的多值依赖(消除3NF
非平凡且非函数依赖的多值依赖)。
7. 数据库恢复:
- 事务:是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
- 事物的 ACID 特性:原子性、一致性、隔离性、持续性。
- 恢复的实现技术:建立冗余数据 —> 利用冗余数据实施数据库恢复。
- 建立冗余数据常用技术:数据转储(动态海量转储、动态增量转储、静态海量转储、静态增量转储)、登记日志文件。
8. 并发控制:
- 事务是并发控制的基本单位。
- 并发操作带来的数据不一致性包括:丢失修改、不可重复读、读 “脏” 数据。
- 并发控制主要技术:封锁、时间戳、乐观控制法、多版本并发控制等。
- 基本封锁类型:排他锁(X 锁 / 写锁)、共享锁(S 锁 / 读锁)。
- 活锁死锁:
- 活锁:事务永远处于等待状态,可通过先来先服务的策略避免。
- 死锁:事务永远不能结束
- 预防:一次封锁法、顺序封锁法;
- 诊断:超时法、等待图法;
- 解除:撤销处理死锁代价最小的事务,并释放此事务的所有的锁,使其他事务得以继续运行下去。
- 可串行化调度:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同。可串行性是并发事务正确调度的准则。
【数据库】数据库基础相关推荐
- AndoridSQLite数据库开发基础教程(10)
AndoridSQLite数据库开发基础教程(10) 添加触发器 触发器(TRIGGER)是由事件来触发某个操作.这些事件包括INSERT.DELETE.UPDATE和UPDATE OF.当数据库系统 ...
- AndoridSQLite数据库开发基础教程(9)
AndoridSQLite数据库开发基础教程(9) 添加视图 视图是从一个或几个基本表(或视图)中导出的虚拟的表.通过视图可以看到表的内容.下面为数据库添加视图,操作步骤如下: (1)打开的数据库,单 ...
- AndoridSQLite数据库开发基础教程(8)
AndoridSQLite数据库开发基础教程(8) 添加索引 索引是一种通过预先排序和对表的一个或多个列构建索引表来优化数据库查找的手段.下面为表添加索引,操作步骤如下: (1)在打开的数据库中,单击 ...
- AndoridSQLite数据库开发基础教程(7)
AndoridSQLite数据库开发基础教程(7) 为空表添加数据 开发者可以单击Data按钮,看到Students表中是没有数据的,创建好的Students表是一个空表.如图1.15所示.如果开发者 ...
- AndoridSQLite数据库开发基础教程(6)
AndoridSQLite数据库开发基础教程(6) 为数据库添加添加空表 如果开发者想要往数据库中添加表和列,操作步骤如下: (1)在打开的数据库中,单击左下方的"+"按钮,弹出T ...
- AndoridSQLite数据库开发基础教程(5)
AndoridSQLite数据库开发基础教程(5) 创建SQLite数据库 使用SQLiteManager创建数据库的操作步骤如下: (1)双击SQLiteManager工具,弹出SQliteMana ...
- AndoridSQLite数据库开发基础教程(4)
AndoridSQLite数据库开发基础教程(4) 安装SQLiteManager 以下是SQLiteManager的安装步骤: (1)双击下载的.exe文件,弹出SQLiteManager Setu ...
- Andorid SQLite数据库开发基础教程(3)
Andorid SQLite数据库开发基础教程(3) 数据库生成方式 数据库的生成有两种方式,一种是使用数据库管理工具生成的数据库,我们将此类数据库称为预设数据库,另一种是使用代码生成的数据库. 使用 ...
- Andorid SQLite数据库开发基础教程(2)
Andorid SQLite数据库开发基础教程(2) 数据库生成方式 数据库的生成有两种方式,一种是使用数据库管理工具生成的数据库,我们将此类数据库称为预设数据库,另一种是使用代码生成的数据库.
- 在线提交信息 程序 php,在线短消息收发的程序,不用数据库_php基础_脚本
在线短消息收发的程序,不用数据库_php基础_脚本 发布时间:2016-06-17 来源: 点击: 次 login.php session_start(); $nickname=$name; sess ...
最新文章
- 路遥知马力——Momentum动量梯度
- presto能连接mysql和hive吗_Presto连接Hive
- 利用二极管的P-N结的I-V特性测量Boltzmann常数
- pytorch 损失函数总结
- job 做 ha 问题?
- 分治算法求乘方a^b 取余p(divide and conquer)
- python 股票指标库talib_股票指标库 TA-Lib 安装方法
- MySQL 5.7.11 重置root密码
- 栈应用_将算式转成按运算符优先级分布(代码、分析、汇编)
- android listpreference 自定义,Android ListPreference的用法一
- java socket 异常处理_java.net.SocketException四大异常解决方案
- Unity Behavior Designer(行为树)Abort Type(中断类型)
- destoon调用内容从第几篇开始
- 石川:出色不如走运 (II)?
- Python小记---你不在意的小细节
- Android入门之把窗口信息传递给InputDispatcher
- 安卓从Flickr获取Json数据
- 计算分段函数[2](C语言)
- verilog代码风格——PN序列产生代码
- 杰奇不支持mysql8,【教程】杰奇小说手机端安装使用说明
热门文章
- 2万月薪招聘名校学生养猪:不好好学习,养猪都不要你
- 逼疯上海人的垃圾分类满月了:羊肉串变羊肉吕,奶茶里珍珠按颗算...
- 日本老年人开始送外卖了 锻炼赚钱两不误 网友:饿死了么外卖?
- 编号001!华为超级旗舰入网:获中国首张5G手机“身份证”
- Apple Watch用户终于能对部分预装应用说不了 包括闹钟、定时器等
- 2019斗鱼直播节开幕 超1500名人气主播齐聚武汉
- 小米首部5G手机正式发布 海外营收将很快超过国内
- 深入浅出Shell编程: Shell 变量【ZT】
- 个人简历(中英对照)词汇大全
- 老表笔记之电商项目实战测试流程