数据库理论基本概念

数据库理论基本概念

三级模式和两级映像

外模式            > 用户和数据库系统的接口
--------   外模式-概念模式映射    
概念模式          > 数据的逻辑结构和特征的描述
--------   概念模式-内模式映射
内模式            > 数据物理结构和存储方式的描述三级模式分别对应:视图、基本表、存储文件
两级映像保证了数据的独立性

术语

关系: 一个关系就是一张表,每个关系有个关系名。

元组: 存储文件中的一行记录

属性: 表中的列头(列名、字段)称为属性,属性值相当于记录中的数据项或字段值。

域: 属性的取值范围

关系模式格式: 关系名(属性名1, 属性名2,…)

例:S(id, name, age, sex) 学生S关系模式,属性为学号、姓名、年龄、性别

候选码:能够唯一标识表中记录的最小属性集,一个表可以有多个候选码。

主码: 将最稳定的候选码作为主码

例如,考虑一个名为Employees的表,其中包含EmployeeIDSSN(社会保险号)和Name等属性。如果每个员工都有一个唯一的EmployeeID和一个唯一的SSN,那么EmployeeIDSSN都可以作为候选码。但出于实际考虑(如隐私和稳定性),通常会选择EmployeeID作为主码。

主/非主属性: 包含在候选码中的属性成为主属性,反之称为非主属性。

外码(外键): 外键是一个字段(或字段组合),其值必须在另一个表的主键(或具有唯一约束的字段)中存在。

当两个表之间存在多对多关系时,通常会引入一个关系表(或称为桥接表、关联表、映射表等)来存储这两个表之间的关系。这个关系表通常会包含两个外键列,分别引用两个原始表的主键列,并且可能还会有一个自己的主键列(尽管在某些数据库系统中,这两个外键的组合也可以作为复合主键)。

全码(了解): 若关系R(H,L,M,P)的主键为全码,则关系R的主键为HLMP。

完整性约束

实体完整性约束:

  • 主键约束:候选码的值不能为空(包括主码/主键)

参照/引用完整性约束:

  • 外键约束:确保一个表中的数据匹配另一个表中的数据。外键是一个字段或字段组合,其值引用了另一个表的主键。外键字段可以有空值,除非设置了级联更新或删除规则。

域完整性约束:

  • 数据类型约束:确保字段中的数据是预期的数据类型。
  • 检查约束(Check Constraint):限制字段中的值范围或格式。例如,可以确保年龄字段中的值在0到150之间。
  • 默认约束(Default Constraint):当没有为字段指定值时,提供默认值。
  • 非空约束(Not Null Constraint):确保字段必须有一个值。

用户自定义完整性约束:

  • 触发器(Triggers):基于某个事件(如INSERT、UPDATE或DELETE操作)自动执行或激活的SQL语句或存储过程。触发器可以用于实现复杂的业务规则和数据完整性检查。

  • 存储过程和函数(Stored Procedures and Functions):封装的SQL代码块,可以在数据库中执行复杂的逻辑和计算。它们可以用于确保数据满足特定的业务规则或条件。

  • 规则和断言(Rules and Assertions):在某些数据库系统中(如SQL Server中的规则或PostgreSQL中的断言),它们可以定义数据的验证逻辑。然而,并非所有数据库系统都支持这些特性。

  • 唯一性约束(Unique Constraint):确保字段或字段组合在表中的值是唯一的,但允许有空值。

  • 索引约束:虽然索引主要用于提高查询性能,但它们也可以用于确保数据的唯一性(通过创建唯一索引)。

  • 序列(Sequences):在某些数据库系统中,序列用于生成唯一的数字,通常用于自动填充主键字段。

关系代数

在这里插入图片描述

关系的并: 关系R与关系S的所有元组的合并,再删去重复元组,记为 R ∪ S

关系的交: 同时属于关系R与关系S的元组集合,记为R ∩ S

关系的差: 关系R与关系S的差为从关系R中删去与关系S中相同的元组,记为 R - S

笛卡尔积: 两个集合R和T,它们的笛卡尔积表示为R × T,是一个新的集合,其中的每个元素都是R中的一个元素和T中的一个元素组成的有序对。

在这里插入图片描述

投影: 从垂直方向进行运算,在关系R中选出若干属性列组成新的关系。记作:π

选择: 从水平方向进行运算,选择满足指定条件的元组,记作:δ

在这里插入图片描述

上例中 π A , C ( R ) π_{A,C}(R) πA,C(R) 同理 π 1 , 3 ( R ) π_{1,3}(R) π1,3(R) δ B = ′ 5 ′ ( S ) δ_{B='5'}(S) δB=5(S) 同理 δ 1 = ′ 5 ′ ( S ) δ_{1='5'}(S) δ1=5(S) 可以用列序号

θ连接: 按条件进行连接

在这里插入图片描述

自然连接: 基于两个关系中共同存在的属性(通常称为主键和外键)来组合这两个关系

在这里插入图片描述

外连接:

在这里插入图片描述

关系模式

关系模式定义为:R<U,F>

  • U为R的属性
  • F为属性组U上的依赖

例1:最终目的就是通过候选关键字组合可以表示关系中的所有属性

  • 因为A不依赖任何属性,所以候选关键字肯定包括A
  • 选择A、B可以把C表示出来(AB→C),故AB是一组候选关键字
  • 选择A、C可以把B表示出来(C→B),故AC是一组候选关键字
  • 在候选关键字中的属性都为主属性

在这里插入图片描述

例2:

  • A可推出B、C, C可推出D
  • A、E可推出H

在这里插入图片描述

例3:

  • 52空四个选项的闭包都可以推出A1 A2 A3 A4,但是主键应满足其属性的任意真子集不能表示全集(U)
  • A1→A4是冗余的因为,A1→A2、A2→A4,从而A1和A4存在传递依赖,即A1和A4的关系可以通过其它关系推导出来。
  • 注意:如果删除A2→A4,虽说A1的闭包依旧可以推出所有属性,但依旧无法推出A2→A4的依赖关系。

在这里插入图片描述

例4:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/13407.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

避雷:搭建ai知识库的6大注意事项

随着人工智能技术的发展&#xff0c;ai知识库成为众多企业追求的一个重要部分&#xff0c;帮助企业提高运营次效率&#xff0c;越来越受到人们的关注。但是&#xff0c;在搭建ai知识库的过程中&#xff0c;稍不留意&#xff0c;就会漏掉一些小细节&#xff0c;导致做出来的ai知…

GPT-4o 引领人机交互新风向的向量数据库Milvus Cloud 成本

成本 AIGC 时代对于冷热储存的呼唤 成本一直是向量数据库获得更广泛使用的最大阻碍之一,这个成本来自两点: 储存,绝大多数向量数据库为了保证低延迟,需要把数据全量缓存到内存或者本地磁盘。在这个动辄百亿量级的AI 时代,意味着几十上百 TB 的资源消耗。 计算,数据需…

OpenFeign高级用法:缓存、QueryMap、MatrixVariable、CollectionFormat优雅地远程调用

码到三十五 &#xff1a; 个人主页 微服务架构中&#xff0c;服务之间的通信变得尤为关键。OpenFeign&#xff0c;一个声明式的Web服务客户端&#xff0c;使得REST API的调用变得更加简单和优雅。OpenFeign集成了Ribbon和Hystrix&#xff0c;具有负载均衡和容错的能力&#xff…

线性回归模型之套索回归

概述 本案例是基于之前的岭回归的案例的。之前案例的完整代码如下&#xff1a; import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import Ridge, LinearRegression from sklearn.datasets import make_regression from sklearn.model_selectio…

NegativePrompt:利用心理学通过负面情绪刺激增强大型语言模型

【摘要】大型语言模型 (LLM) 已成为各种应用不可或缺的一部分&#xff0c;从传统的计算任务到高级人工智能 (AI) 应用。这种广泛的应用促使社会科学等各个学科对 LLM 进行了广泛的研究。值得注意的是&#xff0c;研究表明 LLM 具有情商&#xff0c;可以通过积极的情绪刺激进一步…

C++:深入理解多态

一、多态的概念 多态的概念&#xff1a;通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。 那究竟多态的实际价值体现在哪里呢&#xff1f;&#xff1f; 1、举个例子比如说购买高铁票这个行为&…

Spring Boot | SpringBoot 中 自定义 “用户授权管理“ : 自定义“用户访问控制“、自定义“用户登录控制“

目录: 一、SpringBoot 中 自定义 "用户授权管理" ( 总体内容介绍 ) :二、 自定义 "用户访问控制" ( 通过 "HttpSecurity类" 的 authorizeRequests( )方法来实现 "自定义用户访问控制" ) :1.基础项目文件准备2.实现 "自定义身份认…

4. 分布式链路追踪客户端工具包Starter设计

前言 本文将从零搭建分布式链路追踪客户端工具包的Starter&#xff0c;并将在后续文章中逐步丰富支持的场景。这里首先将搭建一个最基础的Starter&#xff0c;能提供的功能和1. 看完这篇文章我奶奶都懂Opentracing了一文中的示例demo类似。 相关版本依赖如下。 opentracing-…

【SQL】SQL常见面试题总结(4)

目录 1、空值处理1.1、统计有未完成状态的试卷的未完成数和未完成率1.2、0 级用户高难度试卷的平均用时和平均得分 2、高级条件语句2.1、筛选限定昵称成就值活跃日期的用户&#xff08;较难&#xff09;2.2、筛选昵称规则和试卷规则的作答记录&#xff08;较难&#xff09;2.3、…

SmartEDA助力电工基础实验:打造高效、智能的学习新体验

在电工基础实验的教学与学习中&#xff0c;传统的实验设备往往存在着操作复杂、数据处理繁琐等问题&#xff0c;给学生的学习带来了不小的挑战。然而&#xff0c;随着科技的不断发展&#xff0c;一种名为SmartEDA的智能电工实验辅助设备正逐渐走入课堂&#xff0c;以其高效、智…

Es6-对象新增了哪些扩展?

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Javascript篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Javascript篇专栏内容:Es6-对象新增了哪些扩展&#xff1f; 目录 一、参数 二、属性 函数的length属性 …

数据结构-栈(带图)

目录 栈的概念 画图理解栈 栈的实现 fun.h fun.c main.c 栈的概念 栈&#xff08;Stack&#xff09;是一种基本的数据结构&#xff0c;其特点是只允许在同一端进行插入和删除操作&#xff0c;这一端被称为栈顶。遵循后进先出&#xff08;Last In, First Out, LIFO&#…

【论文粗读|arXiv】GaSpCT: Gaussian Splatting for Novel CT Projection View Synthesis

Abstract 本文提出了一种新颖的视图合成和3D场景表示方法&#xff0c;用于为计算机断层扫描&#xff08;CT&#xff09;生成新的投影视图。 方法采用了Gaussian Splatting 框架&#xff0c;基于有限的2D图像投影集&#xff0c;无需运动结构&#xff08;SfM&#xff09;方法&am…

Swift 5.9 中 if 与 switch 语句简洁新语法让撸码更带劲

概览 在实际代码开发中&#xff0c;可能初学 Swift 语言的小伙伴们在撸码时最常用的得数 if 和 switch…case 条件选择语句了。不过在某些场景下它们显得略有那么一丢丢“矫揉造作”&#xff0c;还好从 Swift 5.9 开始苹果知趣的为其简化了语法且增强了它们的表现力。 在本篇…

Vitis HLS 学习笔记--优化本地存储器访问瓶颈

目录 1. 简介 2. 代码解析 2.1 原始代码 2.2 优化后 2.3 分析优化措施 3. 总结 1. 简介 在Vitis HLS中&#xff0c;实现II&#xff08;迭代间隔&#xff09; 1是提高循环执行效率的关键。II1意味着每个时钟周期都可以开始一个新的迭代&#xff0c;这是最理想的情况&…

HNCTF ——baby_python

H&NCTF 2024 官方WP (qq.com) OpCodes Pickle.jl (juliahub.com) nc之后 PS D:\ForCode\pythoncode\.idea> nc hnctf.yuanshen.life 33267 # Python 3.10.12 from pickle import loads main b"\x80\x04ctypes\nFunctionType\n(ctypes\nCodeType\n(I1\nI0\nI0\n…

【Vim】

一、什么是Vim&#xff1f; Vim 是一个历史悠久的文本编辑器&#xff0c;可以追溯到 qed。 Bram Moolenaar 于 1991 年发布初始版本。Vim 有着悠久的历史;它起源于 Vi 编辑器&#xff08;1976 年&#xff09;&#xff0c;至今仍在开发中。(Vim has a rich history; it origina…

css+html 爱心❤

效果 代码实现 html <div class"main"><div class"aixin"></div></div>css .main {transform: rotate(-45deg);}.aixin {height: 100px;width: 100px;background-color: red;margin: auto;margin-top: 200px;position: relativ…

MySQL第一次作业(基本操作)

目录 一、登陆数据库 二、创建数据库zoo 三、修改数据库zoo字符集为gbk 四、选择当前数据库为zoo 五、查看创建数据库zoo信息 六、删除数据库zoo 一、登陆数据库 指令&#xff1a; mysql -u root -p 二、创建数据库zoo 指令&#xff1a; create database zoo; 三、修改数…

基于PHP+MySQL组合开发的多用户自定义商城系统源码 附带源代码包以及搭建教程

系统概述 互联网技术的飞速发展&#xff0c;电子商务已成为人们日常生活中不可或缺的一部分。商城系统作为电子商务的核心&#xff0c;其开发技术和用户体验直接影响着电商平台的竞争力和用户满意度。本文旨在介绍一个基于PHPMySQL组合开发的多用户自定义商城系统&#xff0c;…