• 数据库范式


    自己开发了一个股票软件,功能很强大,需要的点击下面的链接获取:

    https://www.cnblogs.com/bclshuai/p/11380657.html

    数据库范式

    目录

    1      关键码... 1

    2      依赖... 1

    3      范式... 2

    1        关键码

    1) 超键:在关系中能唯一标识元组的属性或属性集称为关键模式的超键。

    2) 候选键:不含有多余属性的超键称为候选键。也就是在候选键中在删除属性就不是键了。

    3) 主键:用户选作元组标识的候选键称为主键。一般不加说明,键就是指主键。

    4) 外键:如果模式R中属性K是其他模式的主键,那么K在模式R中称为外键。

    2        依赖

    (1)部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。

    举个例子:学生基本信息表R中(学号,身份证号,姓名)当然学号属性取值是唯一的,在R关系中,(学号,身份证号)->(姓名),(学号)->(姓名),(身份证号)->(姓名);所以姓名部分函数依赖与(学号,身份证号);

    (2)完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。

    例子:学生基本信息表R(学号,班级,姓名)假设不同的班级学号有相同的,班级内学号不能相同,在R关系中,(学号,班级)->(姓名),但是(学号)->(姓名)不成立,(班级)->(姓名)不成立,所以姓名完全函数依赖与(学号,班级);

    (3)传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。

    例子:在关系R(学号 ,学院号, 学院地址)中,(学号)->(学院号),学院号->学院地址,所以是传递函数依赖关系;

    (4)多值依赖:属性值之间存在多对多的关系,如下图所示,一个课程,有多个老师上,一个课程,也有多个不同的年级要上,course多值依赖teacher,course多值依赖class。存在多对多或者一对多的关系。

     

    3        范式

    (1)第一范式(1NF):一个关系模式R的所有属性都是不可分的基本数据项。例如学生表中高三2班,这是一个复合属性,需要拆分为年级(高三)和班级(2班)之后,才满足第一范式。

    (2)第二范式(2NF):关系模式R属于第一范式,存在唯一标识记录的主键,不存在非关键字段对任一候选关键字段的部分函数依赖。例如学生表的(学号,身份证号)->(姓名),(学号)->(姓名),(身份证号)->(姓名);所以姓名部分函数依赖与(学号,身份证号);

    (3)第三范式(3NF):关系模式R属于第二范式,且每个非主属性都不传递依赖于键码。例如学生关系表为Student(学号,姓名,年龄,所在学院,学院地点,学院电话),(学号)->(学院号),学院号->学院地址,所以存在传递函数依赖关系。要符合第三范式,要消除传递依赖关系,拆分为两个表格

    学生:(学号,姓名,年龄,所在学院);

    学院:(学院,地点,电话)。

    (4) BC范式(BCNF):关系模式R属于第三范式,不存在任何字段对任一候选关键字段的传递函数依赖,相对于第三范式,就是候选关键字之间不存在传递依赖。例如(仓库ID,存储物品ID,管理员ID,数量),且有一个管理员只在一个仓库工作,一个仓库可以存储多种物品。这个数据库表中存在如下决定关系:

    (仓库ID,存储物品ID) →(管理员ID,数量)

    (管理员ID,存储物品ID) → (仓库ID,数量)

    所以(仓库ID,存储物品ID)和(管理员ID,存储物品ID)都是StorehouseManage的候选关键字,表中的唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系,不满足BCNF范式。

    (仓库ID) → (管理员ID)

    (管理员ID) → (仓库ID)

    总结

    第一范式:消除了复合属性,例如高三2班;

    第二范式:不存在非主属性对主属性的部分依赖。例如(学号,身份证号)->(姓名);

    第三范式,消除了非候选主键属性对候选主键属性的传递依赖。

    BCNF范式:消除候选主键之间的传递依赖关系。

    消除决定因素 | 1NF

    | ↓ 消除非主属性对码的部分函数依赖

    函数依赖 | 2NF

    | ↓ 消除非主属性对码的传递函数依赖

    | 3NF

    | ↓ 消除主属性对码的部分和传递函数依赖

    | BCNF

    | ↓ 消除非平凡且非函数依赖的多值依赖

    | 4NF

    | ↓消除不是由候选码所蕴含的连接依赖

    | 5NF

    自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html
  • 相关阅读:
    我的第一个Node.js项目
    map.keySet()获取map全部的key值
    sql语句的优化
    操作数据库的快捷键
    学习方法(准则)
    input输入框的readonly属性-----http://www.w3school.com.cn/tags/tag_input.asp
    Java反射机制(Reflect)解析-----https://www.cnblogs.com/fzz9/p/7738381.html
    java的动态代理机制详解-----https://www.cnblogs.com/xiaoluo501395377/p/3383130.html
    jQuery入门--- 非常好
    JQuery_九大选择器
  • 原文地址:https://www.cnblogs.com/bclshuai/p/15525762.html
Copyright © 2020-2023  润新知