数据库原理及应用【二】数据模型
层次模型
tree
- Record and field
- Parent-Child relationship(PCR)
每个记录类型只有一个父节点
无法表达多对多信息
采用虚记录解决多对多
网状数据模型
系:主记录->属记录
主记录和属记录都可以有好多个
关系模型
表:table/relation
拥有更高的抽象级别,可以用数学里面集合论的知识研究
屏蔽底层编程细节,易于理解
可以引入代数系统
非过程化查询语言
软链接,逻辑指针
属性和域
- 原子数据:要求表的每个属性是原子的,不能再分。不允许出现表中套表。(一范式)
- 允许空值
- 关系(表)和元组
属性的个数称作目
属性,列,字段
元组,行,记录
主键:一组属性
- 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)×B−A)
首先先将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模型:
弱实体:不能单独存在,必须依赖其他实体存在的实体。例如职工的家属
普遍化和特殊化
聚集:把联系看作实体集和其他实体发生联系
范畴:不同类型的实体组成范畴
面向对象数据模型
突破一范式的限制
数据库原理及应用【二】数据模型相关推荐
- 数据库原理(十 二)- 逻辑结构设计
数据库原理(十 二)- 逻辑结构设计 前言 E-R图向关系模型的转换 数据模型的优化 设计用户子模式 前言 概念结构是独立于任何一种数据模型的信息结构,逻辑结构设计的任务就是概念结构设计阶段设计好的基 ...
- ORACLE与数据库原理实验 实验二 实验数据库的建立(答案全)
实验二 实验数据库的建立 [实验目的] [预备知识] [实验内容] [实验目的] 1. 熟悉和掌握 SQL的 Create Table, Drop Table, Alter Table语句语法: 2. ...
- 西电_2022春_数据库原理_实验二
实验内容及要求 [使用实验一创建的六个表,即学院表College,学生表Student,教师表Teacher,课程表Course,学习表Study,开课表Class ] 求选修了Wang老师所授课程D ...
- 数据库原理—数据库基础(二)
数据库原理-数据库基础(二) 一.数据和信息 (一).信息 信息是客观存在的,是关于现实世界事物的存在方式或运动状态反映的综合 信息与材料和能源一个层次,是人类社会赖以生存和发展的三大资源之一 (二) ...
- 数据库原理实验二 数据库管理 实验报告
广州大学学生实验报告实验二:数据库管理 此篇分享仅供参考学习,图文禁复制,勿作他用!谢谢配合! 数据库原理实验之实验二:数据库管理 软件:Oracle SQL Developer 今天实验才刚开始,花 ...
- 数据库原理—数据模型(三)
数据库原理-数据模型(三)
- 《数据库原理与应用》实验二
题目来源学校课后作业,禁商业用途,仅用于课业学习 <数据库原理与应用>实验二 一.实验目的及要求 1.掌握SQL查询语言的使用. 2.掌握SQL流程控制语句的使用. 3.要求独立完成,并记 ...
- 数据库原理-几种数据模型
目录 数据库应用系统中三种不同的数据模型 数据模型的组成要素:数据结构.数据操作.数据完整性约束条件 数据结构 数据操作 完整性约束条件 数据库中主要的逻辑数据模型 层次模型(格式化模型) 网状模型( ...
- 数据库原理及应用(东南大学)笔记——第二章 数据模型
第二章 数据模型(data model) 2.1 层次数据模型 2.1.1 基本思路: 现实世界中很多事物之间本就存在层次关系,该模型尝试用树状结构描述这种关系. 2.1.2 基本概念: 记录reco ...
- 【数据库原理及应用】经典题库附答案(14章全)——第十二章:数据库技术新发展
[数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...
最新文章
- pgadmin使用教程
- 12.1 LNMP架构介绍;12.2 MySQL安装;12.3-2.4 PHP安装(上下);12.5
- android dialog 隐藏状态栏_Android开发不得不收集的工具类集合
- mysql 默认当前时间_复制信息记录表|全方位认识 mysql 系统库
- c#string倒数第二位插入字符_c#string倒数第二位插入字符_C#利用String类的IndexOf、LastIndexOf、...
- oracle 表达式1000,oracle环境下占用编号的方法报语法错误:ORA-01795: 列表中的最大表达式数为 1000...
- NO4 findmv--特殊符号..和.
- 使用pip安装opencv
- Xmodem、Ymodem、Zmodem
- java runnable线程锁_多线程 java 同步 、锁 、 synchronized 、 Thread 、 Runnable
- docker 删除image_不是吧!Docker上手,看会觉得自己又行了!
- 问题六十二:怎么求一元十次方程在区间内的所有不相等的实根(2)——修正“区间端点零值”问题
- 高效管理MacOS中文件的技巧
- Protel 介绍 protel99se正式汉化版下载 Protel DXP2004简体中文版
- 电子签章(Electronic Signature)在C#中的实现方法
- 计算机专业实习报告-5000字+,以及计算机专业实习周记-15篇
- 2018华为软件精英挑战赛体会
- 留学Assignment写作要注意逻辑谬误
- avr单片机c语言计算log,AVR单片机定时器初值计算公式与方法 - 单片机定时器初值计算公式(51单片机和AVR单片机的初值计算三种方法)...
- Span 介绍及使用(二)
热门文章
- 使用maven插件构建docker镜像
- 线索二叉树的C语言实现
- Struts2之环境配置
- EASYUI+MVC4通用权限管理平台
- Oracle ——如何确定性能差的 SQL
- SQL Server 2000数据库移植到SQL Server 2008R2数据库服务器中碰到的”3145错误”及解决办法...
- mysql 帐号开启远程_两大步骤教您开启MySQL 数据库远程登陆帐号
- 前端项目难点及解决方法_预埋件施工重点难点的解决方法
- ajax eval html,Ajax eval的应用示例
- 个人信息管理系统代码_Thymeleaf+SpringBoot+Mybatis实现的易游网旅游信息管理系统...