Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
beginnersbook-zh
提交
9c2b5410
B
beginnersbook-zh
项目概览
OpenDocCN
/
beginnersbook-zh
10 个月 前同步成功
通知
0
Star
107
Fork
30
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
beginnersbook-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
9c2b5410
编写于
8月 29, 2019
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2019-08-29 11:53:56
上级
45ea93b4
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
39 addition
and
32 deletion
+39
-32
docs/dbms/32.md
docs/dbms/32.md
+3
-2
docs/dbms/33.md
docs/dbms/33.md
+6
-6
docs/dbms/34.md
docs/dbms/34.md
+15
-9
docs/dbms/35.md
docs/dbms/35.md
+1
-1
docs/dbms/36.md
docs/dbms/36.md
+14
-14
未找到文件。
docs/dbms/32.md
浏览文件 @
9c2b5410
...
...
@@ -4,10 +4,11 @@
当表的属性唯一地标识同一表的另一个属性时,表的属性被认为是彼此依赖的。
例如:假设我们有一个包含属性的学生表:
Stu_Id,Stu_Name,Stu_Age。这里 Stu_Id 属性唯一地标识学生表的 Stu_Name 属性,因为如果我们知道学生 ID,我们可以告诉与之相关的学生姓名。这被称为函数依赖,可以写成 Stu_Id-
>
Stu_Name,或者我们可以说 Stu_Name 在函数上依赖于 Stu_Id
。
例如:假设我们有一个包含属性的学生表:
`Stu_Id`
,
`Stu_Name`
,
`Stu_Age`
。这里
`Stu_Id`
属性唯一地标识学生表的
`Stu_Name`
属性,因为如果我们知道学生 ID,我们可以告诉与之相关的学生姓名。这被称为函数依赖,可以写成
`Stu_Id -> Stu_Name`
,或者我们可以说
`Stu_Name`
在函数上依赖于
`Stu_Id`
。
**正式**
:
如果表的列 A 唯一地标识同一表的列 B,那么它可以表示为 A-
>
B(属性 B 在函数上依赖于属性 A)
如果表的列
`A`
唯一地标识同一表的列
`B`
,那么它可以表示为
`A -> B`
(属性
`B`
在函数上依赖于属性
`A`
)。
### 函数依赖的类型
...
...
docs/dbms/33.md
浏览文件 @
9c2b5410
...
...
@@ -2,14 +2,14 @@
> 原文: [https://beginnersbook.com/2015/04/trivial-functional-dependency-in-dbms/](https://beginnersbook.com/2015/04/trivial-functional-dependency-in-dbms/)
如果属性集包含
该属性,则属性对一组属性的依赖性称为普通
函数依赖性。
如果属性集包含
某属性,则该属性对一组属性的依赖性称为平凡
函数依赖性。
**符号**
:如果
B 是 A 的子集,则 A -
>
B
是平凡的函数依赖。
**符号**
:如果
`B`
是
`A`
的子集,则
`A -> B`
是平凡的函数依赖。
以下依赖
性也是平凡的:A-
>
A
&
B-
>
乙
以下依赖
也是平凡的:
`A -> A`
和
`B -> B`
。
**例如**
:考虑一个包含两列
Student_id 和 Student_Name
的表。
**例如**
:考虑一个包含两列
`Student_id`
和
`Student_Name`
的表。
{Student_Id,Student_Name} -
>
Student_Id 是一个平凡的函数依赖,因为 Student_Id 是{Student_Id,Student_Name}的子集。这是有道理的,因为如果我们知道 Student_Id 和 Student_Name 的值,那么可以唯一地确定 Student_Id
的值。
`{Student_Id, Student_Name} -> Student_Id`
是一个平凡的函数依赖,因为
`Student_Id`
是
`{Student_Id, Student_Name}`
的子集。这是有道理的,因为如果我们知道
`Student_Id`
和
`Student_Name`
的值,那么可以唯一地确定
`Student_Id`
的值。
另外,Student_Id -
>
Student_Id
&
Student_Name -
>
Student_Name 也是平凡的依赖关系。
\ No newline at end of file
另外,
`Student_Id -> Student_Id`
和
`Student_Name -> Student_Name`
也是平凡的依赖关系。
\ No newline at end of file
docs/dbms/34.md
浏览文件 @
9c2b5410
...
...
@@ -2,17 +2,23 @@
> 原文: [https://beginnersbook.com/2015/04/non-trivial-functional-dependency-in-dbms/](https://beginnersbook.com/2015/04/non-trivial-functional-dependency-in-dbms/)
如果函数依赖
性 X-
>
Y 在 Y 不是 X
的子集的情况下成立,那么这种依赖性称为非平凡的函数依赖性。
如果函数依赖
`X -> Y`
在
`Y`
不是
`X`
的子集的情况下成立,那么这种依赖性称为非平凡的函数依赖性。
**例如**
:
具有三个属性的员工表:emp_id,emp_name,emp_address。
具有三个属性的员工表:
`emp_id`
,
`emp_name`
,
`emp_address`
。
以下函数依赖是非平凡的:
emp_id -
>
emp_name(emp_name 不是 emp_id 的子集)
emp_id -
>
emp_address(emp_address 不是 emp_id 的子集)
另一方面,以下依赖性是微不足道的:
{emp_id,emp_name} -
>
emp_name [emp_name 是{emp_id,emp_name}的一个子集]
参考:
[
平凡的函数依赖
](
https://beginnersbook.com/2015/04/trivial-functional-dependency-in-dbms/
"Trivial functional dependency in DBMS with example"
)
。
+
`emp_id -> emp_name`
(
`emp_name`
不是
`emp_id`
的子集)
+
`emp_id -> emp_address`
(
`emp_address`
不是
`emp_id`
的子集)
另一方面,以下依赖性是平凡的:
+
`{emp_id, emp_name} -> emp_name`
(
`emp_name`
是
`{emp_id, emp_name}`
的一个子集)
参考:
[
平凡的函数依赖
](
https://beginnersbook.com/2015/04/trivial-functional-dependency-in-dbms/
)
。
**完全非平凡 FD**
:
**完全非平凡 FD**
:
如果 FD X-
>
Y 在 X 交点 Y 为空的情况下保持为真,则该依赖性被认为是完全非平凡的函数依赖性。
\ No newline at end of file
如果 FD
`X -> Y`
在
`X`
交
`Y`
为空的情况下为真,则该依赖性被认为是完全非平凡的函数依赖。
docs/dbms/35.md
浏览文件 @
9c2b5410
...
...
@@ -15,7 +15,7 @@
| M2222 | 2009 | Black |
| M2222 | 2009 | Red |
这里的列
`manuf_year`
和颜色彼此独立并依赖于
`bike_model`
。在这种情况下,这两列
据
说是多值的,取决于
`bike_model`
。这些依赖关系可以表示如下:
这里的列
`manuf_year`
和颜色彼此独立并依赖于
`bike_model`
。在这种情况下,这两列
可以
说是多值的,取决于
`bike_model`
。这些依赖关系可以表示如下:
```
bike_model ->> manuf_year
...
...
docs/dbms/36.md
浏览文件 @
9c2b5410
...
...
@@ -2,27 +2,27 @@
> 原文: [https://beginnersbook.com/2015/04/transitive-dependency-in-dbms/](https://beginnersbook.com/2015/04/transitive-dependency-in-dbms/)
如果函数依赖性由两个函数依赖性间接形成,则称其是
可传递的。对于例如
如果函数依赖性由两个函数依赖性间接形成,则称其是
传递的。例如:
X -
>
如果以下三个函数依赖项成立,则 Z
是传递依赖:
`如果以下三个函数依赖项成立,则`
X -> Z
`
是传递依赖:
*
X-
>
Y
*
Y 没有 -
>
X.
*
Y-
>
Z
*
`
X -> Y
`
*
`
Y !-> X
`
*
`
Y -> Z
`
**注意:**
传递依赖只能在三个或更多属性的关系中发生。这种依赖性有助于我们在 3NF(
3
<
sup
>
rd
<
/sup
>
Normal Form
)中对数据库进行标准化。
**注意:**传递依赖只能在三个或更多属性的关系中发生。这种依赖性有助于我们在 3NF(
第三范式
)中对数据库进行标准化。
**示例**:让我们举一个例子来更好地理解它:
|
**
书**
|
**作者
**
|
**Author_age**
|
|
权力的游戏 | 乔治 R.马丁
| 66 |
|
哈利波特 | JK 罗琳
| 49 |
|
死于光明
| George R. R. Martin | 66 |
| **
Book** | **Author
** | **Author_age** |
|
Game of Thrones | George R. R. Martin
| 66 |
|
Harry Potter | J. K. Rowling
| 49 |
|
Dying of the Light
| George R. R. Martin | 66 |
{书} -
>
{作者}
(如果我们知道这本书,我们知道作者姓名)
`
{Book} ->{Author}
`
(如果我们知道这本书,我们知道作者姓名)
{作者}没有 -
>
{书}
`
{Author} !-> {Book}
`
{作者} -
>
{} Author_age
`
{Author} -> {Author_age}
`
因此,根据
**传递依赖的规则**
:{Book} -
>
{Author_age}应该持有,这是有道理的,因为如果我们知道书名,我们就可以知道作者的年龄。
\ No newline at end of file
因此,根据**传递依赖的规则**:`
{Book} -> {Author_age}
`
应该成立,这是有道理的,因为如果我们知道书名,我们就可以知道作者的年龄。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录