数据库---概念介绍及理解

大数据 建模理论 之 三范式(详解) 阅读详情
1、概念

1)、主键
数据库表中对储存数据对象予以唯一和完整标识的数据列或属性组合,一个数据列只能有一个主键,且主键的值不能缺失,即不能为空值(NULL).
2)、超键
在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以作为一个超键,多个属性也可以作为一个超键。超键包含候选键和主键。
3)、候选键
是最小的超键,即没有冗余的超键。
4)、外键
在一个表中存在的另一个表的主键称此表的外键。
在这里插入图片描述

table_student_info
id班级班级中的学号姓名性别年龄
001190101小明男22
002190102小红女21
003190201小李男24
004190301小王男23
005190401小明男22
table_student_score
idstudent_idscore
001001100
00200499
00300595

候选键:
{id}、{班级、班级中的学号}

主键:
{id}或者{班级、班级中的学号}其中之一

超键:
{id、姓名}、{id、姓名、性别}、{班级、班级中的学号、姓名}、{id、姓名、性别、年龄}

注意:这些键并不一定是某一列,可以是多列

外键
student_id是表table_student_info的主键,是表table_student_score的外键。

2、数据库范式

1)、第一范式(1NF)
在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
所谓第一范式(1NF)是指数据库表中的每一列都是不可分割的基本数项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一个范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。

不满足第一范式:

id地址
001海淀区西土城路10号,010-123456
002海淀区学院路101号,010-789462
003海淀区清华北路20号,010-455445

满足第一范式:

id地址电话
001海淀区西土城路10号010-123456
002海淀区学院路101号010-789462
003海淀区清华北路20号010-455445

2)、第二范式(2NF)

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键、主码。
第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是非主属性非部分依赖于主关键字。

满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情;

如下表:主键为订单编号,那么其他字段都要依赖于订单编号,但是产品名称并不依赖订单编号,所以这张表不满足第二范式,因为她既描述了产品信息也描述了订单信息。

订单编号订购日期产品编号产品名称
0012019-04-281001手机

拆分如下:

订单编号订购日期
0012019-04-28
产品编号产品名称
1001手机

3)、 第三范式(3NF)

满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。

必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键);
以下:有冗余字段

订单编号订购日期产品编号产品名称...
0012019-04-281001手机...
以下:满足第三范式
订单编号订购日期产品编号
0012019-04-281001
3、数据库五大约束

1)、primary KEY:设置主键约束
2)、UNIQUE:设置唯一性约束,不能有重复值
3)、DEFAULT 默认约束,height DOUBLE(3,2)DEFAULT 1.2 height不输入是默认为1.2
4)、NOT NULL:设置非空约束,该字段不能为空
5)、FOREIGN key:设置外键约束

4、事务

是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。

原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。

持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

事务的隔离级别

在说事务的隔离级别之前,首先要理解以下三个概念:

1、脏读
脏读发生在事务A读取了被另一个事务B修改,但是还未提交的数据。假如B回退,则事务A读取的数据是无效的数据。这跟不可重复读类似,但是第二个事务不需要执行提交。

事务1事务2
select * from users where id=1
update users set age=21 where id=1
select * from users where id=1
COMMIT;

2、不可重复读
在基于锁的并行控制方法中,如果在执行select时不添加读锁,就会发生不可重复读问题。

在多版本并行控制机制中,当一个遇到提交冲突的事务需要回退但却被释放时,会发生不可重复读问题。

事务1事务2
select * from users where id=1
update users set age=21 where id=1;COMMIT;
select * from users where id=1
COMMIT;

在上面这个例子中,事务2提交成功,他所做的修改已经可见。然而,事务1已经读取了一个其他的值。在序列化和可重复读的隔离界别中,数据管理系统会返回旧值,即在被事务2修改之前的值。在提交读和未提交读隔离级别下,可能会返回被更新的值,这就是“不可重复读”。

有两个策略可以防止这个问题的发生:
(1)推迟事务2的执行,直至事务1提交或者回退。这种策略在使用锁时应用。
(2)而在多版本并行控制中,事务2可以被先提交。而事务1,继续执行在旧版本的数据上。当事务1终于尝试提交时,数据库会检验它的结果是否和事务1、事务2顺序执行时一样。如果是,则事务1提交成功。如果不是,事务1会被回退。

3、幻读(虚读)
幻读发生在当两个完全相同的查询执行时,第二次查询所返回的结果集跟第一个查询不相同。
发生的情况:没有范围锁。

事务1事务2
select * from users where age between 10 and 30;
insert into users values(3,'raven',24);
select * from users where age between 10 and 30;

那么不可重复读和幻读由什么区别呢?

1、不可重复读
不可重复读的重点是修改:同样的条件,你读取过的数据,再次读取出来发现值不一样了。
例子:
在事务1中,Raven读取了自己的工资为1000,操作并没有完成
con1=getConnection();
select salary from employee empId=“Raven”;
在事务2中,这时财务人员修改了Raven的工资为2000,并提交了事务。
con2=getConnection();
updata employee set salary=2000;
在事务1中,Raven再次读取自己的工资时,工资边为了2000
select salary from employee empId=“Raven”;
在一个事务中前后两次读取的结果并不一致,导致了不可重复读。

2、幻读

幻读的重点在于新增或者删除(数据条数变化)。同样的条件,第1次和第2次读出来的记录数不一样。

例子:
目前工资为1000的员工有10人。
事务1,读取所有工资为1000的员工。
con1=getConnection();
select * from employee where salary=1000;
共读取出10条记录。
这时另一个事务想employee表插入了一个员工记录,工资也为1000
con2=getConnection();
Insert into employee(emPid,salary) values(“Raven”,1000);
con2.commit();
事务1再次读取所有工资为1000的员工。
select * from employee where salary =1000;
工读取到了11条记录,这样就产生了幻读。

接下来说隔离级别:

1、Read UnCommitted(读未提交)
最低的隔离级别。一个事务可以读取另一个事务并未提交的更新结果
2、Read Committed(读提交)
大部分数据采用默认隔离级别。一个事务的更新操作结果只有在该事务提交之后,另一个事务才可以读取到同一笔数据更新后的结果。
3、Repeatable Read(重复读)
mysql的默认级别。整个事务过程中。对同一笔数据的读取结果是相同的,不管其他事务是否在堆共享数据进行更新,也不管更新提交与否。
4、Serializable(序列化)
最高隔离级别。所有事务操作依次顺序执行。注意这个导致并发度下降,性能最差。通常会使用其他并发级别加上相应的并发锁机制来取代他。

Yes:可能出现 No:不会出现
脏读不可重复读幻读
Read Uncommitted(读未提交)YesYesYes
Read committed(读提交)NoYesYes
Repeatable read(可重复读)NoNoYes
Serializable(序列化或串行化)NoNoNo
参考链接:

https://www.cnblogs.com/balfish/p/8298296.html

https://www.cnblogs.com/waj6511988/p/7027127.html

https://www.cnblogs.com/frankielf0921/p/5930743.html

数据仓库的个人理解         定义1:数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合。        ◆面向主题:操作型数据库的数据组织面向事务处理任务,各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织的。        ◆集成的:数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证 阅读详情

相关推荐

【邻接表存图模板】vector邻接表、数组邻接表、链式前向星

一、目录 一、目录 二、前言 三、邻接表“详解” (一)边的信息 (二)几种邻接表的实现方法“详解” 1.数组邻接表 代码 2.vector邻接表 代码 vector邻接表还有一种魔性写法: 3.链式前向星 代码 四、总结 二、前言 本来之前自己太弱了,一直只会用邻接矩阵,后来发现邻接表才是主流... 参考&特别鸣谢: https://www.cnblog...

十里寒塘路♣烟花一半醒 3113

数仓-数仓建模方法介绍

1. 关系模式范式 众所周知,RDBMS设计时,需要遵照一定的规范要求,目的在于降低数据的冗余性和数据的一致性,目前业界范式有: 1NF 域都应该是原子性(即不可分割的)的,即数据库表的每一列都是不可分割的原子数据项。 2NF 在1NF的基础上,实体的属性完全依赖于主关键字,不能存在仅依赖主关键字一部分的属性。 上述表格中,如果想表达某个学生分数的时候,是通过(学生ID,所修课程)来作为主键,唯一确定分数;而一个学生只能属于一个系,可以理解为所属系是依赖于学生ID的(即给出一个学生ID,就可以给出所属系

认真学代码的shell 1220

别再为镜面物体检测发愁了!手把手教你用PMD相位偏折术增强2.5D形状图细节(附Python代码)

本文详细解析了PMD相位偏折术在工业视觉中镜面物体检测的应用,通过2.5D成像方案增强形状图细节。文章提供了Python代码示例,介绍了一种计算高效的局部特征增强算法,帮助解决产线环境中的噪声问题,提升缺陷识别准确率。

weixin_29299807的博客 346

数据库系统核心:从理论到实践的数据管理基石

摘要:本文系统阐述了数据库系统的核心理论和技术,主要包括:1)关系模型的基本概念与优势;2)数据库设计规范(1NF-3NF)及其应用;3)SQL语言的分类与功能;4)事务管理的ACID特性及其实现机制。这些内容构成了数据库系统的完整知识体系,涵盖了从理论基础到实践应用的关键环节,为构建高效、可靠的数据库系统提供了理论指导和技术支持。

IT913913的博客 1532

Hyper-V虚拟机 安装 银河麒麟V10桌面版

如何在windows 11 Hyper-V 虚拟机中 安装 银河麒麟V10桌面版。

m0_46756112的博客 3418

DELL Precision T7920加装显卡遇到的坑

文章目录DELL Precision T7920加装显卡服务器原有配置介绍选购过程确认型号确认PCIE x16插槽确认电源功率和电源线安装过程电源模组线不够多单装一个3090显卡尺寸问题加装上1080Ti非常重要!官方文档 DELL Precision T7920加装显卡 实验室由于显卡计算能力不够,以及显卡显存不够,请老师花了大价钱购入了两张GeForce 3090显卡。老师赛高!记录一下这次加装显卡过程中学到的一些知识。 服务器原有配置介绍 服务器原有一张1080Ti显卡,一个16核Xeon CPU。

weixin_45520982的博客 1万+

关系型数据库三范式

1、概念     关系模型满足的确定约束条件称为范式。     根据满足约束条件的级别不同,范式由低到高分为:1NF(第一范式)、2NF(第二范式)、3NF(第三范式)、BNF(BC范式)、4NF(第四范式),不同级别的范式性质不同。 2、第一范式(1NF)     1NF是最低的规范化要求。如果关系R中所有属性的值域都是简单域,其元素(即属性)不可再分,是属性项而不是属性组,那么关系模型...

酷道博客 2164

国家大地2000坐标系投影坐标转高德地图经纬度坐标-【高斯投影坐标】

国家大地2000坐标系投影坐标转换成高德经纬度坐标显示画图。

devil_zhuzhu的博客 1万+

事务的隔离性

事务的四大特性: ⑴ 原子性(Atomicity)   原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 ⑵ 一致性(Consistency)   一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。 拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,

m0_47621042的博客 4184

硬件工程师笔记——三极管Multisim电路仿真实验汇总

NPN型三极管:由N型半导体、P型半导体和N型半导体组成,即NPN结构。 PNP型三极管:由P型半导体、N型半导体和P型半导体组成,即PNP结构。 三极管的工作原理基于电流的控制和放大,其核心是基区对电流的控制作用。 将三极管等效为两个串联的二极管进行等效分析

XU157303764的博客 2635

YOLOv8改进,YOLOv8添加可变性卷积DCNv2

DCNv2对原始的DCNv1进行了改进,可变形卷积网络的卓越性能源于其适应对象几何变化的能力。通过对其自适应行为的检查,虽然对其神经特征的空间支持比常规的ConvNets更接近于对象结构,但这种支持可能远远超出感兴趣区域,导致特征受到不相关图像内容的影响。为了解决这个问题,我们提出了一种可变形卷积网的重新表述,通过提高建模能力和更强的训练,提高了其专注于相关图像区域的能力。通过更全面地集成网络中的可变形卷积,并引入扩展变形建模范围的调制机制,增强了建模能力。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3606

浅析数仓分层:DB+ODS+DW+DM

本期将从结构层面了解数据仓库分层的几个名词和简单理解。 文章目录1 理想的数据分层总体结构2 DB层:关系型数据库和非关系型数据库2.1 关系型数据库RDB2.2 非关系型数据库NoSQL3 ODS层:操作数据存储层3.1 ODS产生背景3.2 ODS在企业数据架构中担任的角色3.3 ODS层的特征3.4 ODS层的功能4 DW层:数据仓库 1 理想的数据分层总体结构 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CFfRleTt-1607275403838)(C:%5C.

q1042960848的博客 3349

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

数据仓库、维度、度量等概念详细介绍

本章目录前言一、数据仓库简介二、数据仓库特点1、面向主题2、不可更新3、随时间不断变化三、数据仓库和数据库的区别四、数据仓库常用系统架构1、为什么要分层?五、元数据六、数据仓库建模1、什么是数据模型?2、数据模型架构3、维度和指标(度量)4、事实表和维度表七、数据模型建立过程八、建模方法1、范式建模法2、维度建模法∗\color{red}{*}∗3、实体建模法九、星型模型架构 VS 雪花模型架构 前言   传统的数据库中,存放的数据都是一些定制性数据较多,表是二维的,一张表可以有很多字段,字段一字排开,对应

先谢郭嘉的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

mysql,mysqld,数据库的概念理解,为什么要有数据库,主流数据库,mysql架构介绍,存储引擎介绍,sql语句的分类,查看存储引擎(\G)

mysql,mysqld,数据库的概念理解,为什么要有数据库,主流数据库,mysql架构介绍,存储引擎介绍,sql语句的分类,查看存储引擎(\G)

m0_74206992的博客 821

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

数据仓库是什么?和数据库有何区别?

在具体学习数据仓库之前先看一下数据中心的整体构架以及数据流向。 DB 是现有的数据来源,可以为mysql、SQLserver、文件日志等,为数据仓库提供数据来源的一般存在于现有的业务系统之中。 ETL 是 Extract-Transform-Load 的缩写,用来描述将数据从来源迁移到目标的几个过程: Extract,数据抽取,也就是把数据从数据源读出来。 Transform,数据转换,把原始数据转换成期望的格式和维度。如果用在数据仓库的场景下,Transform也包含数据清洗,清洗掉噪音数据

heyedelweiss 3921

深夜凌晨女朋友问什么是数据仓库,我的回答让她惊讶,然后发现。。。

事情是这样的 晚上,正在聚精会神写代码 突然,收到女朋友给我发来的消息 不懂代码的她又向提出这么专业性名词,我当场惊呆了,于是决定写一篇详细的数据仓库介绍,然后发现我写完了,她就睡着了。。。 目录 历史文章 前言 数据仓库的介绍 一、数据仓库的基本概念 ​​​​​​​二、数据仓库的主要特征 1.主题性 2.集成性 3.稳定性 4.时变性 三、数据仓库与数据库区别 1、数据库 ​​​​​​​2、数据仓库 ​​​​​​​3、两者区别 4、数据仓库分层架构 ​​.

Lansonli(蓝深李)的博客 3558

数据库-第一章 数据库概论

基础术语 补充 数据仓库的系统架构 Data Sources ==> Data Storage ==> OLAP Engine ==> Front-End Tools; Operational DBs [可操作的DBs] Extract Transfrom Load Refresh [提炼 转化 装载 更新] Metadata[元数据] OLAP联机分析处理 Analys...

qwertylffFrieda的博客 441

数据仓库

数据仓库 1 . 数据仓库的基本概念 数据仓库,英文名称为 Data Warehouse,可简写为 DW 或 DWH。数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(DecisionSupport)。它出于分析性报告和决策支持目的而创建。 数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而...

superWe的博客 2153

4 万字全面掌握数据库、数据仓库、数据集市、数据湖、数据中台

4 万字全面掌握数据库、数据仓库、数据集市、数据湖、数据中台 本文对这些名词术语及内涵进行系统的解析,便于读者对数据平台相关的概念有全面的认识。 (给程序员的那些事加星标) 来源:修鹏李 如今,随着诸如互联网以及物联网等技术的不断发展,越来越多的数据被生产出来-据统计,每天大约有超过2.5亿亿字节的各种各样数据产生。这些数据需要被存储起来并且能够被方便的分析和利用。 随着大数据技术的不断更新和迭代,数据管理工具得到了飞速的发展,相关概念如雨后春笋一般应运而生,如从最初决策支持系统(DSS)到商业智能

tSRXH的博客 1359

Oracle笔记五:DATABASE LINK

1、DATABASE LINK介绍 dblink是一个单向的数据库连接,通过设置可以访问其他数据库中的数据跟使用本地数据库中数据一样的感觉,但注意是单向的dblink。例如:A建连B的dblink,A可以访问B的表,插入数据到B的表等,但反过来B不可以。 Oracle DBLINK 创建分为private 和 public dblink,默认创建的为private ; private dblink 只有创建的schema才能删除,sys也删除不了;public dblink 任意schema都可以删除,只要

Mavey__的博客 1438

数据仓库(DW)部分

数据仓库的体系结构是一个复杂的系统,通过有效的数据集成、清洗、存储和分析,支持企业从历史数据中提取有价值的信息,并帮助决策者做出基于数据的决策。每个组成部分在整个体系结构中都有其独特的角色和功能,协同工作以实现数据驱动的业务目标。

ysjy13的博客 942

关于Oracle中Database、instance、role、schemas、user、object概念

使用Oracle,经常会听到这些词,对于这几个具体是什么,从网上看到一个解释较通俗易懂的说法,本人稍作修改: 1、DATABASE,对oracle而言,是指物理上的数据库,一般你安装了一个oracle的数据库软件后,就是一个database。 2、instance,在同一个数据库上,可以建立多个实例,这些实例互相不干扰,每个实例中可以有独立的表空间、用户、表、过程等各种数据库对象。也就是说...

雨夜聆风 1487

数据仓库简述

数据仓库 说到数据仓库,在一年前,我的答案是非常模糊的,在两年前,我根本不知道数据仓库的存在。相信大多数的人都是经常接触数据库,上大学的时候学过Oracle,MySQL这两个关系型数据库,操作着各种增删改查,现在人们对这种类型的数据库都称作传统数据库。在之后从事大数据行业了,数据仓库这几个字也就总出现在各种博客中,各种技术方案中。现在正在...

weixin_34217773的博客 355
上一篇: 网络I/O模型
下一篇: LeetCode
Raven_csdn
博客等级 码龄8年 26粉丝 69原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值