数据库系统原理与设计复习笔记

软考中级软件设计师:高频考点浓缩与高效备考策略 软件设计师作为软考中级的热门科目,覆盖软件工程、数据结构、数据库、面向对象等广泛知识域,官方教材厚重但真题考点却高度集中。面对海量资料,考生常陷入“看的多、记得少”的低效循环。理解考试原理与命题规律,是提升备考效率的关键。该考试强调对核心概念、算法流程和设计原则的灵活应用,高频考点具有明显重复性。通过梳理知识地图、专项突破高频模块、按题型分层训练,并借助历年真题反向补全知识漏洞,可将庞杂内容收敛为几十页浓缩笔记。这套方法既适用于软件设计师科目,也适合系统集成、网络工程师等同类认证备考场景,帮助考生在有限时间 阅读详情

数据库系统原理与设计复习笔记

由于临近考试,特做此篇笔记以便复习。读者大大请根据自己的学习内容来适当观阅。部分内容较为粗略,望原谅~

第一章 数据库系统概论

1.数据库技术的产生与发展

  • 人工管理阶段
  • 文件系统阶段
  • 数据库管理系统阶段
1.1 人工管理阶段

20世纪50年代中期以前的这段时间,计算机还很简陋,尚没有完整的操作系统,主要应用于科学计算。

数据是面向应用程序的,一个数据集只能对应于一个程序。

如上所示,它表示的是应用程序单对单的对数据进行处理的方式。

1.2 文件系统阶段

20世纪50年代后期到60年代中期的时间内,计算机除了应用于科学计算外,还有应用于数据管理。

如上图所示,对于一个特定的应用,数据被集中存放在多个数据文件中。针对该文件组开发特定的应用程序。

利用**“按文件名访问,按记录进行存取”**的管理技术,对文件进行删、改、查等操作

文件系统的特点:

  • 文件系统实现了文件内的结构性。
  • 整体上属于无结构的

文件系统的弊端:

  1. 数据共享性差,数据冗余和不一致。
  2. 数据独立性差
  3. 数据孤立,数据获取困难
  4. 完整性问题
  5. 原子性问题
  6. 并发访问异常
  7. 安全性问题
1.3 数据库管理系统阶段
  • 数据库管理系统是由一个相互关联的数据的集合和一组用于访问、管理和控制这些数据的程序组成。
  • DBMS是位于用户与操作系统之间的一层数据管理软件。
  • DBMS和操作系统一样,都是计算机的基础软件。

设计数据库管理系统的目的在于有效地管理大量的数据,既涉及到数据存储结构的定义,又涉及到数据操作机制的提供。

数据库管理系统的基本特征(特点):

  • 数据结构化
  • 共享度高,冗余度低,易扩充
  • 数据独立性高

2 数据模型的基本概念

数据库结构的基础是数据模型。

其中,数据模型是一个描述以下三方面的数学形式体系。

  • 数据结构:数据结构是刻画数据、数据语义以及数据与数据之间的联系
  • 数据操作:指的是对数据库中各种对象的实例允许执行的操作集合,包括操作及有关的操作规则
  • 数据约束:是对数据结构和数据操作的一致性、完整性约束,也成为数据完整性约束

其中稍微以其中的模型——层次模型,来对数据模型的基本概念进行阅览

3 数据库的三级模式

根据数抽象的个不同的级别,DBMS也应该提供观察数据库的3个不同的角度。这就是数据库的三级模式结构

3.1 模式

模式被称为逻辑模式,它对应于逻辑层数据抽象

模式是数据库中全体收数据的逻辑结构和特征的描述,是所有用户的公共数据视图。

模式的一个具体值成为模式的一个实例。

3.2 外模式

外模式也被称为子模式或者用户模式,它对应于视图层数据抽象。

外模式是数据库用户能够看到和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一具体应用有关的数据的逻辑表述。

外模式是保证数据库安全性的一个保障。因为每个用户只能看见和访问其所对应的外模式中的数据,其余的数据库内容均不可见。

3.3 内模式

内模式也被称为存储模式,它对应物理层数据抽象。

内模式是数据的物理结构和存储模式的描述,是数据在数据库内部的表示方式。

如上图所示,模式是对于公共而言的公共视图;外模式对应其应用,使得用户在进行应用A访问的同时,限制了其他应用的访问;而内模式对应存储结构,描述了数据库的存储结构等内部的表示方式。

4. 两层映像功能与数据独立性

数据库的两层映像功能与数据独立性

1.外模式/模式映像
  • 简单来说,它定义了该外模式与模式之间的对应关系。
  • 它对于一个外模式,数据库管理系统都有一个模式/外模式映像
  • 它保证了数据与应用程序的逻辑独立性,简称为数据的逻辑独立性
2.模式/内模式映像

数据库中只有一个模式,也只有一个内模式,模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系

在模式描述中定义模式/内模式映像

保证了数据与应用程序的物理独立性,简称为数据的物理独立性

在构建数据库的三级模式结构上,模式(全局逻辑结构)是数据库的核心和关系。它独立于数据库的其他层次。

所以,设计数据库模式结构中,应该首先确定数据库的逻辑模式。

第二章 关系模型与关系代数

1.关系完整性约束条件

实体完整性:

  • 主码不能取null值。
  • 其中,如果主码是由若干个属性的集合组成,则要求构成主码的每一个属性值不能取空值。

参照完整性:

若属性(或属性集)F是关系r的外码,它与关系s的主码Ks相对应,则对于关系r中的每一个元组在属性F上的取值要么为空值null,要么等于关系s中某个元组的主码值。

用户自定义完整性:

首先,关系型数据库系统应该支持实体完整性和参照完整性。

其次,用户定义完整性就是针对某一个具体的应用要求来定义其约束条件。

2.关系数据结构

关系是一个二维表,对它的操作可以从水平(行)的角度进行,即选择操作;也可以从纵向(列)的角度进行,即投影操作。

给定一个查询需求,构造其关系代数表达式的步骤 :

  • 明确该查询涉及到哪些属性;
  • 明确该查询涉及到哪些关系;
  • 根据数据库模式导航图,通过多对一联系(或一对多联系)把所有涉及的关系连接起来,每一个多对一联系(或一对多联系)都可以表示为外码属性的自然连接。

二维表的构成如下:

  • 表头:关系模式、属性
  • 表体:关系、元组
  • 超码、候选码、主码、外码

3.关系代数

3.1 选择

选择操作做是在关系中查找满足给定的条件的所有元组。

例如如下图所示的实例,根据满足的内容来查询满足该条件下的所有元组。

3.2 投影

关系r上的投影是从r中选择出若干个属性列组成新的关系。

如上面举例的一样,它打印出来的是数据库中的属性。

3.3 并&差&交
--并运算
r∪s = { t∣t∈r∨t∈s }
--差运算(∈/表示不属于)
r-s = { t∣t∈r∧t∈/s }
--交运算
r∩s = { t∣t∈r∧t∈s }
3.4 笛卡尔积

两个分别为n目和m目的关系r和s的笛卡尔积是一个n+m目元组的集合。

若关系r有kr个元组,关系s有ks个元组,则关系r和s的笛卡尔积有kr×ks个元组。

记作 :
r × s = t r ⋅ t s ∣ t r ∈ r ∧ t s ∈ s r×s = { tr·ts∣tr∈r∧ts∈s } r×s=tr⋅ts∣tr∈r∧ts∈s

3.5 连接

连接也称为θ连接。记为A op B,其中A、B分别为关系r和s中的属性个数相等且可比的连接属性集,op为比较运算符。 θ连接是从两个关系的笛卡尔积中选取连接属性间满足谓词θ的所有元组。
r ⋈ θ s = t r ⋅ t s ∣ t r ∈ r ∧ t s ∈ s ∧ ( r . A ( o p ) s . B ) r ⋈θ s = { tr·ts∣tr∈r∧ts∈s∧(r.A (op) s.B) } r⋈θs=tr⋅ts∣tr∈r∧ts∈s∧(r.A(op)s.B)
其中,连接有两个最常用、重要的连接。一个是等值连接,另一个是自然连接。接下来介绍一下自然连接。

自然连接

自然连接是一个特殊的等值连接,它要求两个参与连接的关系具有公共的属性集,并在这个公共属性集上进行等值连接;同时,还要求将连接结果中的重复属性列去除掉,即在公共属性集中的列只保留一次。

比如说,学生信息和成绩信息都具有学号属性,两个表就通过学号属性进行自然连接。

**【示例】**在数据库中,查找所有2016级的“蒙古族”学生的姓名,直接上答案!!

∏studentName(σnation='蒙古族'(Student) ⋈σgrade=2016(Class))  

1.首先,对于上面的描述中可以根据MySQL嵌套查询的想法一样。先将想查询的元组查找出来。

σnation='蒙古族'(Student) 

上面所找到的是“是蒙古族的学生”的元组。

σgrade=2016(Class)

上面找到的是具有**”年级是2016级的学生“**的元组。

2.其次将两个表进行连接,实际上就是对两个表进行笛卡尔积,最终得到拥有两个属性信息的表。

3.最后寻找满足如上条件(表中显示的名字)投影出来即可。

3.6 除运算

接下来用一个例子来比较直观的感受除运算的概念。

图中所示中,它将原本被除数中的表,根据除数中满足的信息筛选出来,得出商(结果)。

第三章节的部分可以移步到我的另外一篇博客(虽然被审核为转载…),但都是自己的一点一滴的学习中感受的存在。谢谢大家~

第四章 数据库建模

1.数据库设计过程

数据库过程就是根据各种应用处理要求、硬件环境及操作系统的特性,将现实世界中的数据进行合理组织,利用已有数据库来建立数据库系统的过程

具体地说,对于一个给定的应用环境,构造出最优的数据库逻辑模式和物理模式,并建立数据库及其应用系统,使之能够有效地存储和管理数据,满足用户的信息要求和处理要求。

在这里插入图片描述

如上图所示,数据库设计一共有如上6个步骤。后续的笔记中只限于对如上6个步骤的了解(除了概念设计)。

2.E-R模型基本概念及表示

2.1 实体与实体集

实体:实体是客观世界中可区分于其他事物的事物或者对象。

实体的特征:

  • 独立存在
  • 可区分于其他实体

实体可以是具体存在的、有形的事物,也可以是抽象的、无形的事物。

实体集:实体集是具有相同类型即相同性质的实体组成的集合。

2.2 属性

属性是实体集中每个实体具有的特征描述。比如学生实体就一定会有姓名这一个特征。

对于每个属性而言,一个实体都拥有自己的属性值。

对于每一个属性所允许的取值范围或者集合称为该属性的域。

其中,属性可以分为简单属性和复合属性;单值属性和多值属性。

  • 简单属性:指的是不能再分为更小部分的属性。

  • 复合属性:指的是可进一步分为更小部分的属性。

  • 单值属性:指的是只有单独的一个值,比如一个学生只有一个学号。

  • 多值属性:指的是有多个值,比如一个学生可以有多个电话。

  • 派生属性:派生属性的值可以从其他相关属性或者实体派生出来,比如年龄可以间接的根据出生日期和当前日期计算得出。

2.3 联系与联系集

联系指的是多个实体间的相互关联。

联系集是同类联系的集合。

3.码约束与联系集的属性安置

  • 超码:超码是一个或者多个属性的集合,且这些属性的集合在一个实体集中能够唯一标识一个实体。
  • 其中,若一超码的任意真子集都不能成为超码,则称该最小超码为候选码。
  • 给定一组属性集,可能存在多个候选码。比如假设学生实体集中不存在同名的学生,则学号和姓名都可以用来唯一区分学生 ,因此它们都可以作为学生实体集的候选码。

候选码和超码是实体集客观存在的特性,它们表示实体集中任意两个实体不允许在码属性上有相同的值。可以从多个候选码中选择一个作为实体集的主码。主

码是被数据库设计者主观选中、用来区分同一实体集中不同实体的候选码。

当一实体集存在多个候选码时,主码选择原则:

选择属性长度最短的候选码;
选择包含单个属性的码,而不是复合候选码;
选择在数据库系统生命周期内属性值最少变化的候选码;
选择在数据库系统生命周期内更可能包含唯一值的候选码。

一个联系集中的每一个联系也要求是可区分的,也必须存在候选码,并选择其中的一个候选码作为主码,用于唯一标识该联系集中的一个联系。

1. 二元联系集的主码选择,依赖于联系集的映射基数

一对一:主码可以使用参与联系集中的任何一方实体集的主码;

一对多(多对一):主码由“多”的一方实体集的主码组成;

多对多:主码由参与联系集中所有实体集的主码组成

2.二元联系集的属性安置

一对一联系集的属性:安置于联系集或任一边的实体集上;

一对多联系集的属性:安置于联系集或多的一方实体集上;

多对多联系集的属性:它是描述相关联实体集间的交互性语义,因此,联系属性只能安置于联系集上,不能放到相关联的实体集上去

第五章 关系数据理论与模式求精

5.1 数据库“好”的模式

  • 数据冗余尽可能少(即数据共享尽可能高)
  • 不发生插入异常、删除异常、更新异常等问题。
  • 模式分解时,分解后的模式应具有无损连接、 保持依赖等特性

5.2 有损分解与无损分解

有损分解:两个分解后的关系通过连接运算还原得到的信息与原来关系的信息不一致。

无损分解:通过连接分解后所得到的较小关系完全还原被分解关系的所有实例,称之为无损分解。

依赖保持:如果酶分解关系模式上的所有依赖关系都在分解得到的关系模式上保留,称该分解为依赖保持。

5.3 函数依赖关系

函数依赖(functional dependency, 简称FD)是一种完整性约束, 是现实世界事物属性之间的一种制约关系。

如上图所示,对于任意两个在属性集{A, B}上取值相同的元组,它们在属性C上的取值也相同。因此,满足函数依赖AB->C

5.4 平凡与非平凡函数依赖

在关系模式r®中,a和b是R的子集.若a依赖于b,但b不属于a,则称a->b是非平凡函数依赖。否则,若b属于a, 则称a->b是平凡函数依赖。

5.5 完全函数依赖和部分函数依赖

在关系模式r®中,a属于R的子集,b属于R的子集,且a->b是非平凡函数依赖。若对任意的c是a的子集,c->b都不成立,则称a->b是完全函数依赖,简称完全

依赖。否则,若存在非空的c属于a,使c->b成立,则称a->b是部分函数依赖,简称部分依赖。

5.6 传递函数依赖

在关系模式r®中,设a是R子集,b是R子集,c是R子集,若a->b,b->c,则必存在函数依赖a->c;若a->b 、b->c和a->c都是非平凡函数依赖,且b不依赖a,则称a->c是传递函数依赖,简称传递依赖。

在这里插入图片描述

5.7 范式

满足BCNF范式的关系一定满足3NF范式,满足3NF范式的关系一定满足2NF范式,满足2NF范式的关系一定满足1NF范式。

如果一个属性的域值不可再分,称关系模式为第一范式。

如果一个关系模式r®属于1NF,且所有非主属性都完全函数依赖于r®的候选码,则称r®属于第二范式

如果一个关系模式r®属于2NF,且所有非主属性都直接函数依赖于r®的候选码(即不存在非主属性传递依赖于候选码,也就是不存在非主属性依赖于另一个非主属性),则称r®属于第三范式,

最后的BCNF范式满足以下三个条件:

所有非主属性都完全函数依赖于每个候选码;
所有主属性都完全函数依赖于每个不包含它的候选码;
没有任何属性完全函数依赖于非候选码的任何一组属性。
--它排除了:
任何属性(包括主属性和非主属性)对候选码的部分依赖和传递依赖;
主属性之间的传递依赖。

5.8 逻辑蕴涵&闭包

  1. 若给定函数依赖集F,可以证明其他函数依赖也成立,则称这些函数依赖被F逻辑蕴涵。令F为一函数依赖集,F逻辑蕴涵的所有函数依赖组成的集合称为F的闭包,记为F+

  2. 令r®为关系模式,F为函数依赖集,AR,则称在函数依赖集F下由A函数确定的所有属性的集合为函数依赖集F下属性集A的闭包,记为A+
    在这里插入图片描述

如上图所示,已计算出(AG)+=ABCGHI,则还要进一步分别计算A+和G+。最后经计算得,A+=ABCH、G+=G,它们都不包含R的所有属性。因此,AG为r®的候选码

第七章 SQL定义、更新、编程

1.SQL数据更新语言

结构化查询语言SQL包括:数据定义语言DDL、数据操纵易语言DML、数据控制语言DCL和其他。

数据操纵语言DML是对数据库的数据进行检索和更新。其中包括以下三条语句。INSERT、DELETE、UPDATE。

另外的,还有其他的分类:

  1. 数据控制DCL:授权
  2. 数据操纵DML:更新(增删改);查询select

2. 插入数据

插入一个元组:
INSERT INTO <tableName> [ (<columnName1> [, <columnName2> ... ] ) ] 
VALUES (<value1> [, <value2> ... ] ) 
--例子:将一个新学生元组('0700006', '李相东', '男', '1991-10-21 00:00', '云南', '撒呢族', 'CS0701')插入到学生表Student中。
INSERT INTO Student 
VALUES ( '0700006', '李相东', '男', '1991-10-21 00:00', '云南', '撒呢族', 'CS0701' )

--例子:将一个新学生元组(姓名:章李立,出生日期:1991-10-12 00:00,学号:1500007)插入到学生表Student中。
 INSERT INTO Student(studentName, birthday, studentNo)
 VALUES ( '章李立', '1991-10-12 00:00', '0700007' )

注意:

  • 按照指定属性的顺序和属性的个数向学生表Student插入一个新元组,没有列出的属性列自动取空值NULL或默认值;
  • 插入新元组时,数据的组织可不按照基本表结构定义的属性个数和顺序进行插入。
插入多个元组:
INSERT INTO <tableName> [ ( <columnName1> [, <columnName2> ... ] ) ]
      <subquery>

<tableName>:要插入元组的基本表的名称;

<columnName1> [, <columnName2> ... ]:指明被插入的元组按 <columnName1>, <columnName2>, … 指定的属性名称和顺序插入到基本表<tableName>中;

该项可以省略,若省略则其查询出来的结果必须与<tableName>表结构相同;

<subquery>:由SELECT语句引出的一个子查询。

3. 删除数据

DELETE FROM <tableName> [WHERE <predicate>]
  <tableName>:要删除记录的基本表的名称;
  [WHERE <predicate>]:指出被删除的元组所满足的条件.该项可以省略,若省略则表示删除表中的所有元组;
  WHERE子句中可以包含子查询。

--例子:删除学号为1600001同学的选课记录。
DELETE FROM Score 
WHERE studentNo='1600001'

4. 修改数据

UPDATE <tableName> 
SET <columnName1> = <expr1> [, <columnName2> = <expr2> ... ]
[FROM {<tableName1> | <queryName1> | <viewName1>} [AS] [<aliasName1>] 
    [, {<tableName2> | <queryName2> | <viewName2>} [AS] [<aliasName2>] ... ]
[WHERE <predicate>]
其中:
<tableName>:要进行修改数据的基本表的名称。
SET <columnName1> = <expr1> [, <columnName2> = <expr2> ... ]: 用表达式的值替代属性列的值
一次可以修改元组的多个属性列,之间以逗号分隔。
[WHERE <predicate>]:指出被修改的元组所满足的条件
该项可以省略,若省略,表示修改基本表中的所有元组;
WHERE子句中可以包含子查询。

5.视图

  • 视图是虚表,是从一个或几个基本表(或视图)中导出的表。
  • 在数据字典(数据库系统表)中仅存放视图的定义,不存放视图对应的数据。
  • 当基本表中的数据发生变化时,从视图中查询出的数据也随之改变。
  • 视图实现了数据库管理系统三级模式中的外模式。

基于视图的操作包括:

  • 查询、删除、受限更新和创建基于该视图的新视图。

视图的主要作用是:

  1. 简化用户的操作;
  2. 使用户能以多种角度看待同一数据库模式;
  3. 对重构数据库模式提供了一定程度的逻辑独立性;
  4. 能够对数据库中的机密数据提供一定程度的安全保护;
  5. 适当的利用视图可以更清晰的表达查询。

第八章 数据库存储结构与查询处理

1.索引与散列

顺序索引(ordered index):索引中的记录(索引项)基于搜索码值顺序排列。

散列索引:索引中的记录(索引项)基于搜索码值的散列函数(即哈希函数)的值平均、随机地分布到若干个散列桶中。

组织结构:在索引中按搜索码值的顺序存储索引项,并将索引项与包含该索引项中搜索码值的文件记录关联起来(通过指针).

如下图所示:

对于索引顺序文件而言,顺序索引有两类:稠密索引和稀疏索引。
在这里插入图片描述

  • 即使采用稀疏顺序索引,对于一个大型数据库而言,顺序索引本身也可能变得很大。

  • 如果索引过大,主存中不可能读入所有的索引块,也就是大部分索引块只能存储在磁盘上,这样在查询处理过程中,搜索索引就必须读大量的磁盘块。

  • 通过多级索引技术能够较好地解决上述问题。所谓多级索引就是在索引之上再建立索引。

另外的,辅助索引通过使用指针桶的方式实现。将数据文件中具有该搜索码值的所有记录的指针存放在一个指针桶中。索引项中的指针会存放指向指针桶的指针。

B+树索引

B+树索引的结构满足:

  1. B+树索引是一个多级索引,但其结构不同于多级顺序索引
  2. B+树索引采用平衡树结构,即每个叶结点到根结点的路径长度相同

对于一个表的索引而言,不是越多越好,因为会降低写的效率 。

2.游标

对SELECT语句的结果集进行逐行处理,需使用游标。

**游标(cursor)**是系统为用户开设的一个数据缓冲区,用于存放SQL语句的执行结果(元组集合)。每个游标都有一个名字,用户可以用SQL提供的语句从游标中逐一获取元组(记录),并赋给主变量,交由主语言进一步处理。

3.存储过程

  • 存储过程是为了完成特定功能汇集而成的一组命名了的SQL语句集合
  • 该集合编译后存放在数据库中,可根据实际情况重新编译;
  • 存储过程可直接在服务器端运行,也可在客户端远程调用运行,远程调用时存储过程还是在服务器端运行

4.触发器

用户定义在关系表上的一类由事件驱动的存储过程,由服务器自动激活。

5.查询优化

查询处理过程:语法分析与翻译、查询优化、查询执行

查询优化:

  • 处理一个给定的查询,尤其是复杂的查询,通常会有许多种执行策略。
  • 查询优化(query optimization)就是从这许多策略中找出最有效的查询执行计划的处理过程。
  • 期望RDBMS能够构造并选择出一个具有最小查询执行代价的查询执行计划

第九章 数据库安全性与完整性

数据库的安全性:保护数据库以防止不合法使用所造成的数据泄密、更改或破坏

数据库的完整性:防止数据库中存在不符合语义的数据,其防范对象是不合语义的、不正确的数据

授权用户才能访问数据库

安全:

权限管理:GRANT和REVOKE

GRANT select ON Score TO u1, u2, u3

REVOKE select ON Score FROM u1

第十章 事务管理与恢复

1.事务

  • 事务是一个读写操作序列。这些操作是一个不可分割的逻辑工作单元,要么都做,要么都不做
  • 事务提交(commit):将成功完成事务的执行结果(即更新)永久化,并释放事务占有的全部资源。
  • 事务回滚(rollback):中止当前事务、撤销其对数据库所做的更新,并释放事务占有的全部资源

事务特性:

1)原子性:事务的所有操作要么全部都被执行,要么都不被执行

2)持久性:一个事务成功提交后,它对数据库的改变必须是永久的,即使随后系统出现故障也不会受到影响

3)一致性:一个单独执行的事务应保证其执行结果的一致性,即总是将数据库从一个一致性状态转化到另一个一致性状态

4)隔离性:当多个事务并发执行时,一个事务的执行不能影响另一个事务,即并发执行的各个事务不能互相干扰

并发控制:数据库的一致性经常会受到破坏,因此在事务访问数据对象前须采取一定措施加以控制,只有得到访问许可时,才能访问数据对象,如基于封锁的并发控制方法

数据库系统原理期末复习 数据库系统原理期末复习 一、课程目标1:数据库基础知识应用 20分 数据库的完整性(主键、外键),关系代数的应用(选择、投影、连接),索引(聚簇索引、普通索引、唯一索引) 触发器:概念、定义、测试,inserted表,deleted表 二、课程目标2:SQL应用 30分 DDL(create,alter,drop),视图定义(with check option),SELECT from where group by having order by,集函数(max(),min(),sum(),avg()), 阅读详情

相关推荐

【数据库系统原理与应用/数据库系统概论】 期末复习手册

自己根据学校的课程内容整理的数据库期末复习资料,可能不同学校的教学内容不同,所以难免会有内容的遗漏,同时由于时间紧迫,难免会有笔误或知识性错误之处,欢迎斧正,希望能帮到有需要的同学。 第一章 :绪论 1.1四个基本概念: 1.1.1数据 定义:data 记录事物情况的物理符号,是数据库中储存的基本对象 数据的含义成为语义,数据与其语义是不可分的 1.1.2数据库 定义:数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的大量数据的集合。以文件方式存储 基本特征.

weixin_47556302的博客 4413

候选码,主码,外码,主属性,非主属性

候选码:能唯一标识关系中的元组的一个属性或属性集。 具有唯一性:任意两个不同的元组,对应的候选码中的属性的值组成的集合都是不相等的。 具有最小性:即候选码含有的属性的个数要最少 主码:有多个候选码时,从中选出一个作为这个关系的主码 外码:假设有两个关系R1和R2,R2中的一个或者一组属性不是R2的主码,而是R2的主码,则把这组属性称为R2的外码,并且把R2叫做参照关系,把R1叫做被参照关系。 主属性:在主码中的属性 非主属性:不在主码中的属性 ...

761899457@qq.com 2806

软件设计师中级王勇老师课程笔记-4计算机网络

软件设计师中级王勇老师课程笔记-4计算机网络 笔记

weixin_42182290的博客 232

【数据库原理及应用】——数据库设计(学习笔记)

数据库的设计是指基于现有的数据库管理系统,针对具体应用构建适合的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能有效地存储和管理数据,满足各类用户的应用需求。本章将介绍数据库设计的主要内容、特点,设计方法和全过程,从需求分析﹑概念结构设计、逻辑结构设计、物理结构设计到实施、运行与维护。

HinsCoder的博客 4858

华硕ROG玩家国度安装Ubuntu双系统避坑指南:安全启动密钥那些事儿

本文详细解析了在华硕ROG玩家国度设备上安装Ubuntu双系统时,如何正确处理BIOS中的安全启动(Secure Boot)与密钥管理,避免常见的引导失败和Windows系统无法启动问题。指南提供了从数据备份、启动盘制作到BIOS精细设置(如将OS Type改为Other OS而非简单关闭Secure Boot)以及分区规划的完整流程,确保两个系统都能稳定共存。

weixin_29219189的博客 754

从Palantir到AI时代:Forward Deployed Engineer模式的深度解析

《从Palantir到AI时代:FDE模式的创新与挑战》摘要:Palantir开创的前置部署工程师(FDE)模式正在成为AI创业公司的标配。该模式通过现场工程师深入了解客户需求,填补产品与实际应用间的鸿沟,颠覆了传统SaaS规模化路径。核心优势在于将定制化服务转化为产品发现机制,特别适合高度异质化的AI市场。成功关键在于平衡定制与标准化,通过合同价值增长、产品杠杆效应等独特指标衡量成效。FDE人才需要兼具领域洞察力与快速原型能力。这一模式表明,在AI等新兴领域,深入客户现场可能比单纯追求技术突破更能创造商业

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 4535

数据库中 码、主码、候选码的辨别

主码、候选码、码 ps:元组理解为一张表的某一行,属性理解为一张表的某一列,属性名就是列的名字(字段)。 1(码):码是可以确定一个元组的所有信息的属性名或属性名组。 例如在 { a, b, c, d } 中, 假设知道 a 的值就能确定 a, b, c, d 的值, 假设知道 c, d 的值就可以确定 a, b, c, d 的值, 那么 { a } 就是码,{ c, d } 就是码。 并且 { a, b }, { a, c }, { a, b, c }, { a, b, c, d } 等也都是码,因为它们

weixin_41866717的博客 9991

44位abogus补环境与纯算逆向分析

44位ab参数补环境与纯算加密流程逆向分析

吴秋霖的博客 2769

数据库原理与设计学习笔记(小周最可爱)

目录第一讲:数据库系统概述1.1.1 数据库的四个基本概念数据(Data)数据库(Database 简称DB)数据库管理系统(DBMS)数据库系统(DBS)1.1.2 数据管理技术的产生和发展数据管理技术数据库管理技术的发展过程人工管理阶段(40年代中--50年代中)文件系统阶段(50年代末--60年代中)数据库系统阶段(60年代末--现在)三个阶段的比较第二讲:数据模型模型2.1 数据模型2.2...

weixin_44570415的博客 2364

【nnUNetv2进阶】四、nnUNetv2 魔改网络-小试牛刀-加入注意力机制ChannelAttention

本文介绍了在nnunet中加入ChannelAttention的方法,按照本文教的教程,可以快速完成ChannelAttention的加入和自定义模型的跑通。

AI爱好者的博客,分享计算机领域相关知识 5800

华为OD机试真题 新系统 9月27号 【数据中心最佳维护窗口】

华为OD机试真题 新系统【数据中心最佳维护窗口】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【数据中心最佳维护窗口】多语言题解。

qq_45776114的博客 1154

Spring Data JPA 实现多表操作

数据库中表与表之间存在着三种关系:多对多、一对多(多对一)和一对一关系。在实际开发中,我们数据库的表与表之间难免会产生联系,在操作表的时候就有可能会涉及到多张表的操作。而在这种实现了ORM思想的框架中(如JPA),可以让我们通过操作实体类就实现对数据库表的操作,实现实体之间的关联关系。

龙源IT 的博客 4423

CloudCompare 和 PCL:点云网格化分析与处理

点云网格化是将点云数据转化为规则网格的过程,其主要思想是将离散的点云投影到一个平面上,然后对该平面进行划分,形成一系列小区域。在点云网格化方面,PCL 提供了各种算法和工具,可以实现高效的点云网格化操作。以上示例代码中,首先加载了输入的点云数据,然后通过设置合适的网格化算法参数,如搜索半径和最大三角形边长等,执行了网格化操作,最后将网格化结果保存到输出文件中。以上示例代码中,首先加载了输入的点云数据,然后通过设置合适的网格化参数,如分辨率等,执行了网格化操作,最后将网格化结果保存到输出文件中。

TechPulseZ的博客 1291

南科大CS307数据库原理课程 复习笔记(一)概览

本系列博客计划作为2019年秋季学期在南科大学习CS307数据库系统原理的复习笔记 能写多少不知道,能写多少是多少。 本门课的主要参考教材 老师讲课的编排顺序:一共九个专题 ♦ Database System: What Is It and Why Study It? ♦ Database System Concepts and Architecture ♦ Relational D...

Clover Wang的博客 633

基于YOLO26深度学习框架的人脸识别门禁系统的算法研究实现方法

本文研究了基于YOLO26深度学习框架的人脸识别门禁系统实现方法。系统采用YOLO26目标检测算法,通过CSPDarknet53主干网络、特征金字塔结构和注意力机制实现高效人脸检测。研究内容包括数据预处理、模型训练优化和身份验证等关键技术,使用迁移学习策略和CIoU损失函数提升检测精度。该系统可应用于智能安防场景,具有实时性强、识别准确的特点,为门禁管理提供了智能化解决方案。

一键难忘的博客 766

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

《数据库系统原理及应用教程》期末复习知识点整理手写资料(Ch1-Ch5)

阅读前注意: 1. 本复习资料配套书目《数据库系统原理及应用教程》(苗雪兰等,第五版) ,是对应于课程“数据库原理及应用(专业选修课)”的期末复习知识点归纳总结手写笔记,主要为笔者自己的笔记保存用。 2. 笔记中的内容只是知识点概述、归纳与汇总,详细的知识点描述请以书本为准。对照本复习笔记进行复习之前应确定你的数据库课程学习的内容与复习资料中提及的内容大体一致,最好是对照着《数据库系统原理及应用教程》书本进行复习。 3. 最好了解自己数据库考试的重点内容之后再对照复习。如果想要一夜速成,把这个知识点整理中该

K2SO4的博客 4481

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

软件设计师备考记的笔记

软件设计师备考记的笔记 去发现同类优质开源项目:https://gitcode.com/ 本资源文件包含了一份关于软件设计师备考的详细笔记,这些笔记是根据B占王寄清老师的视频教程整理而成。笔记详细记录了课程中的关键点和重要概念,旨在帮助备考软件设计师的朋友们更好地理解和掌握相关知识。 简介 标题:软件设计师备考记的笔记 作者:未知 来源:B占王寄清老师的视频教程 内容 笔记内容覆盖了软件设计师...

gitblog_06796的博客 361

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

学习笔记整理-数据库系统原理复习5-关系模式分解、系统需求与概念结构设计

1、属于低级范式的关系模式通常存在一些数据冗余及操作异常,因此属于低级范式的关系模式需要向高级范式的关系模式进行转换时,需要通过来实现。等价的三种标准:①分解要具有(保证数据不丢失信息)②分解要具有(减轻或解决各种异常情况)③分解。2、无损分解的测试算法:①如果只是分解为两个R1R2,就直接看两个的,看交集能不能推出R1与R2或者R2与R1的,能就是无损的。②如果分解大于两个就要建表::没有两个a。最后。3、保持函数依赖的分解:就是看,最后并在一起,再看看有没有。

Aure_xl的博客 500

【数据库系统原理、设计与编程【MOOC版】(主编 陈安龙等)】学习笔记分享

#前言 这些都是笔主上课和复习时的手写笔记,笔主也只是一名大三的学生,做此纯属分享给有同等需要的人也作为自己学习的一个记录,如出现纰漏请联系qq1586725168 # ps:如需要无水印pdf版本请私信笔主 #全部笔记就是这样,如果是电子科技大学的学生,那么这个可以直接当做考点来复习,笔记中的表达习惯和方式都是个人偏好,希望能帮助到大家,再见 ...

qq_54252050的博客 945

access2013数据库实验笔记_最美笔记NO.8 | 你们心心念念的计算机学院的最美笔记来啦!...

计算机学院最美笔记来袭!来自17级李虹金同学的搜素引擎技术基础笔记笔记虽精简却不失精华蓝色记录主要内容,红色标记重点。用荧光笔标记,为以后的复习备考梳理了重点。快来get同款笔记!左右滑动查看更多来自18级李娜同学的计算机组成原理笔记以熟悉的实验报告的形式为封面内容详实且有例题展示让人看完该笔记也不会心存疑问左右滑动查看更多来自18级疏洋同学的数据库系统概论笔记或许?同学们有做手账本的爱...

weixin_39954569的博客 130

《数据库系统原理》期末复习笔记

数据库系统原理 第1讲 数据:描述事物的符号记录,是数据库中存储的基本对象。 DB:数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。(数据和信息的集合) 基本特征:数据按一定的数据模型组织、描述和储存、可为各种用户共享、冗余度较小、数据独立性较高、易扩展 DBMS:位于用户与操作系统之间的一层数据管理软件,是基础软件,是一个大型复杂的软件系统。 用途:科学地组织和存储数据、高效地获取...

哆啦梦工厂的博客 4046

数据库系统原理复习题目【总】

目录第一次课作业一.单选题二.填空题第二次课作业一.单选题二.填空题三.简答题第三次课作业一.单选题二.填空题三.简答题第四次课作业一.单选题二.填空题__三.简答题第五课时作业一.单选题二.简答题第六课时作业一.单选题二.填空题第七课时作业一.单选题二.简答题第八课时作业一.单选题二.简答题第九课时作业一.单选题二.填空题三.简答题四.资料题第十课时作业一.填空题二.简答题第11课时作业一.单选题二.填空题三.简答题第12次作业一.填空题二.简答题第13次作业一.单选题二.填空题第14次作业一.单选题二.

zhangbw's blog 9267

数据库原理复习笔记(实用)

这是大三上学期复习数据库时自己整理的,有些地方可能有误,大家可以参考参考

1周是1年的2% 3万+

FZU数据库系统原理复习笔记

福州大学数据库系统原理期末考试重点整理2021年程烨班

AVICIIl的博客 2241

吉林大学软件学院数据库系统原理复习

数据库系统原理,期末复习,吉林大学,软件学院

ling_xiLSP的博客 3486
上一篇: JSP相关介绍?看这篇就够了!
下一篇: GIT简要介绍
Xiao艾扶
博客等级 码龄7年 187粉丝 93原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xiao艾扶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值