【大二必看】数据函数依赖及其相关概念解析【数据库范式基础】

1. 函数依赖

在学生信息表中,我们有两个字段:学号和学生姓名。学号是唯一的,而学生姓名可能重复。这里的函数依赖关系是 学号 -> 学生姓名。这意味着,给定一个学号,我们可以确定一个唯一的学生姓名。这种依赖关系说明了学号决定了学生姓名,而学生姓名的重复性表明它不能单独决定学号。
名字比较抽象,但是不用理会,只需明白什么是函数依赖即可。

学号 学生名字
1 张三
2 李四
3 王三
4 张三

如何理解函数依赖呢?看到一个数据库表,分析字段,有:学号、学生姓名
看到学号是没有重复的是主键,学生姓名有重复的张三
诀窍:重复的依赖不重复的

学号->学生姓名    (学生姓名依赖于学号)。

2. 完全函数依赖

在学生选课信息表中,我们有三个字段:学号、课程号和成绩。这里的成绩依赖于学号和课程号的组合,即 (学号,课程号)-> 成绩。这是一个完全函数依赖的例子,因为成绩只能通过同时知道学号和课程号来确定。单独的学号或课程号都不能提供足够的信息来确定成绩。

学号 课程号 成绩
1 3001 100
1 3002 97
2 3001 86
2 3002 99

完全函数依赖:成绩依赖于(学号+课程号)才能确定成绩是谁的,是哪一门课程的成绩。
满足:

  • 通过学号不能推出课程。
  • 通过课程号也不能推出成绩
  • 就是课程完全依赖(学号+课程号)。

3. 部分函数依赖

在学生身份信息表中,我们有学号、身份证号和姓名三个字段。姓名依赖于学号和身份证号的组合,即 (学号,身份证号)-> 姓名。然而,如果我们只知道学号或身份证号中的一个,我们仍然可以确定学生的姓名。这种情况下,学号和身份证号中的任何一个都可以推出姓名,所以这是一个部分函数依赖的例子。

学号 身份证号 姓名
1 3001 张三
2 3002 王五
3 3003 马琦

部分函数依赖就是满足函数依赖的条件(姓名依赖学号和身份证号),然后不满足完全函数依赖,也就是(学号+身份证)其中一个可以推出名字,所以不满足完全函数依赖,因为其中的学号或者身份证均可以推出姓名所以,满足部分依赖。

4. 传递函数依赖

在商品信息表中,我们有商品 ID、商品名称和商品类型三个字段。这里存在两个直接的依赖关系:商品类型依赖于商品名称,商品名称依赖于商品 ID。这两个依赖关系合起来形成了一个传递依赖,即 商品 ID -> 商品类型。这意味着,尽管商品类型不是直接依赖于商品 ID,但它通过商品名称间接依赖于商品 ID。

商品 id 商品名称 商品类型
1201 电脑主机 电子器件
1211 泡面 食物
9921 面包 食物
1234 矿泉水 饮品

传递依赖就是 x->y ; y->z 可以得出结论:x->z;这就是传递依赖,解释上述表

商品类型依赖商品名称, 商品名称依赖商品 id,所以商品类型依赖于商品 id;

通过这些具体的例子和表格,我们可以更清晰地理解函数依赖的不同类型,以及它们在数据库设计中的重要性。这些概念帮助我们避免数据冗余和更新异常,确保数据的一致性和准确性。在设计数据库时,理解并应用这些原则是至关重要的。

相关推荐

  1. 数据库基础概念范式范式总结

    2024-04-07 21:08:03       53 阅读
  2. 数据知识分享:数据产业概念

    2024-04-07 21:08:03       64 阅读
  3. 数据仓库相关概念

    2024-04-07 21:08:03       67 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-07 21:08:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-07 21:08:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-07 21:08:03       82 阅读
  4. Python语言-面向对象

    2024-04-07 21:08:03       91 阅读

热门阅读

  1. 使用iPhone/安卓手机代替门禁卡

    2024-04-07 21:08:03       130 阅读
  2. 干了三年外包。。。忘了什么是CICD。。。

    2024-04-07 21:08:03       35 阅读
  3. Mongodb 入门

    2024-04-07 21:08:03       43 阅读
  4. Windows SDK(五)按钮静态文本与编辑框控件

    2024-04-07 21:08:03       43 阅读
  5. 用tkinter来实现扫雷游戏

    2024-04-07 21:08:03       69 阅读