精华内容
下载资源
问答
  • 关系数据库设计理论

    2018-06-30 19:25:14
    关系数据库设计理论ppt 针对一个具体问题,设计一个好的关系数据库系统,关键是要构造一个适合于它的数据模式(数据库逻辑设计问题) 数据库逻辑设计主要解决的问题: 应该构造几个关系模式 每个关系模式包括哪些...
  • 关系数据库设计理论
  • 关系数据库设计理论 优秀程序员推荐 数据库相关信息
  • 关系数据库设计理论,关于关系数据库模式的设计,关系数据库规范化理论、数据依赖的公理系统
  • 一、关系数据库设计理论 函数依赖 异常 范式 二、ER图 实体的三种联系 表示出现多次的关系 联系的多向性 表示子类 一、关系数据库设计理论 函数依赖 记 A->B 表示 A 函数决定 B,也可以说 B 函数依赖...

    目录

    一、关系数据库设计理论

    函数依赖

    异常

    范式            

    二、ER图

    实体的三种联系

    表示出现多次的关系

    联系的多向性

    表示子类


    一、关系数据库设计理论

    函数依赖

    记 A->B 表示 A 函数决定 B,也可以说 B 函数依赖于 A。

    如果 {A1,A2,... ,An} 是关系的一个或多个属性的集合,该集合函数决定了关系的其它所有属性并且是最小的,那么该集合就称为键码。

    对于 A->B,如果能找到 A 的真子集 A',使得 A'-> B,那么 A->B 就是部分函数依赖,否则就是完全函数依赖。

    对于 A->B,B->C,则 A->C 是一个传递函数依赖。

    异常

    以下的学生课程关系的函数依赖为 {Sno, Cname} -> {Sname, Sdept, Mname, Grade},键码为 {Sno, Cname}。也就是说,确定学生和课程之后,就能确定其它信息。

    Sno Sname Sdept Mname Cname Grade
    1 学生-1 学院-1 院长-1 课程-1 90
    2 学生-2 学院-2 院长-2 课程-2 80
    2 学生-2 学院-2 院长-2 课程-1 100
    3 学生-3 学院-2 院长-2 课程-2 95

    不符合范式的关系,会产生很多异常,主要有以下四种异常:

    • 冗余数据:例如 学生-2 出现了两次。
    • 修改异常:修改了一个记录中的信息,但是另一个记录中相同的信息却没有被修改。
    • 删除异常:删除一个信息,那么也会丢失其它信息。例如删除了 课程-1 需要删除第一行和第三行,那么 学生-1 的信息就会丢失。
    • 插入异常:例如想要插入一个学生的信息,如果这个学生还没选课,那么就无法插入。

    范式

    范式理论是为了解决以上提到四种异常。

    高级别范式的依赖于低级别的范式,1NF 是最低级别的范式。

    1.第一范式(1NF)

    属性不可分。

    2.第二范式(2NF)

    每个非主属性完全函数依赖于键码。

    可以通过分解来满足。

    分解前

    Sno Sname Sdept Mname Cname Grade
    1 学生-1 学院-1 院长-1 课程-1 90
    2 学生-2 学院-2 院长-2 课程-2 80
    2 学生-2 学院-2 院长-2 课程-1 100
    3 学生-3 学院-2 院长-2 课程-2 95

    以上学生课程关系中,{Sno, Cname} 为键码,有如下函数依赖:

    • Sno -> Sname, Sdept
    • Sdept -> Mname
    • Sno, Cname-> Grade

    Grade 完全函数依赖于键码,它没有任何冗余数据,每个学生的每门课都有特定的成绩。

    Sname, Sdept 和 Mname 都部分依赖于键码,当一个学生选修了多门课时,这些数据就会出现多次,造成大量冗余数据。

    分解后

    关系-1

    Sno Sname Sdept Mname
    1 学生-1 学院-1 院长-1
    2 学生-2 学院-2 院长-2
    3 学生-3 学院-2 院长-2

    有以下函数依赖:

    • Sno -> Sname, Sdept
    • Sdept -> Mname

    关系-2

    Sno Cname Grade
    1 课程-1 90
    2 课程-2 80
    2 课程-1 100
    3 课程-2 95

    有以下函数依赖:

    • Sno, Cname -> Grade

    3.第三范式(3NF)

    非主属性不传递函数依赖于键码。

    上面的 关系-1 中存在以下传递函数依赖:

    • Sno -> Sdept -> Mname

    可以进行以下分解:

    关系-11

    Sno Sname Sdept
    1 学生-1 学院-1
    2 学生-2 学院-2
    3 学生-3 学院-2

    关系-12

    Sdept Mname
    学院-1 院长-1
    学院-2 院长-2

    二、ER图

    Entity-Relationship,有三个组成部分:实体、属性、联系。

    用来进行关系型数据库系统的概念设计。

    实体的三种联系

    包含一对一,一对多,多对多三种。

    • 如果 A 到 B 是一对多关系,那么画个带箭头的线段指向 B;
    • 如果是一对一,画两个带箭头的线段;
    • 如果是多对多,画两个不带箭头的线段。

    下图的 Course 和 Student 是一对多的关系。

    表示出现多次的关系

    一个实体在联系出现几次,就要用几条线连接。

    下图表示一个课程的先修关系,先修关系出现两个 Course 实体,第一个是先修课程,后一个是后修课程,因此需要用两条线来表示这种关系。

    联系的多向性

    虽然老师可以开设多门课,并且可以教授多名学生,但是对于特定的学生和课程,只有一个老师教授,这就构成了一个三元联系。

    表示子类

    用一个三角形和两条线来连接类和子类,与子类有关的属性和联系都连到子类上,而与父类和子类都有关的连到父类上。

     

     

     

     

     

    展开全文
  • 关系数据库设计理论主要包括三个方面的内容:函数依赖、范式和模式设计。 2. 规范化 2.1 函数依赖 设关系模式R(U,F),U是属性全集,F是U上的函数依赖集,X和Y是U的子集,如果对于R(U)的任何一个可能的关系r,对于X...

    1. 引言

    关系数据库设计理论主要包括三个方面的内容:函数依赖、范式和模式设计。

    2. 规范化

    2.1 函数依赖

    设关系模式R(U,F),U是属性全集,F是U上的函数依赖集,X和Y是U的子集,如果对于R(U)的任何一个可能的关系r,对于X的每一个具体值,Y都有唯一的具体值与之对应,则称X函数决定Y,或Y函数依赖于X,记作X -> Y。称X为决定因素,Y为依赖因素。
    例如关系模式学生成绩
    U={sno,sn,age,dept,mn,cno,score}
    F={sno->sn,sno->age,sno->dept,dept->mn,sno->mn,(sno,cno)->score}
    (1)函数依赖与属性间的联系类型有关:
    在一个关系模式中,如果属性X与Y有1:1联系时,则存在函数依赖X->Y,Y->X。
    如果属性X与Y有m:1的联系时,则只存在函数依赖X->Y,例如SNO->AGE。
    如果属性X与Y有m:n的联系时,则X与Y之间不存在任何函数依赖关系。

    2.2 完全/部分函数依赖和传递/非传递函数依赖

    设有关系模式R(U),U是属性全集,X和Y是U的子集,X->Y,并且对于X的任何一个真子集都不能推出Y,则称Y对X完全函数依赖(Full Function Dependency),反之为部分函数依赖(Partial Functional Dependency)。

    设有关系模式R(U),U是属性全集,X,Y,Z是U的子集,若X->Y(Y不属于X),Y不能推出X,又Y->Z,则成Z对X传递函数依赖(Transitive Functional Dependency)。

    3. 范式

    规范化的基本思想是消除关系模式中的数据冗余,消除数据依赖中不合适的部分,解决数据插入、删除和修改时发生的异常现象。关系数据库的规范化过程中为不同程度的规范化要求设立的不同的标准或准则称为范式。一个低一级的范式的关系模式,通过模式分解可以转换为若干个高一级的范式的关系模式的集合,这种过程叫做规范化。

    范式关系

    各范式之间的关系
    在下面的讨论中我们以学生成绩表SDC(SNO,CNO,AGE,DEPT,MN)为例进行逐级标准化。

    3.1 第一范式

    如果关系模式R所有属性均为简单属性,即每个属性都是不可再分的,则称R为第一范式。

    3.2 第二范式

    如果关系模式属于第一范式,R(U,F)中的所有非主属性都完全函数依赖于任意一个候选关键字,则称关系R属于第二范式。即不存在某非主属性对某候选关键字存在部分函数依赖。

    第二范式规范化:由于(SNO,CNO)->AGE,SNO->AGE,所以存在AGE对(SNO,CNO)部分函数依赖。分解时遵循的原则是“一事一地”,让一个关系只描述实体或实体间的关系。如果多于一个实体或联系,则进行投影分解。
    SD(SNO,SN,AGE,DEPT,MN),描述学生实体
    SC(SNO,CNO,SCORE),描述学生与课程的联系

    分解之后SD与SC都属于第二范式,他们通过SC中的外键SNO相联系,需要时进行自然连接就能恢复成原来的关系。

    3.3 第三范式

    如果关系模式R属于第二范式,R(U,F)中的所有非主属性对任何候选关键字都不存在传递函数依赖,则称R是属于第三范式。
    第三范式规范化:第三范式规范化是指把第二范式通过投影分解,消除非主属性对候选关键字的传递函数依赖。,同样遵循“一事一地”原则。
    由于第二范式中,SD表中SNO->DEPT,DEPT->MN,所以存在传递函数依赖,将关系模式SD可分解为
    S(SNO,SN,AGE,DEPT)描述学生实体
    D(DEPT,MN)描述系的实体

    3.4 BC范式

    如果关系模式R属于第一范式,且所有的函数依赖X->Y(Y不包含于X),决定因素X都包含了R的一个候选码,则称R属于BC范式。其特点如下:
    (1)所有非主属性对每一个候选码都是完全函数依赖
    (2)所有的主属性对每一个不包含他的候选码都是完全函数依赖
    (3)没有任何属性完全函数依赖于非码的任何一组属性
    (4)若R属于第三范式,R未必属于BC范式,下面举例说明。
    设有关系模式SCS(SNO,SN,CNO,SCORE)并假设学生不重名。唯一非主属性SCORE对键不存在部分函数依赖,也不存在传递函数依赖,所以SCS是第三范式,但是由于(SNO,CNO)->SN,SNO->SN,所以他不属于BC范式。
    BC范式的规范化:是指把第三范式通过投影分解成BCNF关系模式集合。由于SCS中冗余的原因是存在两个实体:学生实体和选课实体,将他们分解为如下关系
    S(SNO,SN)描述学生实体
    SC(SNO,CNO,SCORE)描述学生与课程的联系

    另外还有第四范式和第五范式,等需要的时候再总结。

    展开全文
  • 关系数据库设计理论 (非重点,了解概念就好) 尽量存放单一信息,不要有多余信息。

    关系数据库设计理论

    非重点!!!考得不多,了解概念就好
    非重点!!!考得不多,了解概念就好

    较重要的:
    
    1.【属性保持条件】
    2.【无损连接性】
    3.【依赖保持性】
    
    第一范式,第二范式,第三范式的解释
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    尽量存放单一信息,不要有多余信息。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    学号决定姓名↑↑↑↑ 要求是一对一或多对一,不能一对多,不能y有不同值。
    在这里插入图片描述
    什么是函数依赖?
    :属性之中的对应关系。(不完整)
    在这里插入图片描述
    x=(学号,姓名)——>y=(性别)↑↑↑↑
    其中因为其实只有学号就可以决定了性别,姓名是多余的,
    所以是部分函数依赖
    x=(学号,课程号)——>y=(成绩)
    因为学号和课程号共同起到了作用,
    所以是完全函数依赖
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    通过F可以推出其他的依赖关系↑↑↑↑
    在这里插入图片描述
    F是F+的真子集

    若F为关系模式R(U)的函数依赖集,我们把F以及所有被F逻辑蕴涵的函数依赖的集合称为F的闭包,记为F+
    被F逻辑蕴涵:设有关系模式R(U)及其函数依赖集F,如果对于R的任一个满足F的关系r函数依赖X→Y都成立,则称F逻辑蕴涵X→Y,或称X→Y可以由F推出。例:关系模式 R=(A,B,C),函数依赖集F={A→B,B→C}, F逻辑蕴涵A→C

    在这里插入图片描述
    函数依赖集F的闭包,里面的元素还是函数依赖(X→Y这种)。
    函数依赖集F的闭包包括F自身,加上能从F中通过Armstong公理推导出的新的函数依赖
    在这里插入图片描述
    在这里插入图片描述
    【不需要掌握 ↑↑↑↑↑↑↑】


    5.3关系模式的规范化

    在这里插入图片描述
    在这里插入图片描述
    第一范式是最低标准的。
    BC范式处于第四范式和第三范式之间。
    在这里插入图片描述
    从低级到高级要满足哪三个条件?↓↓↓↓↓↓
    在这里插入图片描述
    1.【属性保持条件】↑↑↑↑↑↑
    2.【无损连接性
    3.【依赖保持性

    较重要较重要较重要


    在这里插入图片描述
    上面1,2的意思:完全函数决定全体属性,这样的属性叫做码
    (学号决定课程表的全体属性)
    在这里插入图片描述


    第一范式

    消除了结构字段,消除了多值字段
    在这里插入图片描述
    每个属性都是原子的,不可再分的。
    在这里插入图片描述
    ↑↑↑第一张表不是第一范式。列的方向出现多值or行的方向出现多值都不满足

    第二范式

    在第一范式的基础上消除了非主属性对主属性的部分依赖
    在这里插入图片描述
    在这里插入图片描述
    这张表就满足第二范式↑↑↑↑

    第三范式

    在第二范式的基础上消除了传递依赖
    在这里插入图片描述
    一般第三范式就足够了。


    BC范式

    主属性内部也不能出现传递依赖
    在这里插入图片描述

    展开全文
  • 关系数据库设计理论之自定义函数(数据库设计) 自定义函数  用户自定义函数(user-defined-function,UDf)是一种MySQL的扩展途径,其用法与内置函数相同 自定义函数的两个必要条件(参数和返回值之间没有必然...

    关系数据库设计理论之自定义函数(数据库设计)

    自定义函数

             用户自定义函数(user-defined-function,UDf)是一种MySQL的扩展途径,其用法与内置函数相同

    自定义函数的两个必要条件(参数和返回值之间没有必然联系)

    (1)      参数

    (2)      返回值(在MySQL的函数中,所有的函数都要有返回值)

    函数可以返回任意类型的值,同样可以接收这些类型的参数

    创建自定义函数

    CREATE FUNCTION function_name

    RETURNS(这个指的是返回值的类型)

    {STRING|INTEGER|REAL|DECIMAL}

    Routine_body(函数体)

     

    关于函数体

    (1)      函数体由合法的SQL语句构成

    (2)      函数体可以是简单的SELECT或INSERT语句

    (3)      函数体如果为复合结构(也就是有多条语句)则使用BEGIN….END语句

    (4)      复合结构可以包含声明、循环、控制结构

    创建一个带有两个参数的自定义函数

    通过函数来实现向一个表中添加一条记录


    DELIMITER //    意思是将//设置为结束标志

    当函数体包含多条语句时,需要放在BEGIN和AND之间

    删除函数 DROPFUNCTION[IF NOT EXISTS] function_name;

     

    数据库中的存储过程

     

    MySQL命令的执行流程

     

    SQL命令-----MySQL引擎-----语法正确------可识别命令------执行结果------客户端

     

    成功输入SQL语句以后,MySQL引擎会对输入的SQL命令进行分析,查看是否正确,如果正确再进行编译,编译成MySQL引擎可以识别的命令,之后开始执行,并且将执行的结果返回给客户端

     

    存储过程

             存储过程是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理

    存储过程的优点

    (1)    增强SQL语句的功能和灵活性(2)实现较快的执行速度(3)减少网络流量

    创建存储过程

             CREATE

             [DEFINER={user|CURRENT_USER}]

             PROCEDUREsp_name([proc_parameter[,…]])

             [characteristic…]routine_body

             pro_parameter:

             [IN|OUT|INOUT]param_name type;

    IN:表示该参数的值必须在调用存储过程时指定

    OUT:表示该参数的值可以被存储过程改变,并且可以返回

    INOUT:表示该参数在调用时指定,并且可以被改变和返回

    过程体:

             过程体由合法的SQL语句构成;

             过程体可以是增、删、改、查、多表连接等SQL语句;

    过程体如果为复合结构则使用BEGIN….END语句

    复合结构可以包含声明、循环、控制结构

     

    存储过程的调用 CALL sp_name([parameter[,…]]);

                                         CALLso_name[()]   也就是说没有参数时,这里的()可以要也可以不要

    创建一个没有参数的存储过程

    创建一个包含IN类型的参数的存储过程(注意:这个参数的名字,不能和数据表中的记录名相同)

    删除存储过程   DROP        PROCEDURE [IF EXISTS] sp_name;

     

    从数据表中删除id不固定的记录,并且返回剩余的记录数(第二个参数是要用来返回的,所以要定义成OUT型)

    那里的INTO表示要将COUNT(id)的结果放入到userNums中

    传一个变量来接收OUT类型的返回值

    @nums这种写法代表的就是变量  像这种前边有一个@符号的变量称之为用户变量 它是和MySQL的客户端绑定的   只对当前的客户端生效 

    在BEGIN….AND之间的变量称之为局部变量

     

    存储过程与自定义函数的区别

    (1)      存储过程实现的功能要复杂一些;而函数的针对性更强

    (2)      存储过程可以返回多个值;函数只能由一个返回值

    (3)      存储过程一般独立的来执行;而函数可以作为其他SQL语句的组成部分来出现

     



    展开全文
  • 4.1.1 关系模式中的数据依赖 概念回顾 关系模式的形式化定义 4.1.2 数据依赖对关系模式的影响 什么是数据依赖 关系模式的简化表示 数据依赖与关系模式 4.1.3 有关概念 函数依赖 码 外码 4.2 范式 4.2.1 第一范式(1...
  • 4.1.1 关系模式中的数据依赖 4.1.2数据依赖对关系模式的影响 4.1.3 有关概念 4.2 范式 4.2.1 第一范式( 1NF) 4.2.2 第二范式( 2NF) 4.2.3 第三范式( 3NF) 4.2.4 BC范式( BCNF) 4.3 关系模式的规范化
  • ,An} 是关系的一个或多个属性的集合,该集合函数决定了关系的其它所有属性并且是最小的,那么该集合就称为键码。 对于 A->B,如果能找到 A 的真子集 A',使得 A'-> B,那么 A->B 就是部分函数依赖,否则...
  • 1. 关系数据库设计理论 1.1 函数依赖 记 A->B 表示 A 函数决定 B,也可以说 B 函数依赖于 A。 如果 {A1,A2,... ,An} 是关系的一个或多个属性的集合,该集合函数决定了关系的其它所有属性并且是最小的,那么...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,963
精华内容 785
关键字:

关系数据库设计理论