From 66d63de8b875ff9be79763fb9bbed93f183403cb Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Fri, 9 Mar 2018 14:28:34 +0800 Subject: [PATCH] auto commit --- notes/数据库系统原理.md | 7 +++---- pics/923896c1-937e-4a38-b8a6-cec3040b4e2a.jpg | Bin 0 -> 22528 bytes 2 files changed, 3 insertions(+), 4 deletions(-) create mode 100644 pics/923896c1-937e-4a38-b8a6-cec3040b4e2a.jpg diff --git a/notes/数据库系统原理.md b/notes/数据库系统原理.md index 0fb4a9b1..d4e9586e 100644 --- a/notes/数据库系统原理.md +++ b/notes/数据库系统原理.md @@ -179,13 +179,13 @@ MySQL InnoDB 采用的是两阶段锁协议。在事务执行过程中,随时 # 范式 -记 A->B 表示 A 函数决定于 B,也就是 B 函数依赖于 A。 +记 A->B 表示 A 函数决定于 B,也可以说 B 函数依赖于 A。 如果 {A1,A2,... ,An} 是关系的一个或多个属性的集合,该集合决定了关系的其它所有属性并且是最小的,那么该集合就称为键码。 对于函数依赖 W->A,如果能找到 W 的真子集使得 A 依赖于这个真子集,那么就是部分依赖,否则就是完全依赖; -以下关系中,Sno 表示学号,Cname 表示课程名,Sname 表示学生姓名,Sdept 表示学院,Mname 表示院长姓名。函数依赖为 (Sno, Cname) -> (Sname, Sdept, Mname)。注:实际开发过程中,不会出现这种表,而是每个实体都放在单独一张表中,然后实体之间的联系表用实体 id 来表示。 +以下关系中,Sno 表示学号,Sname 表示学生姓名,Sdept 表示学院,Cname 表示课程名,Mname 表示院长姓名。函数依赖为 (Sno, Cname) -> (Sname, Sdept, Mname)。注:实际开发过程中,不会出现这种表,而是每个实体都放在单独一张表中,然后实体之间的联系表用实体 id 来表示。

@@ -232,14 +232,13 @@ MySQL InnoDB 采用的是两阶段锁协议。在事务执行过程中,随时

- ## 第三范式 (3NF) 非主属性不传递依赖于键码。 上述 S1 存在传递依赖,Mname 依赖于 Sdept,而 Sdept 又依赖于 Sno,可以继续分解。 -

+

## BC 范式(BCNF) diff --git a/pics/923896c1-937e-4a38-b8a6-cec3040b4e2a.jpg b/pics/923896c1-937e-4a38-b8a6-cec3040b4e2a.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ee440e1d87ade0c79cfc7b20747accb46464eaef GIT binary patch literal 22528 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 p=bkJbIPg=0H(Btb!#me(-;vZN{w

_