数据库系统:2. 关系数据库

news2024/11/25 5:41:48

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验


文章目录

    • 2.1 关系数据结构及形式化定义
      • 2.1.1 关系
        • 笛卡尔积
        • 关系
        • 三类关系
        • 基本关系的性质
      • 2.1.2 关系模式
      • 2.1.3 关系数据库
      • 2.1.4 关系模型的存储结构
    • 2.2 关系操作
      • 2.2.1 基本的关系操作
      • 2.2.2 关系数据语言的分类
    • 2.3 关系的完整性
      • 2.3.1 实体完整性
      • 2.3.2 参照完整性
      • 2.3.3 用户定义的完整性
    • 2.4 关系代数
      • 2.4.1 传统的集合运算
      • 2.4.2 专门的关系运算
        • 选择
        • 投影
        • 连接
        • 除运算


提出关系模型的是美国 IBM 公司的 E.F.Codd

  • 1970年提出关系数据模型,之后,提出了关系代数和关系演算的概念。
  • 1972年提出了关系的第一、第二、第三范式。
  • 1974年提出了关系的 BC 范式。

2.1 关系数据结构及形式化定义


按照数据模型的三个要素:

  • 关系模型由关系数据结构;
  • 关系操作集合;
  • 关系完整性约束三部分组成。

下面将对这三部分内容进行分别介绍。


2.1.1 关系


关系模型的数据结构非常简单,只包含单一的数据结构—关系。在用户看来,关系模型中数据的逻辑结构是一张扁平的二维表。



  • 是一组具有相同数据类型的值的集合。
  • 例如:自然数、整数、实数的集合。

笛卡尔积


  • 给定一组域: D 1 , D 2 , D 3 , … , D n D_1, D_2, D_3, \dots, D_n D1,D2,D3,,Dn,且允许其中某些域是相同的
  • 则其笛卡尔积为: D 1 × D 2 × D n × ⋯ × D n = { ( d 1 , d 2 , d 3 … , d n )   ∣   d i ∈ D i , i = 1 , 2 , … , n } D_1 \times D_2 \times D_n \times \dots \times D_n = \{ (d_1, d_2, d_3 \dots, d_n)\ | \ d_i \in D_i, i = 1, 2, \dots , n \} D1×D2×Dn××Dn={(d1,d2,d3,dn)  diDi,i=1,2,,n}
  • 其中每一个元素 ( d 1 , d 2 , d 3 … , d n ) (d_1, d_2, d_3 \dots, d_n) (d1,d2,d3,dn) 叫做一个 n n n 元组,或简称元组,其中 d i d_i di 为分量。

一个域允许的不同取值个数称为这个域的基数

  • D i ( i = 1 , 2 , … , n ) D_i (i = 1, 2, \dots, n) Di(i=1,2,,n) 为有限集,其基数为 m i ( i = 1 , 2 , … , n ) m_i(i = 1, 2, \dots, n) mi(i=1,2,,n)
  • D 1 × D 2 × D n × ⋯ × D n D_1 \times D_2 \times D_n \times \dots \times D_n D1×D2×Dn××Dn 的基数 M = ∏ i = 1 n m i M = \prod^{n}_{i = 1}m_i M=i=1nmi

笛卡尔积可以表示为一张二维表,表中的每行对应一个元组,表中的每一列的值来自一个域。

例如:

  • 已知: D 1 = X = { a , b } , D 2 = Y = { c , d } D_1 = X = \{ a, b \}, D_2 = Y = \{ c, d \} D1=X={a,b},D2=Y={c,d}

  • D 1 × D 2 D_1 \times D_2 D1×D2 的笛卡尔积为 D 1 × D 2 = { ( a , c ) , ( a , d ) , ( b , c ) , ( b , d ) } D_1 \times D_2 = \{ (a, c), (a, d), (b, c), (b, d) \} D1×D2={(a,c),(a,d),(b,c),(b,d)}

  • 笛卡尔基数为 2 × 2 = 4 2 \times 2 = 4 2×2=4,共 4 4 4 个元组,可生成表格如下:

  • X X X Y Y Y
    a a a c c c
    a a a d d d
    b b b c c c
    b b b d d d

关系


  • D 1 × D 2 × D n × ⋯ × D n D_1 \times D_2 \times D_n \times \dots \times D_n D1×D2×Dn××Dn 的子集叫做在域 D 1 , D 2 , D 3 , … , D n D_1, D_2, D_3, \dots, D_n D1,D2,D3,,Dn 上的关系。

  • 表示为 R ( D 1 , D 2 , D 3 , … , D n ) R(D_1, D_2, D_3, \dots, D_n) R(D1,D2,D3,,Dn),其中 R R R 为关系名, n n n 为关系的目或度(Degree)。

  • 关系中的每个元素是关系中的元组,通常用 t t t 表示。

  • n = 1 n = 1 n=1 时,称该关系为单元关系(Unary relation)或一元关系, n = 2 n = 2 n=2 时称为二元关系(Binary relation)。

    关系是笛卡儿积的有限子集,所以关系也是一张二维表,表的每行对应一个元组,表的每列对应一个域



  • 候选码(Candidate key):若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码(如学号,身份证号)。

  • 全码(All key):在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性是这个关系模式的候选码。

  • 主码(Primary key):若一个关系有多个候选码,则选定其中一个为主码。候选码的诸属性称为主属性(Prime attribute)。不包含在任何侯选码中的属性称为非码属性或非主属性(Non-key attribute)。

    主码和候选码本质相同,只是数量不同


三类关系


  • 基本关系(基本表或基表):实际存在的表,是实际存储数据的逻辑表示。
  • 查询表:查询结果对应的表。
  • 视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。

基本关系的性质


  • 列同质的(Homogeneous)每一列中的分量是同一类型的数据,来自同一个域。
  • 不同的列可出自同一个域:
    • 其中的每一列称为一个属性。
    • 不同的属性要给予不同的属性名。
  • 列的顺序无所谓(属性名打破有序性)。
  • 任意两个元组不能完全相同(候选码不同)。
  • 行的顺序无所谓,即行的次序可以任意交换。
  • 分量必须取原子值,每一个分量都必须是不可分的数据项。这是规范条件中最基本的。

2.1.2 关系模式


在数据库中要区分型和值,关系数据库中:

  • 关系模式(Relation Schema)是型,关系是值。

关系模式是对关系的描述:

  • 元组集合的结构:

    • 属性构成
    • 属性来自的域
    • 属性与域之间的映象关系
  • 完整性约束条件,元组语义。

    关系的描述称为关系模式(relation schema)。它可以形式化地表示为 R ( U , D , D O M , F ) R(U, D, DOM, F) R(U,D,DOM,F)

  • R R R 为关系名

  • U U U 为组成该关系的属性名集合

  • D D D U U U 中属性所来自的域

  • D O M DOM DOM 为属性向域的映像集合

  • F F F 为属性间数据的依赖关系集合。


2.1.3 关系数据库


在关系模型中,实体以及实体间的联系都是用关系来表示的。在一个给定的应用领域中,所有关系的集合构成一个关系数据库。

关系数据库也有型和值之分:

  • 关系数据库的型也称为关系数据库模式,是对关系数据库的描述。
  • 关系数据库模式包括若干域的定义,以及在这些域上定义的若干关系模式。
  • 关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。

2.1.4 关系模型的存储结构


  • 有的关系数据库管理系统中一个表对应一个操作系统文件,将物理数据组织交给操作系统完成。
  • 有的关系数据库管理系统从操作系统那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理。

2.2 关系操作


2.2.1 基本的关系操作


  • 查询:
    • 基本操作:选择、投影、并、差、笛卡尔积;
    • 其他操作:连接、除、交,可由上述基本操作导出。
  • 数据更新:插入、删除、修改。

关系操作的特点是集合操作方式:

  • 操作的对象和结果都是集合。
  • 这种操作方式也称为一次一集合(set-at-a-time)的方式。

相应地,非关系数据模型的数据操作方式则为一次一记录(record-at-a-time)的方式。


2.2.2 关系数据语言的分类


在这里插入图片描述

特点

  • 关系语言是一种高度非过程化的语言,存取路径的选择由 DBMS 的优化机制来完成,用户不必用循环结构就可以完成数据操作。
  • 能够嵌入高级语言中使用。
  • 关系代数、元组关系演算和域关系演算三种语言在表达能力上完全等价。

2.3 关系的完整性


关系模型中有三类完整性约束:

  • 实体完整性(entity integrity)

  • 参照完整性(referential integrity)

  • 用户定义的完整性(user-defined integrity)。

    关系模型必须满足实体完整性和参照完整性,被称作是关系的两个不变性,应该由关系系统自动支持。

    用户定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。


2.3.1 实体完整性


  • 若属性(指一个或一组属性) A A A 是基本关系 R R R 的主属性,则 A A A 不能取空值(null value)。
  • 所谓空值就是“不知道”或“不存在”或“无意义”的值。

原因

  1. 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。
  2. 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
  3. 关系模型中以主码作为唯一性标识。
  4. 主码中的属性即主属性不能取空值。主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性。

2.3.2 参照完整性


外码

  • F F F 是基本关系 R R R 的一个或一组属性,但不是关系 R R R 的码,
  • 如果 F F F 与基本关系 S S S 的主码 K s K_s Ks 相对应,则称 F F F R R R 的外码。
  • 基本关系 R R R 称为参照关系(Referencing Relation)
  • 基本关系 S S S 称为被参照关系(Referenced Relation)或目标关系(Target Relation)

关系 R R R S S S 不一定是不同的关系,目标关系 S S S 的主码 K s K_s Ks 和参照关系的外码 F F F 必须定义在同一个(或一组)域上。

外码并不一定要与相应的主码同名;当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别。

参照完整性规则

  • 若属性(或属性组) F F F 是基本关系 R R R 的外码,它与基本关系 S S S 的主码 K K K 相对应(基本关系 R R R S S S 不一定是不同的关系)
  • 则对于 R R R 中每个元组在 F F F 上的值必须:
    • 取空值( F F F 的每个属性值均为空值)
    • 或等于 S S S 中某个元组的主码值

2.3.3 用户定义的完整性


  • 用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。
  • 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。

2.4 关系代数


关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。

运算具备以下要偶素:

  • 运算对象
  • 运算符
  • 运算结果

任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果

关系代数的运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括两类:

  • 集合运算符
  • 专门的关系运算符

在这里插入图片描述


2.4.1 传统的集合运算


传统的集合运算是二目运算,包括并、差、交、笛卡儿积4种运算。

设关系 R R R 和关系 S S S 具有相同的目(即两个关系都有 n n n 个属性),且相应的属性取自同一个域, t t t 是元组变量, t ∈ R t \in R tR 表示 t t t R R R 的一个元组。可以定义并、差、交、笛卡儿积运算如下:

  • 并(union):
    • 关系 R R R 与关系 S S S 的并记作: R ∪ S = { t ∣ t ∈ R ∧ t ∈ S } R \cup S = \{t |t \in R \land t \in S \} RS={ttRtS}
    • 其结果仍为 n n n 目关系,由属于 R R R 或属于 S S S 的元组组成。
  • 差(except):
    • 关系 R R R 与关系 S S S 的差记作: R − S = { t ∣ t ∈ R ∧ t ∉ S } R - S = \{ t | t \in R \land t \notin S \} RS={ttRt/S}
    • 其结果关系仍为 n n n 目关系,由属于 R R R 而不属于 S S S 的所有元组组成。
  • 交(intersection):
    • 关系 R R R 与关系 S S S 的交记作 R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R \cap S = \{ t | t \in R \land t \in S \} RS={ttRtS}
    • 其结果关系仍为 n n n 目关系,由既属于 R R R 又属于 S S S 的元组组成。
    • 关系的交可以用差来表示,即 R ∩ S = R − ( R − S ) R \cap S = R - ( R - S ) RS=R(RS)
  • 笛卡儿积(cartesian product):
    • 这里笛卡儿积的元素是元组。
    • 两个分别为 n n n 目和 m m m 目的关系 R R R S S S 的笛卡儿积是一个 ( n + m ) (n + m) (n+m) 列的元组的集合。元组的前 n n n 列是关系 R R R 的一个元组,后 m m m 列是关系 S S S 的一个元组。
    • R R R 有个元组, S S S 2 2 2 个元组,则关系 R R R 和关系 S S S 的笛卡儿积有 k 1 × k 2 k_1 \times k_2 k1×k2 个元组。记作 R × S = { t r t s ⌢ ∣ t r ∈ R ∧ t s ∈ S } R \times S = \{\overset{\frown}{t_r t_s} | t_r \in R \land t_s \in S \} R×S={trtstrRtsS}

在这里插入图片描述


2.4.2 专门的关系运算


专门的关系运算包括选择、投影、连接、除运算等。为了叙述上的方便,先引入几个记号:

  • R R R t ∈ R t \in R tR t [ A i ] t[A_i] t[Ai]
    • 设关系模式为 R ( A 1 , A 2 , … , A n ) R(A_1, A_2, \dots , A_n) R(A1,A2,,An)
    • 它的一个关系设为 R R R
    • t ∈ R t \in R tR 表示 t t t R R R 的一个元组
    • t [ A i ] t[A_i] t[Ai] 表示元组 t t t 中相应于属性 A i A_i Ai 的一个分量
  • A A A t [ A ] t[A] t[A] A ‾ \overline{A} A
    • A = { A i 1 , A i 2 , … , A i k } A = \{ A_{i1}, A_{i2}, \dots , A_{ik} \} A={Ai1,Ai2,,Aik},其中 A i 1 , A i 2 , … , A i k A_{i1}, A_{i2}, \dots , A_{ik} Ai1,Ai2,,Aik A 1 , A 2 , … , A n A_1, A_2, \dots , A_n A1,A2,,An 中的一部分,则 A A A 被称为属性列或属性组。
    • t [ A ] = ( t [ A i 1 ] , t [ A i 2 ] , … , t [ A i k ] ) t[A] = (t[A_{i1}], t[A_{i2}], \dots , t[A_{ik}]) t[A]=(t[Ai1],t[Ai2],,t[Aik]) 表示元组 t t t 在属性列 A A A 上诸分量的集合。
    • A ‾ \overline{A} A 则表示 { A 1 , A 2 , … , A n } \{ A_1, A_2, \dots , A_n \} {A1,A2,,An} 中去掉 A i 1 , A i 2 , … , A i k A_{i1}, A_{i2}, \dots , A_{ik} Ai1,Ai2,,Aik 后剩余的属性组。
  • t r t s ⌢ \overset{\frown}{t_r t_s} trts
    • R R R n n n 目关系, S S S m m m 目关系
    • t r ∈ R t_r \in R trR t s ∈ S t_s \in S tsS t r t s ⌢ \overset{\frown}{t_r t_s} trts 称为元组的连接
    • t r t s ⌢ \overset{\frown}{t_r t_s} trts 是一个 n + m n + m n+m 列的元组,前 n n n 个分量为 R R R 中的一个 n n n 元组,后 m m m 个分量为 S S S 中的一个 m m m 元组
  • 象集 Z x Z_x Zx
    • 给定一个关系 R ( X , Z ) R(X, Z) R(X,Z) X X X Z Z Z 为属性组
    • t [ X ] = x t[X] = x t[X]=x 时, x x x R R R 中的象集(Images Set) 为: Z x = { t [ Z ] ∣ t ∈ R , t [ X ] = x } Z_x = \{ t[Z] | t\in R, t[X] = x \} Zx={t[Z]tR,t[X]=x}
    • 它表示 R R R 中属性组 X X X 上值为 x x x 的诸元组在 Z Z Z 上分量的集合。

选择


  • 选择又称为限制(Restriction)
  • 选择运算符的含义:
    • 在关系R中选择满足给定条件的诸元组
    • σ F ( R ) = { t ∣ t ∈ R ∧ F ( t ) = ‘ t r u e ′ } \sigma_F(R) = \{ t | t \in R \land F(t) = `true' \} σF(R)={ttRF(t)=true}
    • F F F:选择条件,是一个逻辑表达式,取值为“真”或“假”
    • 基本形式为: X 1 θ Y 1 X_1 \theta Y_1 X1θY1
    • θ \theta θ 表示比较运算符,它可以是 > , ≥ , < , ≤ , = , ≠ \gt, \ge, \lt, \le, =, \ne >,,<,,=,=
    • X 1 , Y 1 X_1, Y_1 X1,Y1 等是属性名、常量、简单函数;属性名也可以用它的序号来代替;
    • 在基本的选择条件上可以进一步进行逻辑运算,求非 ,与,或运算。

在这里插入图片描述


投影


  • R R R 中选择出若干属性列组成新的关系
  • Π A ( R ) = { t [ A ] ∣ t ∈ R } \Pi_A(R) = \{ t[A] | t \in R \} ΠA(R)={t[A]tR}
  • A A A R R R 中的属性
  • 投影操作主要是从列的角度进行运算
  • 投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)

在这里插入图片描述


连接


  • 连接也称为 θ \theta θ 连接
  • 连接运算的含义:
    • 从两个关系的笛卡尔积中选取属性间满足一定条件的元组
    • R ⋈ A θ B S = { t r t s ⌢ ∣ t r ∈ R ∧ t s ∈ S ∧ t r [ A ] θ t s [ B ] } R \underset{A \theta B}{\bowtie} S = \{ \overset{\frown}{t_r t_s} | t_r \in R \land t_s \in S \land t_r[A] \theta t_s[B] \} RAθBS={trtstrRtsStr[A]θts[B]}
    • A A A B B B :分别为 R R R S S S 上度数相等且可比的属性组
  • 连接运算从 R R R S S S 的广义笛卡尔积 R × S R \times S R×S 中选取 R R R 关系在 A A A 属性组上的值与 S S S 关系在 B B B 属性组上的值满足比较关系 θ \theta θ 的元组

两类常用连接运算:

  • 等值连接(equijoin):
    • θ \theta θ = = = 的运算
    • 从关系 R R R S S S 的广义笛卡尔积中选取 A , B A,B A,B 属性值相等的那些元组
    • R ⋈ A = B S = { t r t s ⌢ ∣ t r ∈ R ∧ t s ∈ S ∧ t r [ A ] θ t s [ B ] } R \underset{A = B}{\bowtie} S = \{ \overset{\frown}{t_r t_s} | t_r \in R \land t_s \in S \land t_r[A] \theta t_s[B] \} RA=BS={trtstrRtsStr[A]θts[B]}
  • 自然连接(natural join):
    • 自然连接是一种特殊的等值连接:
      • 两个关系中进行比较的分量必须是相同的属性组
      • 在结果中把重复的属性列去掉
    • 自然连接的含义:
      • R R R S S S 具有相同的属性组 B B B
      • R ⋈ S = { t r t s ⌢ [ U − B ] ∣ t r ∈ R ∧ t s ∈ S ∧ t r [ B ] = t s [ B ] } R \bowtie S = \{ \overset{\frown}{t_r t_s} [U-B] | t_r \in R \land t_s \in S \land t_r[B] = t_s[B] \} RS={trts[UB]trRtsStr[B]=ts[B]}

一般的连接操作是从行的角度进行运算。

在这里插入图片描述

自然连接还需要取消重复列,所以是同时从行和列的角度进行运算


除运算


  • 给定关系 R ( X , Y ) R(X, Y) R(X,Y) S ( Y , Z ) S(Y, Z) S(Y,Z),其中 X , Y , Z X, Y, Z X,Y,Z 为属性组。
  • R R R 中的 Y Y Y S S S 中的 Y Y Y 可以有不同的属性名,但必须出自相同的域集。
  • R R R S S S 的除运算得到一个新的关系 P ( X ) P(X) P(X)
  • P P P R R R 中满足下列条件的元组在 X X X 属性列上的投影:
    • 元组在 X X X 上分量值 x x x 的象集 Y x Y_x Yx 包含 S S S Y Y Y 上投影的集合
    • R ÷ S = { t r [ X ] ∣ t r ∈ R ∧ Π Y ( S ) ⊆ Y x } R \div S = \{ t_r[X] | t_r \in R \land \Pi_Y(S) \subseteq Y_x \} R÷S={tr[X]trRΠY(S)Yx}
    • Y x Y_x Yx x x x R R R 中的象集, x = t r [ X ] x = t_r[X] x=tr[X]

除操作是同时从行和列角度进行运算

在这里插入图片描述


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

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

相关文章

[visual studio]中,关于如何 【调试】 的问题 及 技巧

我们都知道&#xff0c;不会调试的程序员不是一个合格的程序员。 在初学阶段&#xff0c;由于对于语法的不熟悉&#xff0c;我们可能会写出很多语法错误&#xff0c;无法通过编译&#xff0c;编译器会报错&#xff0c;这种错误很好修改。 但是&#xff0c;随着我们不断敲代码…

当面试官问“你的SQL能力怎么样”时,怎么回答才不会掉进应聘陷阱?

在某平台看到一个比较实际的问题&#xff0c;在这里分享给职场新人。 SQL已经是职场最常用的一种编程语言&#xff0c;所以应聘技术或非技术岗位&#xff0c;都可能会被问道一个问题&#xff1a;你的SQL能力怎么样&#xff1f; 对于职场新人来说&#xff08;SQL高手可以无视下…

JavaScript事件循环

大厂面试题分享 面试题库后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库一、异步执行原理1. 单线程的JavaScript我们知道&#xff0c;JavaScript是一种单线程语言&#xff0c;它主要用来与用户互动&#xff0c;以及操…

50-Jenkins-Lockable Resources插件实现资源锁定

Lockable Resources插件实现资源锁定前言安装插件使用插件资源配置Pipeline中使用前言 用来阻止多个构建在同一时间试图使用同一个资源。这里的资源可能是一个节点、一个代理节点、一组节点或代理节点的集合&#xff0c;或者仅仅是一个用于上锁的名字。如果指定的资源没有在全…

ASP.NET MVC | 创建应用程序

目录 首先 NO.1 No.2 App_Data 文件夹 Content 文件夹 Controllers 文件夹 Models 文件夹 Views 文件夹 Scripts 文件夹 最后 首先 一步一步的来&#xff0c;电脑上需要安装vs2019软件&#xff0c;版本高低无所谓&#xff0c;就是功能多少而已。 长这样的&#xff0…

无公网IP如何外网异地登录访问电商进销存系统?

电商进销存系统软件是电商企业必备的重要软件之一。 集订单管理、货品管理、采购管理等功能于一体&#xff0c;主要帮助广大电商用户实现准确、高效的订单处理及精细化的仓储管理。 电商进销存系统软件一般采用B/S结构&#xff0c;用户可在异地访问系统、查看货品库存及管理订…

第五期(2022-2023)传统行业云原生技术落地调研——金融篇 现已开启

随着数字化浪潮的来临&#xff0c;云原生技术正在改变着各行各业&#xff0c;通过IT变革驱动业务创新发展&#xff0c;促进企业自身以及产业生态的转型升级。 因此&#xff0c;灵雀云联合云原生技术实践联盟&#xff08;CNBPA&#xff09;和行业内头部厂商F5&#xff0c;共同发…

小黑子的线性代数:第一章

线代从入门到入土&#xff1a;一小黑子的线代系列&#xff1a;第一章1. 行列式1.1 二阶行列式1.2 三阶行列式1.3 小结2. 全排列与逆序数2.1 全排列2.2 逆序数3. 对换4. n阶行列式的定义5. 余子式和代数余子式6. 行列式的性质6.1 转置行列式6.2 对换变号6.3 提取公因子6.4 行列式…

华为OD机试C++实现 - 最小步骤数

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

GEE:样本点选择教程

本文记录了在GEE平台上标记样本的技巧和代码脚本&#xff0c;样本点可以用来做土地利用分类、植被提取、水藻提取、冰川提取、农作物提取等应用中。可以应用到的方法包括随机森林&#xff08;RF&#xff09;分类&#xff0c;支持矢量机&#xff08;SVM&#xff09;分类&#xf…

JavaSE之常用关键字学习

文章目录Java常用关键字学习1、static关键字学习1.1 用法一&#xff1a;修饰成员变量1.2 用法二&#xff1a;修饰成员方法1.3 用法三&#xff1a;修饰代码块1.4 用法四&#xff1a;修饰内部类类1.5 单例设计模式2、extends关键字学习2.1 继承的特点2.2 方法重写3、this、super关…

nvm基础命令

nvm基础命令 有了nvm之后就可以进行node下载了。下面举一个简单的例子&#xff1a; nvm version&#xff1a; 查看nvm版本 nvm list&#xff1a;查看本地拥有的node版本 nvm install xxx&#xff1a;安装版本号为xxx的node nvm use xxx&#xff1a;将node版本切换为xxx 以…

微信接口wx.login()、wx.request()中获取的内容不能赋值给全局变量(已解决)

小程序问题总结01 微信接口wx.login()、wx.request()中获取的内容不能赋值给全局变量&#xff08;已解决&#xff09; 在写登录模块的时候&#xff0c;需要使用微信的wx.login()接口获取临时code&#xff0c;并利用临时code向开发者服务器端发送请求&#xff0c;然后获取open…

自动化测试优势和劣势

一、自动化测试概述 软件自动化测试是相对手工测试而存在的&#xff0c;由测试人员根据测试用例中描述的规程一步步执行测试&#xff0c;得到实际结果与期望结果的比较。在此过程中&#xff0c;节省人力、时间或硬件资源&#xff0c;提高测试效率。 二、自动化测试优势&劣…

和日期相关的代码和bug——一道力扣题中的小发现

目录 Day of the Week 题目大意 常规方法 Python代码 Golang代码 C代码 基姆拉尔森公式 Python代码 Golang代码 C代码 使用库函数 Python代码 Golang代码 C代码 Day of the Week Given a date, return the corresponding day of the week for that date. The inp…

Photon Vectorized Engine 学习记录

Photon Hash Aggregation Vectorization Photon Hash Join 的向量化的要点是&#xff1a;使用开放地址法。步骤&#xff1a; 向量化计算 hash 值基于 hash 向量化计算 bucket 下标&#xff0c;得到 bucket index 向量基于 bucket index 向量中记录的下标找到 bucket&#xff…

领导催我优化SQL语句,我求助了ChatGPT。这是ChatGPT给出的建议,你们觉得靠谱吗

作为一个程序员&#xff0c;无论在面试还是工作中&#xff0c;优化SQL都是绕不过去的难题。 为啥&#xff1f;工作之后才会明白&#xff0c;随着公司的业务量增多&#xff0c;SQL的执行效率对程系统运行效率的影响逐渐增大&#xff0c;相对于改造代码&#xff0c;优化SQL语句是…

线上插画培训班有用吗,教你选靠谱的插画课程

线上插画培训班有用吗&#xff0c;教你选靠谱的插画课程&#xff0c;推荐5个靠谱的动漫插画培训课程&#xff0c;各有特色和优势&#xff0c;相信可以给大家一些参考&#xff01; 一&#xff1a;5个靠谱的动漫插画网课 1、轻微课&#xff08;五颗星&#xff09; 主打课程有日…

机器学习:基于逻辑回归对某银行客户违约预测分析

机器学习&#xff1a;基于逻辑回归对某银行客户违约预测分析 文章目录机器学习&#xff1a;基于逻辑回归对某银行客户违约预测分析一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.逻辑回归2.业务理解3.读取数据4.数据理解5.数据准备6.逻辑回归模型训练7.模型评…

【第41天】实现一个简单选择排序

本文已收录于专栏&#x1f338;《Java入门一百例》&#x1f338;学习指引序、专栏前言一、选择排序二、【例题1】1.题目描述2、解题思路3、模板代码三、推荐专栏序、专栏前言 本专栏开启&#xff0c;目的在于帮助大家更好的掌握学习Java&#xff0c;特别是一些Java学习者难以在…