数据库--数据库设计

目录:
1.数据库设计和数据模型
2.概念结构设计:E-R模型
3.逻辑结构设计:从E-R图到关系设计
4.数据库规范化设计理论
5.数据库规范化设计实现
1.数据库设计和数据模型
数据库设计会影响数据库自身和上层应用的性能。
一个好的数据库设计可以提高存储空间的利用率和数据存取的效率,可以更好地支持基于数据库的应用系统。
数据模型则表示数据库设计的描述,描述了数据之间的联系。

1.1 数据库设计的各个阶段
概念阶段--逻辑设计阶段--物理设计阶段
概念数据模型:(1)用于描述业务领域的数据对象及其关系。(2)概念数据模型主要是依据用户对现实业务的理解来对数据对象进行建模,主要用于数据库的概念设计。
逻辑数据模型:(1)用于数据库管理系统的逻辑设计。(2)常见的有关系模型、层次模型和网状模型。
物理数据模型:(1)考虑数据对象如何在数据库管理系统中物理实现。(2)数据表、索引设计。
1.2 数据库设计模型转换
数据模型元素对应关系

关系数据库设计的一个核心步骤就是将E-R模型转化为关系模型。

2.概念结构设计:E-R模型
E-R模型:实体-联系模型(entity-relationship model)
2.1 E-R模型的基本元素
实体和实体集、属性、联系
实体是对现实世界中事务数据概念的某种抽象。多个具有相同性质的同类实体构成的集合称为实体集。
实体集都可以被一组特征来描述,这些用来描述实体集的数据特征被称为属性。
标识符指的是可以唯一标识不同实体集的某一属性。
复合标识符则表示当必须选取多个属性的组合来作为实体的唯一标识。
联系是不同实体直接的关联。
2.2 E-R图
实体集用矩形表示,属性用椭圆形表示(标识符则用下划线标出),联系用菱形表示。

2.2.1 E-R联系类型
一元联系、二元联系和三元联系
一元联系:实体集内部之间的联系,即实体自己域自己之间的联系。
二元联系:两个实体集之间的联系,有一对一联系(1:1),一对多联系(1:n),多对多联系(m:n)。
三元联系:三个实体集之间的联系。
三元联系R(A,B,C)分解为二元联系的方式:
(1)用新实体集E替代联系R。如果联系R有属性,则将这些属性赋给新建的实体集E;否则,为E建立一个特殊的标识性属性。
(2)建立三个新的联系Ra,Rb,Rc。其中Ra表示实体集E和A之间的联系...。
(3)针对联系R中的每个联系(ai,bi,ci),在E中创建一个新的实体ei,ei代表(ai,bi,ci)。如何在三个新联系集中分别建立新的联系:在Ra中插入(ei,a)...。
3.逻辑结构设计:从E-R图到关系设计
E-R图转换为关系

3.1 E-R联系中二元联系的转换
3.1.1 一对一联系转换
方法一:在两个实体集转换为两个关系模式的基础上,在其中任意一个关系模式的属性中加入列一个关系模型的键和该联系自有的属性。
方法二:在两个实体集转换为两个关系模式的基础上,添加一个新的关系模式,该关系模式的属性包含该联系相关的各实体集的标识符以及该联系自有的属性。
3.1.2 一对多联系转换
方法一:在两个实体集转换为两个关系模式的基础上,在n端实体类型转换成的关系模式中加入1段实体集的标识符和该联系自有的属性。
方法二:在两个实体集转换为两个关系模式的基础上,为1:n联系添加一个新关系模式,该关系模式的属性是所有与该联系相关的各实体集的标识符以及该联系自有的属性,该关系模式的键是n段实体集的标识符。
3.1.3 对多对联系转换
对该联系添加一个新的关系模式,这个新的关系模式的属性是两端实体类型的标识符以及该联系自有的属性,其键为两个实体集的标识符的组合。
4.数据库规范化设计理论
4.1 规范化设计的重要性
数据库规范化设计是指在数据库中减少数据冗余和定义一个规范的表间结构,以更好地实现数据完整性和一致性。
优点:(1)降低数据存储和维护数据一致性的成本。(2)便于设计合理的关系表间的依赖和约束关系。(3)便于设计合理的数据库结构。
4.2 函数依赖
为了解决关系模式设计的规范化问题,引入了函数依赖。
函数依赖反映了一个关系中属性或者属性组之间相互依存,相互制约的关系。
函数依赖是关系中属性之间在语义上的关联特性。
4.2.1 定义

一个函数依赖要成立,不但要求关系R中当前的值都能满足函数依赖条件,而且还要求关系中的任一可能取值都满足函数依赖的条件。
4.2.2 类型
平凡函数依赖、非平凡函数依赖、完全函数依赖、部分函数依赖、传递函数依赖、多值依赖、关系的键
平凡和非平凡函数依赖

完全和部分函数依赖
![]()
传递函数依赖

多值依赖


连接依赖

4.2.3 关系的键
使用函数依赖来重新定义关系的键。
(1)如果一个属性或者多个属性的集合满足以下性质,则认为K是关系R(U)的候选键。
其他属性函数依赖于该属性或属性集。
其他属性都不函数依赖该属性或属性集的任一真子集。
(2)上述两个规则就是U完全函数依赖于K,即![]()
(3)如果一个关系中有多个候选键,则选择其最重要的一个候选键作为关系R(U)的主键/
4.3 规范化设计和范式
规范化设计:在关系模式中存在函数依赖时就有可能存在数据冗余,进而导致数据操作异常。因此,关系表的规范化设计就是要尽可能地减少关系表中列或者列组之间的依赖关系。
范式:定义1,关系表的规范程度状态为范式(normal form, NF);定义2,范式时符合某一种级别的关系模式的集合。(不同的规范化要求可以设计出冗余程度不同的数据库)
常见的范式:第一范式 1NF,第二范式2NF,第三范式 3NF,巴斯-科德范式 BCNF,第四范式 4NF,第五范式5NF
4.3.1 范式和规范化
一个低级范式的模式关系,通过模式分解可以转换为若干个高级范式的关系模式的集合,该过程就叫做规范化。

4.3.2 第一范式
1NF是指关系R的每一属性都是不可再分的基本数据项,同一属性中不能有多个值,即关系表中的某个属性不能有多个值或者不能有重复的属性。
4.3.3 第二范式
2NF是指关系R首先要满足第一范式,并且每一个非主属性都完全函数依赖于任何一个候选键。
4.3.4 第三范式
3NF是指在关系R满足第一范式,并且不存在非主属性对候选键的传递函数依赖
4.3.5 巴斯-科德范式
BCNF是指关系R在满足第一范式的基础上,不存在任何属性对候选键的传递函数依赖。
BCNF与3NF的联系:
(1)如果关系模式R满足BCNF,那么关系模式R必定满足3NF
(2)如果关系模式R满足3NF,并且只有一个候选键,那么R必定满足BCNF
BCNF的关系模式具备性质:
所有非主属性都完全函数依赖于每个候选键
所有主属性都完全函数依赖于每个不包含它的候选键
没有任何属性完全函数依赖于非候选键的任何一组属性
4.3.6 第四范式
4NF是指关系R在满足BCNF的基础上,消除多值依赖
4.4 数据依赖的公理系统
Armstrong公理系统、闭包及其计算、函数依赖集的等价和最小函数依赖集
4.4.1 Armstrong公理系统
定义1: 逻辑蕴涵:对于满足一组函数依赖F的关系模式R<U,F>,其中任何一个关系r,如果函数依赖X→Y都成立,则称F逻辑蕴涵X→Y。
定义2:Armstrong公理系统:是R中所有属性的集合,F是U上的一组函数依赖,有关系模式R<U,F>,对于R<U,F>有以下推理规则:


引理1:成立的充分必要条件是
成立
4.4.2 闭包及其计算
定义1:函数依赖集的闭包:在关系模式R<U,F>中,为F所逻辑蕴涵的函数依赖的全体叫作F的闭包,记为。
定义2:属性依赖集的闭包:是关系模式R中所有属性的集合,F是U上的一组函数依赖,
![]()
可由F根据Armstrong公理系统退出,则
称为属性集X关于函数依赖集F的闭包。

求解关系的候选键


4.5 函数依赖集的等价

4.6 最小函数依赖集



5 数据库规范化设计实现--关系模式的分解
5.1 关系模式分解的定义

![]()
通常可以从以下两个角度考虑:
(1)数据等价:分解具有无损连接性
(2)语义等价:分解要保持函数依赖
5.2 分解的无损连接性

注:虽然无损分解保证不丢失信息,但是无损分解不一定能解决插入异常,删除异常、修改复杂和数据冗余等问题。
保持分解无损依赖的定理

5.3 分解的函数依赖保持

5.4 模式分解算法
(1)如果要求分解保持函数依赖,分解模式可以达到3NF,但不一定满足BCNF
(2)如果要求分解既要保持函数依赖,又具有无损连接性,那么模式分解可以达到3NF,但不一定满足BCNF
(3)如果要求分解具有无损连接性,则模式分解一定可以达到4NF
相关文章:
数据库--数据库设计
目录: 1.数据库设计和数据模型 2.概念结构设计:E-R模型 3.逻辑结构设计:从E-R图到关系设计 4.数据库规范化设计理论 5.数据库规范化设计实现 1.数据库设计和数据模型 数据库设计会影响数据库自身和上层应用的性能。 一个好的数据库设计可以提…...
[Mac]利用hexo-theme-fluid美化个人博客
接上文,使用Fluid美化个人博客 文章目录 一、安装hexo-theme-fluid安装依赖指定主题创建「关于页」效果展示 二、修改个性化配置1. 修改网站设置2.修改文章路径显示3.体验分类和标签4.左上角博客名称修改5.修改背景图片6.修改关于界面 欢迎大家参观 一、安装hexo-theme-fluid 参…...
黑盒测试的场景法(能对项目业务进行设计测试点)
定义: 通过运用场景来对系统的功能点或业务流程的描述,设计用例遍历场景,验证软件系统功能的正确性从而提高测试效果的一种方法。 场景法一般包含基本流和备用流。 基本流:软件功能的正确流程,通常一个业务只存在一个基本流且基本流有一个…...
通过Anaconda Prompt激活某个虚拟环境并安装第三方库
打开 Anaconda Prompt 在Windows中,可以通过开始菜单搜索 Anaconda Prompt 来打开。(红色箭头指向的地方。) 激活虚拟环境 输入以下命令来激活您的虚拟环境(假设虚拟环境名称为 myenv): conda activate…...
SerDes(Serializer/Deserializer)详解
一、SerDes的定义与核心作用 SerDes(串行器/解串器) 是一种将 并行数据转换为高速串行数据(发送端)以及 将串行数据恢复为并行数据(接收端)的集成电路技术,用于解决高速数据传输中的时序、噪声…...
oneDNN、oneMKL 和 oneTBB 介绍及使用
1. oneDNN(Intel oneAPI Deep Neural Network Library) 简介 oneDNN 是 Intel 开源的深度学习神经网络加速库,专为 CPU 和 GPU 上的深度学习推理和训练优化。它提供高效的底层算子(如卷积、池化、矩阵乘法等)ÿ…...
目标检测的训练策略
在目标检测竞赛中,训练策略的优化是提高模型性能的关键。常用的训练策略包括数据预处理、数据增强、超参数调节、损失函数设计、正负样本采样、模型初始化和训练技巧等。以下是一些常见的训练策略: 1. 数据预处理与数据增强 数据归一化:对输…...
深入理解 YUV 颜色空间:从原理到 Android 视频渲染
在视频处理和图像渲染领域,YUV 颜色空间被广泛用于压缩和传输视频数据。然而,在实际开发过程中,很多开发者会遇到 YUV 颜色偏色 的问题,例如 画面整体偏绿。这通常与 U、V 分量的取值有关。那么,YUV 颜色是如何转换为 …...
unidbg读写跟踪还原X-Gorgon
使用版本 33.2.5 mssdk提供给 libsscronet.so 网络库的接口地址是 0x88ee0 参数签名函数调用序列 0x88ee0 -> 0x87e48 -> 0x86d60 -> 0x6B14c 0x6B14c -> 0x6Db40 -> 0x73908-> 0x7d3f0 (X-Argus) ->…...
全长约8.3公里!宁波象山港跨海大桥南中塔柱云端合龙
快科技3月31日消息,据报道,由中国交建二航局承建的宁波象山港跨海大桥顺利完成南中塔柱合龙施工,标志着这一重大交通工程取得阶段性突破。 这座连接宁波鄞州区与象山县的跨海通道全长8.3公里,其标志性的南主塔采用创新"钻石…...
使用 2 端口探头测量 40 uOhm(2000 安培)PDN 的挑战 – 需要多少 CMRR?
部分 1 / 3 本文是 3 部分系列的第一部分: 第 2 部分 - 测量结果! 第 3 部分 - 使用另一台 VNA 的测量结果 介绍 我们大多数人都知道 2 端口测量中的接地回路。我们大多数人也都知道,我们需要引入接地回路隔离器来纠正错误。如果没有&…...
蓝桥杯——统计子矩阵
解法:二维前缀和双指针 代码: #include <iostream> using namespace std; typedef long long ll; ll prefix[505][505], a[250010]; int main() {ll n, m, k, ans 0; cin >> n >> m >> k;for(int i 1; i < n; i)for(int …...
snmp/mib采用子代理模式,编码,部署(二)---多实例处理
snmp/mib采用子代理模式,编码,部署(二)---多实例处理 0.本文针对net-snmp中mib表做处理,即单张表对应后台多个实例. 1.源代码生成 拷贝GSC-MIB-0805.txt到/usr/share/snmp/mibs(具体看自己安装目录,如果找不到,下面解…...
吾爱破解安卓逆向学习笔记(4p)
学习目标,了解安卓四大组件,activity生命周期,同时了解去除部分广告和更新提示。 广告类型 1.启动页广告 2.更新广告 3.横幅广告 安卓四大组件 组件描述Activity(活动)在应用中的一个Activity可以用来表示一个界面,意思可以…...
使用Redis实现轻量级消息队列
使用消息中间件如RabbitMQ或kafka虽然好,但也给服务器带来很大的内存开销,当系统的业务量,并发量不高时,考虑到服务器和维护成本,可考虑使用Redis实现一个轻量级的消息队列,实现事件监听的效果。下面介绍下…...
stm32第十天外部中断和NVIC讲解
一:外部中断基础知识 1.STM32外部中断框架 中断的概念:在主程序运行过程中,出现了特点的中断触发条件,使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行 1&…...
26考研——线性表_ 线性表的链式表示_单链表(2)
408答疑 文章目录 三、 线性表的链式表示单链表概念单链表的结构头结点 单链表上基本操作的实现单链表的初始化带头结点和不带头结点的初始化操作注意 求表长操作按序号查找结点按值查找表结点插入结点操作扩展:对某一结点进行前插操作 删除结点操作扩展:…...
MATLAB 控制系统设计与仿真 - 31
二次型最优控制 考虑到系统如果以状态空间方程的形式给出,其性能指标为: 其中F,Q,R是有设计者事先选定。线性二次最优控制问题简称LQ(Linear Quadractic)问题,就是寻找一个控制,使得系统沿着由指定初态出发的相应轨迹,其性能指标J取得最小值。 LQ问题分…...
蓝桥杯15届JAVA_A组
将所有1x1转化为2x2 即1x1的方块➗4 然后计算平方数 记得-1 2 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter;public class Main{static BufferedReader in new BufferedReader(new In…...
deepseek v3 0324实现工作流编辑器
HTML 工作流编辑器 以下是一个简单的工作流编辑器的HTML实现,包含基本的拖拽节点、连接线和可视化编辑功能: <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewp…...
【NLP 面经 3】
目录 一、Transformer与RNN对比 多头自注意力机制工作原理 相比传统 RNN 在处理长序列文本的优势 应对过拟合的改进方面 二、文本分类任务高维稀疏文本效果不佳 特征工程方面 核函数选择方面 模型参数调整方面 三、NER中,RNN模型效果不佳 模型架构方面 数据处理方面…...
20250331-智谱-沉思
背景 收到GLM沉思的消息,立马试用下。感觉真的太及时了。 (背景:为了客户的需求“AI辅助写作”实验了2款开源workflow,2款在线workflow,好几款多智能体框架后,心中无底之际。。。) 1. GLM(开启…...
Java EE(17)——网络原理——IP数据报结构IP协议解析(简述)
一.IP数据报结构 (1)版本:指明协议的版本,IPv4就是4,IPv6就是6 (2)首部长度:单位是4字节,表示IP报头的长度范围是20~60字节 (3)8位区分服务:实际上只有4位TOS有效,分别是最小延时,最…...
26考研|高等代数:线性空间
线性空间这一章在整个高等代数学习过程中是非常精华的部分,在学习这一章的过程中会有部分的概念较为抽象,一定要抓紧抓牢对于概念的理解,反复阅读与感受,同时也可以根据已知的解析几何中介绍的二维空间或者三维空间进行类推比较&a…...
基础算法篇(3)(蓝桥杯常考点)-图论
前言 这期是蓝桥杯常考点的最后一章了,其中的dijkstra算法更是蓝桥杯中的高频考点 图的基本相关概念 有向图和无向图 自环和重边 稠密图和稀疏图 对于不带权的图,一条路径的路径长度是指该路径上各边权值的总和 对于带权的图,一条路径长度时…...
git错误:fatal: detected dubious ownership in repository at xxxxxx
1、报错说明 这个错误通常是由于Git仓库目录的拥有者或权限问题引起的。Git检测到仓库目录的所有权可能存在不一致或不安全的情况。 通常导致此报错的可能原因: (1)文件或目录的拥有者不一致: 仓库目录中的某些文件或子目录可能…...
【Linux】进程间通信(IPC)-- 无名管道、命名管道
IPC机制 实现进程间通信 在多个进程间传输数据或共享信息的机制。 数据交换,共享资源,进程同步,消息传递。 IPC实现原理:通信进程能够访问相同的内存区域。 方法: 管道:无名管道pipe、命名管道FIFO S…...
每日一题-力扣-2278. 字母在字符串中的百分比 0331
字母在字符串中的百分比求解方案 | 力扣 2278 题解 问题描述 给定一个字符串 s 和一个字母 letter,我们需要计算 letter 在 s 中出现的百分比,并将结果向下取整。例如,如果字符串是 "foobar",字母是 "o"&…...
【分布式】深入剖析 Sentinel 限流:原理、实现
在当今分布式系统盛行的时代,流量的剧增给系统稳定性带来了巨大挑战。Sentinel 作为一款强大的流量控制组件,在保障系统平稳运行方面发挥着关键作用。本文将深入探讨 Sentinel 限流的原理、实现方案以及其优缺点,助力开发者更好地运用这一工具…...
[leetcode]2492. 两个城市间路径的最小分数(并查集 排序后建边)
题目链接 题意 给定一个 n n n个点 m m m条边的无向图 每条边有边权 求1-n的路径中最小的边权是多少 每条路可以重复走 思路 把边按边权降序排序 用并查集维护连通性 遍历每条边 每次合并边的起点和终点 如果1和n联通 并且这条边在1和n的这个连通块中 就对ans取min Code…...
