数据库原理及应用【二】数据模型

层次模型

tree

  • Record and field
  • Parent-Child relationship(PCR)

在这里插入图片描述

每个记录类型只有一个父节点

无法表达多对多信息

采用虚记录解决多对多

网状数据模型

系:主记录->属记录
主记录和属记录都可以有好多个

在这里插入图片描述在这里插入图片描述

关系模型

表:table/relation

  • 拥有更高的抽象级别,可以用数学里面集合论的知识研究

  • 屏蔽底层编程细节,易于理解

  • 可以引入代数系统

  • 非过程化查询语言

  • 软链接,逻辑指针

  • 属性和域

  1. 原子数据:要求表的每个属性是原子的,不能再分。不允许出现表中套表。(一范式)
  2. 允许空值
  • 关系(表)和元组
    属性的个数称作目
    属性,列,字段
    元组,行,记录

主键:一组属性

  • unique
  • not null
  • 可以决定其他元组的其他属性
  • 属性组的子集不满足上述条件。如果不满足这个条件就称作超键。
  • 如果多个属性组满足上述条件,我们可以指定一个为主键,其他的为候补键
  • 如果这个属性组就是元组本身,称这个属性组为全键

外键:一组属性

  • 来自其他关系,并且是其他关系的主键。逻辑指针
  • 且必须在另一个表里面存在这个主键

域完整性约束:每个元组的每个属性的值都必须满足值域
实体完整性约束:主键不允许为空
引用完整性约束:外键的值必须在所引用的表中存在

关系代数

基本操作

  • 选择Selection σ \sigma σ :选择一些行
  • 投影Projection π \pi π:选择一些列。投影操作应该消除可能出现的重复元素。实际的系统不会自动进行消除重复元素,除非用户要求。
  • 叉乘Cross-product × \times × : 笛卡尔乘积
  • 集合差Set-difference − - :集合减法
  • 合并Union ∪ \cup :将两个表合并起来

上述五种操作构成了数据库完备的操作集合。任何其他操作都可以通过这些操作完成。

上面的操作都是封闭的。

后面两种操作要求参与运算的两个集合满足并兼容的条件:

  • 属性个数一样
  • 属性类型一样

连接操作:先做笛卡尔乘积,再做选择。实际上可以进行查询优化,否则效率比较低。

  • 等值连接
  • 自然连接:按照两个表的共同属性进行等值连接

除法操作:A/B
在这里插入图片描述
A / B = π x ( A ) − π x ( π x ( A ) × B − A ) A/B = \pi_x(A)-\pi_x(\pi_x(A)\times B-A) A/B=πx(A)πx(πx(A)×BA)

首先先将A中特有的属性x和B中的属性y分离开,然后再叉乘,得到的是一个比A大的集合,减去A后剩下的就是那些原本没有B属性的元组,将这些x提取出来再减去他们就是正确的x.

外连接:找不到匹配仍然保留元素,用空值填补

  • 左外连接:保留左边表的所有元素
  • 右外连接:保留右边表的所有元素
  • 全外连接:保留两张表中的所有元素

外并:将不满足并兼容的表并在一起,新表的属性是原来两张表的属性的并,元组加在一起,缺少的元素补空值。

关系演算

基于谓词逻辑的非过程化的表达

  • 元组关系演算TRC
  • 域关系演算DRC

等价的,区别在于变量的定义不同。域关系演算的变量是属性。

域关系演算

  • 原子公式
    • <x1,x2,…,xn>属于表
    • X op Y
    • X op constant
  • 公式
    • 原子公式
    • 逻辑运算
    • 使用量词

对某个变量使用量词就称这个量词被绑定

不安全的查询:如果查询结果是无限的,就说这个查询是不安全的。

安全的关系演算和关系代数是等价的。

SQL语言建立在关系演算之上。

元组关系演算

变量定义在元组上

ER数据模型

传统的数据模型擅长表达以记录为基础的结构化的数据,支持日常事务型的应用。

不能根据用户的需求或者应用的需求

不能用一种很自然的方法表达实体之间的关系

语义信息不够明确

支持的数据类型太少,有时候不能满足应用的需求

实体Entity:现实世界中可区别的对象,使用一组属性来描述
实体集Entity Set:实体的集合
允许复合类型,多值属性

联系Relationship:实体之间的联系

E-R图:对E-R模型的图形化的展示。

方框:实体
圆圈:属性
菱形:联系

基数比例约束:

  • 一对一
  • 一对多
  • 多对多

参与度约束:一个实体参与一个联系的最少和最多次数
全参与
部分参与

扩展ER模型:
弱实体:不能单独存在,必须依赖其他实体存在的实体。例如职工的家属
普遍化和特殊化
聚集:把联系看作实体集和其他实体发生联系
范畴:不同类型的实体组成范畴

面向对象数据模型

突破一范式的限制

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值