postgre数据库记录唯一键_数据库

hello 数据库的复习资料又来了凹,这学期的老师一直只会念ppt,后面去蹭了安龙哥的课,体验极佳,希望考试能过8,ball ball了

1我们为什么要引入数据库这种方式

在操作系统当中,我们有了解到文件管理系统是一种管理文件的方式,但是对于大量复杂的结构化数据,单纯的使用内存管理的文件方式,利用人为管理是远远不够的,既然数据是结构化的,使用特定的数据管理方法是一个更好的方式

数据库管理解决的缺点如下

  • 数据高度冗余: 数据基本是面向特定用户的
  • 数据共享困难: 文件基本都处于私有状态(比如联机使用就很困难)
  • 数据和程序缺乏独立性 : 没有逻辑独立性

数据库管理优点如下

1 数据结构化

在我们主要讨论的关系数据库当中,采用表格的方式存储,但是在自然世界当中,我们很多数据都不是结构化的,如何把现实生活当中的数据转化为结构化数据呢?我们需要构造数学模型从现实到计算机 分别建立 概念数据模型 逻辑数据模型 物理数据模型来构建数据库

  • 概念数据模型
    面向用户的系统数据模型,描述现实世界,摆脱DBMS的具体技术,集中分析数据对象之间的关系
  • 逻辑数据模型
    数据库系统设计的角度来描述数据对象组成和关结构
  • 物理数据模型
    针对具体的DBMS设计数据模型,用于描述系统数据模型在具体DBMS中数据对象,存储方式,索引方式

概念模型 ER模型(entity relation) 注意这里表的什么说法,还是在概念上设计

实体: 一个现实世界当中对象。某某菜鸡小毛就可以算作是一个实体
实体当中有的有键,但有的没有键 被称作弱实体 也就是弱实体不能唯一的标识自己,必须通过连接强实体 比如家长们的连续必须依赖学生的朋友关系
(弱实体必须参与1:n关系,弱实体型必须完全参与识别联系)属性: 实体属性 用来描述实体的特征域: 属性的取值范围 比如学位(学士、硕士、博士)键: 唯一标识集合中每个实体的一组属性 每个实体的属性集合被称为键
候选键:属性不可以缺失
主键:在多个候选键当中的唯一标识实体型: 描述相同实体的属性类型实体集: 同一类型实体集合联系: 实体内部的联系和实体之间的关系(主要是实体之间的一些关系)
通常情况下,一个实体可以和其他多个类型的实体存在关联 关联的实体类型被称为联系的阶

关系存在多种类型,对应的有不同的物理实现方式

  • 一对一联系
    一个班级只有一个班主任,一个班主任只管理一个班级
  • 一对多联系
    一个班级有多个学生,每个学生只有一个班
  • 多对多关系

在构建概念模型后,并不能直接在我们的数据库当中使用,在逻辑模型的建模过程中,我们需要对用户需求的概念模型进行转化

  • 一个独立实体直接转化为一个关系表
  • 弱实体 建立一个和独立实体建立依赖关系的关系表
  • 一对一联系转化 互相添加外键
  • 一对n联系转化 1的一边添加外键

a49c534a317c00e5190e70d2f106978d.png

2 数据冗余少: 范式保护

第一范式:数据库默认满足的范式 所有的字段都必须是单一属性

第二范式: 所有的内容都是全部依赖, 在数据当中经常出现这种现象 有些值和主键关系不是很大 比如一个音乐的数据集 ,有以下几个属性

音乐编号ID 乐曲名称 作曲家 国籍

很显然,作曲家的国籍只和作曲家是谁有关 和音乐编号ID号无关(这里我们只关心主键) 把作曲家和国籍再构建一个表 是更好的选择,使内容满足第二范式

第三范式: 主键没有部分函数依赖了,但是可能还有一些和主键相关的间接依赖 比如班课和专业是绑定的,他们和学生不能构建直接关系,消除表当中的推理过程构成三范数

3 数据控制统一(事务属性ACID)

  • Atomicity原子性 事务当中所有元素作为一个整体提交 事务的元素是不可分的

默认的一个语句是具有原子性的,事务能让一串语句也具有完整性

  1. 开始事务:BEGIN TRANSACTION
  2. 提交事务: COMMIT TRANSACTION
  3. 回滚事务: ROLLBACK TRANSACTION
  4. 保存事务 SAVE TRABSACTIO 保存点名称 自定义的保存点
  • Consistency一致性 事务完成 数据必须是已知的,数据处于一致状态
  • isolation 隔离性 对数据进行修改的多个事务彼此隔离 (不应该彼此影响)

在并发处理上,加不同种类的锁来完成资源的互斥访问

  • durability 持续性 事务完成后,对系统影响是永久的,出现故障也会回复,保持

对于数据的容错和恢复,一直是计算机

数据管理系统:和操作系统的软硬之间的交互界面类似,数据管理系统在操作系统和用户之间提供一个数据管理软件

  • 数据定义功能: DDL 定义数据对象
  • 数据操纵功能: DML 提供数据库的查询、插入、删除、修改操作

事务是并发控制的基本单位,这些操作要么都执行,要么都不执行,是一个不可分割的工作单位。

事务语句

checkpoint的使用方法

用户在事务内可以声明保存点的标记。 用户在事务进行回滚操作时,如果中间出现一系列错误,利用保存点回滚到对应的位置。
事务回滚的过程如下:

  • 回滚至定保存点之后的语句
  • 保留值定的保存点,清除后续的保存点
  • 释放此保存点后的锁
  • 被部分回滚的事务仍然处于活动状态,继续执行

存储过程

存储过程时预编译的SQL(编译和的代码已经进行优化)

存储过程时一个记录的集合,像函数一样的代码块实现一些功能,在调用的时候无需变一,直接进行使用

  • 存储过程是预编译的代码段,执行效率高
  • 保证数据安全

索引

索引是对数据库表中一列或者多列值进行排序的结构(键值+逻辑指针)。 数据库的索引类似数据的索引,允许搜索不必遍历整个数据库,不必扫描整个数据库。

  • 索引加快数据库的检索速度
  • 降低插入 修改 等维护任务速度
  • 索引需要占据物理空间

视图

视图是一个虚拟的表,也可以对视图进行CRUD操作,但是并不是真实存在的,视图修改不影响基本表,方便联合查询

  • postgre数据库当中包括 关系表 对象表 外部表 不包括索引表
  • postgre 不包含数据库对象的是存储过程, 函数 触发器 都是某个数据库专有的对象属性
  • postgre 利用pg_ctl 完成服务器的启停服务
  • 数据仓库技术可以完成数据的集成
  • 业务规则数据再数据库当中是一种元数据
  • MySQL不是一种企业级DBMS
  • 关系可以任意顺序,这使得笛卡尔积和数学定义不相同
  • 表当中也不允许又重复行存在
  • 主键的作用
    • 标识关系表当中的不同元组
    • 作为关联表的关联属性列
    • 通过主键列的索引快速检索行数据
  • 参照完整性 标注为外键的内容要么为空 要么必须在对应主键的域当中 保证数据的一致性
  • 关系模型 包括 数据结构 操作方式 数据约束
  • 专用的运算 一个针对行 一个针对列 连接的内容另说 笛卡尔积不是一个专用的运算类型

360c338cfa20aeda563cb7dc246e931c.png
  • 连接主要分为内连接和外连接
    • 内连接 要求两个关系的匹配元组形成查询结果集
      • 条件连接 在笛卡尔积当中选择满足条件的元组进行保存
      • 等职连接 只对相同属性的相同元素包留
      • 自然连接 两个表既然是相同属性 就把两个表的所有内容进行合并
    • 外连接 在内连接当中,两个表连接的过程当中会有一些项丢失,外连接当中使用null进行补充
      • 左外连接 最后的表一定要有作边的表的主键的信息
      • 右外连接
      • 全外连接

5ab827630dc80a05dc8edbbf715f61ea.png
  • 实体完整性 主键不能是null并且不能出现重复
  • 自然连接是一种等值连接
  • 在参照完整性当中保护数据一致性,可以定义级联 拒绝 设置为空
  • text不是SQL语言的标准数据类型
  • SQL语言特性
    • 对数据库进行操作
    • 数据库游标操作
    • 数据库事务操作
  • 修改表的结构 使用alter table
  • distinct 消除重复的结果信息
  • 数据库对象拥有可以收回赋予其他用户的访问权限
  • 数据库利用on delete cascade 完成排序
  • 数据应用系统开发
    • 需求分析
    • 系统设计
    • 系统实现 完成数据库的创建任务
    • 系统测试
  • ER基本元素
    • 实体
    • 标识符
    • 联系 (没有关系表)
  • 实体关联其他实体的数量称为联系度数
  • 在逻辑模型转化为关系模型的时候
    • 实体转换为关系表
    • 属性转换为列
    • 联系转化为参照完整性约束
  • 数据库管理的目标
    • 实现应用对数据库访问
    • 发挥数据库系统处理功能
    • 确保数据库安全访问
  • 事务特征
    ACID
    • 原子性
    • 持续性
    • 一致性
    • 隔离性
  • 在行上加锁 系统并发的访问性能最好
  • 如果所有事务都遵循两阶段锁定协议 事务并发执行都可以实现可串行化
  • 存储过程是一组预先定义并且编译的SQL语句
    • 实现模块化编程 共享宠用
    • 加快程序运行速度
    • 提高数据库的安全性
  • 触发器特点
    • 基于一个表创建,可以对多个表进行操作
    • 被触发自动执行
    • 不能带参数执行
  • java嵌入SQL返回在resultSet当中
  • 传递动态参数接口 preparedstatement
  • 调用执行存储过程接口 callablestatement
  • 数据库游标 是存储在内存当中的查询结果集合
  • MongoDB文档存储
  • Hbase列存储
  • redis键值对存储
  • NoSQL特点
    • 分区
    • 异步复制
    • base
  • CAP 分布式环境下设计和部署系统的三个核心需求
    • 一致性
    • 可用性
    • 分区容忍性
  • 第二范式:消除部分依赖
  • 三:传递依赖
  • 四:多值函数依赖
  • 用二维表标识shirting实体之间和关系模型成为关系数据模型
  • 进行多表查询的·时候 可以是信用 join连接条件 也可以使用where简历连接
  • ODBC和JDBC都是微软提供的对数据库访问的标准API
  • 关系当中所有属性都是主属性 一定达到2NF的要求
  • 常见数据模型是层次 关系 网状数据模型
  • 关系代数专用的关系运算包含 选择 投影 连接 除法运算

典型的数据库管理系统包括

  • 数据库
  • DBMS
  • 应用程序
  • 用户
  • 数据库管理员(DBA)
  • 对实体连接的第一个模型 实体联系模型ER
  • DBS具有数据独立性特点 是因为采用了 三级层次模型
  • jsp不用载入在浏览器上
  • create procdure 产生对应的存储过程
  • 输一局库当中没有触发器这个对象 利用function函数进行实现
  • 视图·1是在基本表或者视图当中导入得到的
  • ER图当中,椭圆标识对象类型 联系类型用菱形标识 实体类型用长方形标识
  • 数据库当中最重要的软件是DBNS,最重要的用户是DBA

ER实体标识符具有特性

  • 可以有一个或者多个属性
  • 取值唯一
  • 区分不同实例
  • 具有代表意义的属性

数据库加锁管理最简单,行上加锁最安全

关系模型包括

  • 数据结构
  • 操作方法
  • 数据约束

专门的关系运算 包括选择 投影 连接在数据存储层是负责对数据文件的操作访问

ER图当中的冲突类型主要包括属性冲突 命名冲突 结构冲突

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值