精华内容
下载资源
问答
  • 数据库单目运算
    更多相关内容
  • 常用的关系运算 最常用的操作——数据查询 关系代数(高级语言)——抽象的查询语言,以集合运算为基础,以关系(表)为运算对象 关系运算的三大要素——运算对象,运算符,运算结果; 关系代数的运算对象和运算结果...

    常用的关系运算

    最常用的操作——数据查询

    关系代数(高级语言)——抽象的查询语言,以集合运算为基础,以关系(表)为运算对象

    关系运算的三大要素——运算对象,运算符,运算结果;

    关系代数的运算对象和运算结果都是关系

    关系运算种类与运算符

    一.运算种类:

    1.传统关系运算,以关系为集合,对水平方向进行运算(行运算),包括,交,并,差,广义笛卡尔积

    并——并异去余;

    差——前同后去

    交——共同存有

    广义笛卡尔积——两集合做笛卡尔乘积

    2.专门关系运算

    1.选择运算(限制运算),对二维表进行水平分割

    2.投影运算,对二维表进行垂直分割,删掉重复记录构成新关系

    3.连接运算,自然连接与等值连接

    自然连接与等值连接的区别

    1)等值连接中相等的属性可以是不同属性,而自然连接中相等的属性必须相同

    2)自然连接连接结果必须去除重复属性,而等值连接的结果不需要去除重复属性

    3)自然连接用于有公共属性的情况,若两个关系没有公共属性,则它们不能进行自然连接,而等值连接无此要求,自然连接常用于多表数据调用

    4.除运算,分投影,分组对应,同时从行和列的角度进行操作(区别于限制运算和投影运算的单纯从行或单纯从列的角度考虑问题)

    除运算的计算过程

    1)将被除关系的属性分为象集属性和结果属性,与除关系相同的属性归于象集,不同的属性归于结果集

    2)在除关系中,在与被除关系相同的属性(象集属性)上投影,得到除目标数据集

    3)将被除关系分组结果属性值相同的记录分为一组

    4)观察每个组,若它的象集属性值中包括除目标数据集,则对应的结果属性值应该属于除法运算结果集,并去掉与原被除关系相同的分组

    二.4种关系运算符

    集合运算符,专门关系运算符,算术运算符,逻辑运算符

    思考问题

    1.交,并,差运算的两个关系必须满足什么条件?
    两关系具有相同的n目(列/属性),且相应的属性取自同一个域

    2.除运算的结果表示什么含义?
    在关系R中选出与关系S中相同属性相对应的其他属性所对应的值

    3.等值连接和自然连接之间的区别是什么?

    1.自然连接中相等的属性必是相同的属性,等值连接中相等的属性可以是相同的属性也可以是不同的属性

    2.自然连接结果必须去除相同属性,而等值连接的结果不需要去除重复属性

    3.自然连接用于有公有属性的情况,若两个关系没有公共属性,则它们不能进行自然连接,而等值连接无此要求,自然连接常用于多表数据调用

    程序

    用between选出学生中年龄在20到23岁的同学

    ​select *form student
    where Sage between 20 And 23

    将学号为3的学生的成绩升序排序(ASC为升序排序,DESC为降序排序)

    ​select *from student 
    where Cno = '3'
    ORDER by Grade ASC
    展开全文
  • 数据库关系运算

    千次阅读 2019-11-28 14:06:53
    文章目录 1 关系 1 域( domain) 2 笛卡尔积(cartesian product) 3 关系( relation) 2 关系运算 1 选择 2 投影 3 连接 1 关系 1 域( domain) 定义:域是一组具有相同数据类型的值的集和   例如,自然数、...

    1 关系

    1 域( domain)

    定义:域是一组具有相同数据类型的值的集和
      例如,自然数、整数、{0,1)、{男,女”(用来表示性别的取值范围)、{学士,“硕士,博士“(表示学位的取值范围)、大于等于0且小于等于100的正整数(用来表示百分制成绩取值范图)长度不超过字节的字符串集合等,都可以是域。
      空值(用null表示)是所有可能的域的一个取值,表名值未知或不存在。例如,对于表示学位的取值域,某员工的学位为空值nul,表示不知道该员工所获得的学位,或该员工没有获得学位;对于表示成绩的取值域,某学生的成绩为空值null,表示不知道该学生的成绩,或该学生没有成绩。

    2 笛卡尔积(cartesian product)

    定义:给定一组域 D 1 , D 2 , . . . , D n D_1, D_2,...,D_n D1,D2,...,Dn ,它们之中可以有相同的域, D 1 , D 2 , . . . , D n D_1, D_2,...,D_n D1,D2,...,Dn笛卡尔积为:
    D 1 × D 2 × . . . . . . × D n = { ( d 1 , d 2 , . . . , d n ) ∣ d i ∈ D i , i = 1 , 2 , . . . . . . , n } D_1\times D_2\times ...... \times D_n=\{(d_1, d_2,...,d_n)|d_i\in D_i, i=1, 2, ......, n \} D1×D2×......×Dn={(d1,d2,...,dn)diDi,i=1,2,......,n}
    其中,集合中的每一个元素 ( d 1 , d 2 , . . . , d n ) (d_1, d_2,...,d_n) (d1,d2,...,dn) 成为一个n元组,简称为元组(touple);元素的每一个值 d i d_i di 成为一个分量(component)。

    例:给定两个域:
      学生的姓名集合:D1={李小勇,刘方晨,王红敏}
      课程的名称集合:D2={数据库系统概论’,操作系统“}
    则D,D2的笛卡儿积为
      D1XD2={(‘李小勇’,‘数据库系统概论’),(‘李小勇’,‘操作系统’)
          (‘刘方晨’,‘数据库系统概论’),(‘刘方晨’,‘操作系统’),
          ('王红敏’,‘数据库系统概论’),(‘王红敏’,‘操作系统’)}
    该笛卡儿积的基数M=3×2=6,即D1×D2共有6个元组,如图所示

    姓名课程名称
    李小勇数据库系统概论
    李小勇操作系统
    刘方晨数据库系统概论
    刘方晨操作系统
    王红敏数据库系统概论
    王红敏操作系统

    3 关系( relation)

    定义:D1XD2×…×Dn的子集称为在域D1,D2,…,Dn上的关系,表示为
            r(D1,D2,…,Dn)
    其中:表示关系的名字;n是关系的目或度( degree)。
      当n=1时,称该关系为单元关系;当n=2时,称该关系为二元关系。
      关系是笛卡儿积的有限子集,所以关系也是一个二维表,表的每行对应于关系的一个元组,表的每列对应于关系的一个域。由于域可以相同,为了区别就必须给每列起一个名字,称为属性(attribute)。n目关系共有n个属性。
      一般来说,D1,D2,…,Dn的笛卡儿积是没有实际语义的。只有它能够构成一个关系的某个子集才有实际含义。例如,对于上图中的6个元组,如果“李小勇”同学只修读了“数据库系统概论”课,没有修读“操作系统”课,那么第1个元组有实际含义,而第2个元组没有实际含义。因此,我们也称表的一行(即关系的一个元组)是由有关联的若干值成,它对应于现实世界中一个实体的若干属性的值的集合。

    2 关系运算

    1 选择

      选择操作时在关系r中查找满足给定谓词(即选择条件)的所有元组,记作:
    σ p ( r ) = { t ∣ t ∈ r ∧ P ( t ) } \sigma_p(r)=\{t|t\in r\wedge P(t)\} σp(r)={ttrP(t)}

    其中:P(predicate)表示谓词(即选择条件),它是一个逻辑表达式,取值为“真”或“假”。

    例1:在数据库ScoreDB(Class表)中,查找2015级的所有班级情况
    σ g r a d e = 2015 ( C l a s s ) \sigma_{grade=2015}(Class) σgrade=2015(Class)

    例2:在数据库ScoreDB(Student表)中,查找所有2000年及以后出生的女学生情况
    σ y e a r ( b i r t h d a y ) ≥ ′ 200 0 ′ ∧ s e x = ′ 女 ′ ( S t u d e n t ) \sigma_{year(birthday)\geq '2000'\wedge sex='女'}(Student) σyear(birthday)2000sex=(Student)

    2 投影

    关系是一个二维表,对它的操作可以从水平(行)的角度进行,即选择操作,也可以从纵向(列)的角度进行,即投影操作。
    关系 r 上的投影是从 r 中选出若干属性列组成新的关系。记作:

    ∏ A ( r ) = { t [ A ] ∣ t ∈ r } \prod_A(r) = \{ t[A] | t\in r\} A(r)={t[A]tr}

    其中:A 为关系 r 的属性集合。

    例1:在数据库ScoreDB(Student表)中,查找所有学生的姓名和民族

    ∏ s t u d e n t N a m e , n a t i o n ( S t u d e n t ) \prod_{studentName,nation}(Student) studentName,nation(Student)

    例2:在数据库ScoreDB(Student表)中,查找所有“蒙古族”学生的姓名和籍贯
    ∏ s t u d e n t N a m e , n a t i o n ( σ n a t i o n = ′ 蒙 古 族 ′ ( S t u d e n t ) ) \prod_{studentName,nation}(\sigma_{nation}='蒙古族'(Student)) studentName,nation(σnation=(Student))

    3 连接

    连接也称也称为 θ \theta θ 连接。假设连接条件为谓词 θ \theta θ ,记为 A o p B A op B AopB ,其中A,B分别为关系 r 和 s 中的度数相等且可比的连接属性集,op 为比较运算符。则 θ \theta θ 连接是从两个关系的笛卡尔积中选取连接属性间满足谓词 θ \theta θ 的所有元组。记作:
    r ⋈ θ s = { t r ⋅ t s ∣ t r ∈ r ∧ t s ∈ s ∧ ( r . A o p s . B ) } r\bowtie _{\theta}s=\{t_r\cdot t_s|t_r\in r\wedge t_s\in s\wedge (r.A\quad op\quad s.B)\} rθs={trtstrrtss(r.Aops.B)}

    θ \theta θ 运算就是从关系 r 和 s 的笛卡尔积 r × s r×s r×s 中,选取 r 关系在 A 属性集上的值与 s 关系在 B 属性集上的值满足谓词 θ \theta θ 的所有元组,即:
    r ⋈ θ s = σ θ ( r × s ) r\bowtie _{\theta}s=\sigma_{\theta}(r\times s) rθs=σθ(r×s)

    θ \theta θ 连接运算中有两种最常用、最重要的连接,一种是等值连接(equjoin),另一种是自然连接(natural join)。 θ \theta θ 为等值比较谓词的连接运算称为等值连接。

    自然连接是一种特殊的等值连接,它要求两个参与连接的关系具有公共的属性集,即 R ∩ S ≠ ∅ R\cap S\neq \varnothing RS= ,并在这个公共属性集上进行等值连接;同时,还要求将连接结果中的重复属性列去除掉,即在公共属性集中的列中保留一次。
    R ∩ S = { A 1 , A 2 , . . . . . . , A k } R\cap S=\{A_1,A_2,......,A_k\} RS={A1,A2,......,Ak},则自然连接可记作:
    r ⋈ s = { t r ⋅ t s ∣ t r ∈ r ∧ t s ∈ s ∧ ( r . A 1 = s . A 1 ∧ r . A 2 = s . A 2 ∧ . . . ∧ r . A k = s . A k ) } r\bowtie s=\{t_r\cdot t_s|t_r\in r\wedge t_s\in s\wedge (r.A_1= s.A_1\wedge r.A_2= s.A_2\wedge ...\wedge r.A_k= s.A_k)\} rs={trtstrrtss(r.A1=s.A1r.A2=s.A2...r.Ak=s.Ak)}

    例:在数据库ScoreDB中查询所有2016级的“蒙古族”学生的姓名

    此查询涉及两个表Student,Class,且两表通过外键classNo关联,因此,自然连接可表示为:
    S t u d e n t ⋈ C l a s s = σ S t u d e n t . c l a s s N o = C l a s s . c l a s s N o ( S t u d e n t × C l a s s ) Student\bowtie Class=\sigma_{Student.classNo=Class.classNo}(Student\times Class) StudentClass=σStudent.classNo=Class.classNo(Student×Class)

    因此,最后的查询为:
    ∏ s t u d e n t N a m e ( σ n a t i o n = ′ 蒙 古 族 ′ ( S t u d e n t ) ⋈ σ g r a d e = 2016 ( C l a s s ) ) \prod_{studentName}(\sigma_{nation='蒙古族'}(Student)\bowtie \sigma_{grade=2016}(Class)) studentName(σnation=(Student)σgrade=2016(Class))

    = ∏ s t u d e n t N a m e ( σ S t u d e n t . c l a s s N o = C l a s s . c l a s s N o ( σ n a t i o n = ′ 蒙 古 族 ′ ( S t u d e n t ) × σ g r a d e = 2016 ( C l a s s ) ) ) =\prod_{studentName}(\sigma_{Student.classNo=Class.classNo}(\sigma_{nation='蒙古族'}(Student)\times \sigma_{grade=2016}(Class))) =studentName(σStudent.classNo=Class.classNo(σnation=(Student)×σgrade=2016(Class)))

    = ∏ s t u d e n t N a m e ( σ S t u d e n t . c l a s s N o = C l a s s . c l a s s N o ( σ n a t i o n = ′ 蒙 古 族 ′ ∧ g r a d e = 2016 ( S t u d e n t × C l a s s ) ) ) =\prod_{studentName}(\sigma_{Student.classNo=Class.classNo}(\sigma_{nation='蒙古族'\wedge grade=2016}(Student\times Class))) =studentName(σStudent.classNo=Class.classNo(σnation=grade=2016(Student×Class)))

    = ∏ s t u d e n t N a m e ( σ S t u d e n t . c l a s s N o = C l a s s . c l a s s N o ∧ n a t i o n = ′ 蒙 古 族 ′ ∧ g r a d e = 2016 ( S t u d e n t × C l a s s ) ) =\prod_{studentName}(\sigma_{Student.classNo=Class.classNo\wedge nation='蒙古族'\wedge grade=2016}(Student\times Class)) =studentName(σStudent.classNo=Class.classNonation=grade=2016(Student×Class))

    = ∏ s t u d e n t N a m e ( σ n a t i o n = ′ 蒙 古 族 ′ ∧ g r a d e = 2016 ( σ S t u d e n t . c l a s s N o = C l a s s . c l a s s N o ( S t u d e n t × C l a s s ) ) ) =\prod_{studentName}(\sigma_{nation='蒙古族'\wedge grade=2016}(\sigma_{Student.classNo=Class.classNo}(Student\times Class))) =studentName(σnation=grade=2016(σStudent.classNo=Class.classNo(Student×Class)))

    = ∏ s t u d e n t N a m e ( σ n a t i o n = ′ 蒙 古 族 ′ ∧ g r a d e = 2016 ( S t u d e n t ⋈ C l a s s ) ) =\prod_{studentName}(\sigma_{nation='蒙古族'\wedge grade=2016}(Student\bowtie Class)) =studentName(σnation=grade=2016(StudentClass))

    展开全文
  • 对关系数据库进行查询统计时,需要查询到用户感兴趣的数据,这就需要对关系及关系间进行一定的运算。本篇主要讲述关系运算和关系的完整性约束,理解关系操作的含义,了解传统的集合运算,掌握关系代数中基本关系运算...

    对关系数据库进行查询统计时,需要查询到用户感兴趣的数据,这就需要对关系及关系间进行一定的运算。本篇主要讲述关系运算和关系的完整性约束,理解关系操作的含义,了解传统的集合运算,掌握关系代数中基本关系运算。通过本篇的学习,读者应该能掌握以下内容:

    ● 集合的合并、交集、求差、乘积操作

    ● 关系运算的选择、投影、连接操作

    ● 关系的完整性约束

    ● 关系的范式

    关系运算

    关系模型是目前用的最多的数据模型,具有严格的数学理论基础,其主要数学理论基础就是集合运算。关系模型提供了一系列操作的定义,这些操作称为关系代数操作。它可分为两类,一类是集合操作;另一类是关系专用的操作。

    1、集合操作

    集合操作是把关系看作元组的集合来进行传统的集合运算,其运算结果仍是关系,前提是参与运算的两个元组具有相同的结构,即含有相同的属性,且对应属性的值域相同。下面对传统的集合运算合并、交集、求差、乘积运算进行逐一说明。

    集合运算——合并

    假设有A、B两个集合

    A = {1,3,5,9}, B = {2,3,5,7}

    由所有属于集合A或属于集合B的元素组成的集合,叫做集合A与集合B的合并,也称为集合A与集合B的并集,记作:

    A U B = {1,2,3,5,7,9}

    由此可以推出,设R和S是两个关系,则R U S是合并R和S,合并后的结果仍是关系,结果表中的元组或属于R,或属于S,如图2-10所示:

    fdad01d1f4896cdc67d6a4368a487f79.png图 2-10 集合的合并运算

    集合运算——交集

    假设有A、B两个集合

    A = {1,3,5,9}, B = {2,3,5,7}

    由所有属于集合A且属于集合B的元素组成的集合,叫做集合A与集合B的交集,记作:

    A n B = {3,5}

    由此可以推出,设R和S是两个关系,则R n S是R和S的交集,求交后的结果仍是关系,结果表中的元组属于R且属于S,如图2-11所示:

    0414274bc0bd8b8a17a91972b8e9b5e9.png图 2-11 集合的交集运算

    集合运算——求差

    假设有A、B两个集合

    A = {1,3,5,9}, B = {2,3,5,7}

    由所有属于集合A且不属于集合B的元素组成的集合,叫做集合A与集合B的差,记作:

    A - B = {1,9}

    由此可以推出,设R和S是两个关系,则R - S是求R和S的差,求差后的结果仍是关系,结果表中的元组属于R且不属于S,如图2-12所示:

    476bfc892b3364e39feb0a46fad9ed31.png图 2-12 集合的求差运算

    集合运算——乘积

    假设有A、B两个集合

    A = {1,3,5}, B = {2,3}

    用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合叫做A与B的乘积(笛卡尔乘积),记作:

    A X B = {(1,2),(1,3),(3,2),(3,3),(5,2),(5,3)}

    由此可以推出,设R和S是两个关系,则R X S是求R和S的笛卡尔乘积,结果表是R和S的结构之连接,即前n个属性来自R,后m个属性来自S,属性个数等于n+m。结果表的值是由R中的每个元组连接S中的每个元组构成元组的集合。如图2-13所示:

    e740ad4f55f74ce2ad7680b579de0c24.png图 2-13 集合的乘积运算

    2、专门的关系运算

    专门的关系运算包括选择、投影、连接和除四种运算。下面介绍常用的三种运算选择、投影和连接。

    选择运算

    选择运算是单目运算,它从一个关系R中选择出满足给定条件的所有元组,并同R具有相同的结构。图2-14所示为由关系R选出编号为02的老师。

    284712ecca70d8ff28dff0cd0dcc24d7.png图 2-14 专门关系运算—选择运算

    投影运算

    投影运算也是单目运算,它从一个关系R所有属性中选择某些指定属性,组成一个新的关系。选择运算选取关系的某些行,而投影运算选取关系的某些列,是从一个关系出发构造其垂直子集的运算。图2-15所示为由关系R中选出所有老师的姓名和简介。

    e0f6cc3c72795cd8b416a3cd38c4d8c4.png图 2-15 专门关系运算—投影运算

    连接运算

    连接运算属于二目运算,是从两个关系元组的所有组合中选取满足一定条件的元组,由这些元组形成连接运算的结果关系,其中条件表达式涉及到两个关系中属性的比较,该表达式的取值为真或假。图2-16所示为对课程表和老师表在老师编号相等的条件下进行了连接,在新的关系中仅选出名称、姓名两个属性,即在新关系中再进行一次投影运算,这样得到了所有老师编号为01的课程名称和老师姓名。

    e5d2d441ee73f5986200e10405dae3ed.png图 2-16 专门关系运算—连接运算

    关系的完整性

    关系模型的完整性主要分为以下四类。

    (1)域完整性。关系模型中,每列属性的取值应是域所确定的值。即属性的取值范围应在其值集或值域内。例如在课程表中,名称属性值是汉字或英文字符串,所以不能取出数值来,同时,名称是课程的主要特征,要求必须有课程名称,即名称属性不能为空。

    (2)实体完整性。关系模型中每一个表就是一个实体,在现实世界中,实体是可区分的,即它们具有唯一标识。实体映射到关系模型后,每个表也应该具有唯一的标识,这个标识称为主键,用于标识表中唯一的元组。主键不能为空,如果主键为空,则说明存在某个不可标识的实体,而这和唯一标识相矛盾,即不存在这样的实体。

    (3)参照完整性。实体完整性是一个表内的约束,参照完整性是在不同表之间或同一表的不同元组之间的约束。例如课程表中的老师编号属性给出了老师的编号,但在课程表中并没有老师的信息,要想得到老师的信息,就必须通过表中的老师编号到老师表中去查找。由于编号在老师表中是主键,这样能够找到唯一的一行与该老师编号相对应。对于老师表中的编号属性来说,通常定义是该表的外关键字,简称外键,同时,编号属性也是老师表的主键。如图2-17所示:

    7498cc4a99a84074245029056adea48b.png图 2-17 老师表与课程表的参照约束

    从上图可以看出,课程表中老师编号属性的每一个值都能在老师表中找到唯一的一行元组,即能找到唯一的老师与其对应,则称为参照是完整的,否则,则称为参照不完整的。

    (4)用户定义的完整性。用户定义的完整性用于满足用户对数据的语义要求,是由用户对数据库施加的约束条件。例如,课程视频长度不能超过30分钟、老师必须具备专业知识等约束条件。

    关系模型的规范化

    关系模型的规范化是指面对一个现实问题,如何选择一个比较好的关系模式集合。

    当一个关系模式设计的不够规范时,就会出现插入异常、删除异常、冗余过多等问题。例如图2-18学生选课表中,其中编号、姓名属性是表的主键,在实际应用中,该表会存在插入、删除、冗余过多等异常。

    59fab6f526fd1811f7b00bf8c73ec9c4.png图 2-18 学生选课表

    (1)插入异常。比如一个刚刚成立的系,但尚未招收学生,则因属性编号、姓名为空,导致系名、系主任等信息无法存入数据库;同样,没被学生选修的课程也无法存入数据库。

    (2)删除异常。如一个系的学生毕业了,删除学生记录时会将系主任、系名等信息一起删除。

    (3)冗余过多。如一个系的系名、系主任姓名都有与该系学生每门课的成绩出现的次数一样多。既浪费存储空间又要付出很大的代价来维护数据库的完整性。当系主任更换后,必须逐一修改该系学生选修课程的每一个元组。

    从上面的例子可以看出,一个好的关系模式不应当发生插入异常和删除异常,且数据冗余尽可能地少。引起数据冗余及其操作异常的原因在于关系的结构。现实世界中的许多事物都可以独立存在、独立地被标识、相互间又密切关联。如果将多个本该是独立存在地、具有不同标识的事物用一个关系描述,那么不可能找到这样一个属性集,它既是这个关系的标识,又是包含在其中的各个不同事物的标识,正是由于关系模式的属性之间存在过多的数据依赖,从而出现了数据冗余和更新的异常。

    数据依赖是指关系中属性值之间的相互联系,它是现实世界属性间相互联系的体现,是数据之间的内在联系,是语义的体现。现在人们已经提出了许多种类型的数据依赖,其中最重要的是函数依赖。

    函数依赖比较容易理解,且普遍地存在于现实生活中。在学生选课表中,因一个编号仅对应一个学生,一个学生只在一个系注册学习。因而,当编号的值确定后,姓名和所在系的值也就唯一确定了。当关系模式属性间存在这个关系时,我们就说姓名和所在系的值依赖于学号,即编号决定姓名和系名。

    在学生选课表中除了姓名和系名依赖编号外,还存在其它数据依赖,如一个系只有一个系主任,因此系名依赖于系主任;再如,每个学生学习一门课都有一个成绩,因此成绩依赖于学号和课程名称。因为学生选课表中数据依赖过多,导致发生更新异常和数据冗余问题。

    解决办法是将关系模式分解成若干只有单一数据依赖的关系模式,因为关系模式学生选课表出现异常问题是由于属性之间存在过多的数据依赖造成的,分解的目的就是减少属性间过多的数据依赖,已期消除关系模式中出现的异常。学生选课表关系模式分解成如图2-19所示的三个表。

    c03945bf83ff9a5af51fe1d62927a439.png图 2-19 规范化后的三个关系表

    学生选课表规范化后,分解为学生表、成绩表、系表三个表,解决了关系模式多数据依赖的问题,每个表都是单一的数据依赖。规范化后虽然解决了数据冗余、更新异常的问题,但检索效率明显降低了,需要多表查询。因此,一个关系是否要进行规范化,应当本着具体问题具体分析的原则进行处理。事实上,如果在一个关系上主要执行的是查询操作,未必一定要规范化,通过适当地增加一些关系或者在应用程序中注意到更新一致性的维护,非规范化的弊端是可以避免的。但是,如果在关系上要进行频繁的更新操作,还是要采用规范化的方式比较好。

    关系的范式

    前面讨论了关系模式没有规范化所引起的异常问题,因此规范化对数据库设计有着重要的意义。所以建立科学的,规范的数据库是需要满足一些约束条件的,在关系型数据库中这些约束条件被称为范式。根据一个关系满足数据依赖程度的不同,人们提出了第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。当然从理论上研究还有其他范式,但实际意义不大,这里不作讨论。

    (1)第一范式(1NF)。表中所有的属性都是不可再分的。如学生选课表中系名和系主任就不能合并为一个属性,因为违反了第一范式。当前所有的关系数据库都支持第一范式,即要求表属性都是原子属性,即属性的不可分性。

    (2)第二范式(2NF)。要求在满足第一范式的前提下,除去所有不完全依赖于主键的属性(部分依赖)。如学生选课表中,就存在不满足第二范式的问题,系名和系主任属性部分依赖于编号属性(主键),因此存在更新异常、数据冗余的问题。第二范式要求所有非主属性(不属于主键的属性)都完全依赖于主键。

    (3)第三范式(3NF)。要求关系在满足第二范式的前提下,除去所有传递依赖于主键的属性,即关系中不含有对主键的传递依赖。传递依赖就是间接依赖。例如在关系R(学号,宿舍,费用)中,费用就间接依赖于学号。

    举报/反馈

    展开全文
  • 学习数据库(3)——关系运算

    千次阅读 2019-04-25 20:14:20
    1. 关系运算 (1)基本运算 选择 Select——元组 根据选择谓词p在关系R中查找元组,用σp( R )表示 选择谓词 选择连词:与∧,或∨,非¬ 包含比较符的表达式 投影 Project——属性 根据保留属性A在关系R中保留...
  • 一、关系数据结构及形式化定义 1、关系 关系模型的数据结构非常简单,只包含单一的数据结构——关系。... 笛卡儿积是域上的一种集合运算。 定义:给定一组域D1,D2,...,Dn,允许其中某些域是相同的,D...
  • 关系数据库 一、关系数据结构及形式化定义 1.关系 单一的数据结构----关系 现实世界的实体以及实体间的各种联系均用关系来表示 逻辑结构----二维表 从用户角度,关系模型中数据的逻辑结构是一张二维表 建立在集合...
  • 数据库运算----选择,投影,连接

    千次阅读 2013-05-15 21:35:20
    选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表中选出满足条件的行形成一个新表作为运算结果。 选择运算的记号为 σF(R)。 其中σ是选择运算符,下标F是一个条件表达式,R是被操作的表。 投影...
  • 关系数据库、关系代数和关系运算

    千次阅读 2020-04-22 09:53:53
    1、传统的集合运算 传统的集合运算是二目运算,包括并、交、差、笛卡儿积四种运算。以下以oracle为例: 1.1 并(union) R∪S 其结果仍为n目关系,由属于R或属于S的元组组成。 –结果:2条记录 select * from emp ...
  • 数据库概论

    2022-03-09 15:22:43
    数据库第一章 绪论第二章 关系数据库 第一章 绪论 一、 数据:数据库中存储的基本对象,描述事物的符号记录。 数据库(DB):长期储存在计算机内、有组织、可共享的大量数据。【基本特征:永久存储、有组织、可...
  •  最近在对公司以前的一个项目进行调整时发现,数据库中有很多表示“多选状态标识”的字段。“多选状态标识”可能描述的并不十分准确,在这里用我们项目中的几个例子进行说明一下。  例一:表示某个商家是否支持...
  • 数据库知识点总结

    2022-04-28 13:03:16
    数据库知识点
  • 数据库原理】关系代数

    万次阅读 多人点赞 2020-08-15 10:22:56
    投影运算也是单目运算,关系R上的投影是从R中选择出若干属性列,组成新的关系,即对关系R在垂直方向上进行运算,从左到右按照指定的若干属性及顺序(意味着我们可以改变属性列的顺序,实际上关系中的属性列是可以...
  • 关系数据库——关系代数

    千次阅读 多人点赞 2021-04-05 10:56:41
    文章目录关系数据库关系代数关系代数的分类及其运算符传统的集合运算专门的关系运算 关系数据库 关系代数 关系模型与其它模型相比,最有特色的是它的数据库语言 这种语言灵活方便、表达能力和功能都很强 目前关系...
  • 2.4 关系运算

    千次阅读 2021-06-03 20:55:37
    关系运算 SQL语言是继承了关系代数和关系演算各自的优点所形成的。常用的关系运算是关系代数和关系演算。关系演算可分为关系元组演算和关系域演算。关系代数则是以集合代数为基础发展起来的,它是以关系为运算对象的...
  • 数据库原理 1,概念介绍 数据库(Database):有组织、冗余度小,可共享、 数据独立性高、易扩展的数据集合。 数据库管理系统(DBMS):位于用户与操作系统 之间的一层数据管理软件,用于组织、存取和维护数据。有时...
  • 数据库系统:第二章关系数据库

    千次阅读 2022-03-29 13:27:10
    关系数据库的型与值 关系数据库也有型和值之分,关系数据库的型称为关系数据库模式,是对关系数据库的描述(若干域的定义,在这些域上定义的若干关系模式) 关系数据库的值是这些关系模式在某一时刻对应的关系的...
  • 数据库四、表中数据的增删查改 四、表中数据的增删查改 (一)简单查询:select select* from stu; //从 stu 表中查看所有信息 (二)新增:insert (1)新增单个记录: insert into stu values(1001,'张三',18,'男...
  • B:选择 选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表中选出满足条件的行形成一个新表作为运算结果 也就是说使用比较运算符、逻辑运算符,挑出满足条件的元组,运算出结果! 例如我们在表一中...
  • 数据库学习笔记

    千次阅读 2022-03-08 10:23:20
    数据库知识一栏,配有ppt,但是中间从查询优化到并发控制没时间补了。
  • 达梦数据库逻辑结构物理结构详解
  • 专门的关系运算: 主要针对关系数据库环境进行专门设计的,不仅涉及关系的行(元组或记录),也涉及关系的列(属性)。**比较运算符和逻辑运算符实现辅助专门的关系运算符操作。**有时需要关系(表)本身进行运算,...
  • 数据库系统原理总结

    多人点赞 热门讨论 2021-12-06 22:43:20
    文章目录数据库系统原理一.绪论1.数据库的四个基本概念2.数据库管理三个阶段3.数据模型4.数据库系统的结构二.关系数据库1.关系数据结构及形式化法定义2.关系代数二.数据库安全性1.数据库不安全因素2.数据库安全性...
  • 数据库系统

    千次阅读 2022-03-28 13:56:57
     · 数据操作(集合运算和关系运算)  · 数据库语言(SQL)  · 数据库的控制功能(并发控制、恢复、安全性、完整性)  · 数据仓库和分布式数据库基础知识 数据库系统的三级结构 1.用户级数据库 用户级数据库...
  • 数据库原理及应用

    千次阅读 2022-02-14 12:36:27
    1.1 数据库系统概述 1.1.1 数据库的四个基本概念 1 数据(Data) 数据是数据库中存储的基本对象 数据的定义:描述事物的符号记录 数据的种类:文本、图形、图像、音频、视频、学生的档案记录、货物...
  • 数据库基础 绪论 数据库系统概述 4个基本概念 数据(data) 定义:描述事物的符号。数据的含义称为数据的雨衣,数据与其语义是密不可分的。 数据库(DataBase,DB) 定义:数据库是长期存储在计算机内、有组织的、可...
  • ORB-SLAM:一种通用的(全能的)精确的单目SLAM系统 原文链接:https://blog.csdn.net/weixin_42905141/article/details/102857958 原文作者翻译的非常好,我在原文作者文章的基础上加入了自己的一些阅读...
  • 第5章 数据库管理 学习目的和要求  了解数据库管理的内容  理解数据事务概念及特点  掌握数据库安全管理技术  理解并掌握数据库备份与恢复技术  理解数据库并发执行的问题  掌握...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,170
精华内容 3,668
热门标签
关键字:

数据库单目运算