- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我阅读了关于 3nf 的 wiki https://en.wikipedia.org/wiki/Third_normal_form
是wiki给出的例子
Tournament Winners
Tournament Year Winner Winner Date of Birth
Indiana Invitational 1998 Al Fredrickson 21 July 1975
Cleveland Open 1999 Bob Albertson 28 September 1968
Des Moines Masters 1999 Al Fredrickson 21 July 1975
Indiana Invitational 1999 Chip Masterson 14 March 1977
它表示非主要属性 Winner Date of Birth 通过非主要属性 Winner 传递依赖于候选键 {Tournament, Year}
我认为函数依赖是
for two row X1 , X2 if X1.col1 = X2.col1 and
X1.col2 = X2.col2, then col1 -> col2
我无法理解 Winner Date of Birth->Winner(可能有人生日和名字相同?)获胜者可以 -> 候选 key {Tournament, Year} 给定获胜者姓名 Al Fredrickson,它可能是 1998 年印第安纳邀请赛或 1999 年得梅因大师赛)
那么,它是如何得出结论的呢?
最佳答案
非正式地,一个functional dependency意味着左侧的一个值不能在右侧产生多个值,即使左侧存在于多行中也是如此。1
所以,在维基百科的例子中,有一个函数依赖 Winner -> Winner Date of Birth
,仅仅是因为同一个获胜者不能有不同的出生日期,即使他/她存在于多行中(因为他/她赢得了多项比赛)。
因为...
{Tournament, Year} -> Winner
(因为一场比赛不能有多个获胜者)获胜者 -> 获胜者出生日期
(如上所述)Winner -> {Tournament, Year}
(因为一个人可以赢得多个比赛)...然后 by definition存在传递依赖。
I cannot understand that Winner Date of Birth->Winner(there may be someone who have same birthday and same name?)
你翻转了方向。函数依赖不是“来自”单个值,而是“朝向”它。因此 Winner -> Winner Date of Birth
,但不是 Winner Date of Birth -> Winner
。
顺便说一句,这个模型中不能有两个名字不同的人。一个更好(更现实)的模型可能会使用代理键来识别人,允许重复的名字。
1 符合“函数”的数学概念。无论您“调用”一个函数多少次(即有多少行包含 f.d. 左侧),它总是产生相同的“结果”(f.d. 右侧)。如果它可以产生多个结果,那么它就不是一个函数,而是一个“关系”。
关于database - wiki 示例中的 3nf 函数依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16621446/
在 WSL2 中运行 docker info(在 ArchWSL 和 Ubuntu 20.04 上)我收到以下警告: WARNING: bridge-nf-call-iptables is disab
在一本在线 awk 手册中我找到了例子awk '{ if (NF > max) max = NF } END { print max }' 该程序打印任何输入行上的最大字段数。但我不明白 awk 如何
我有 NC_042565.1 1 1 0 0 1 0 0 1 0 0 0 0 8 3 0 0 0 0 0 0 0 0 0 NC_042565.1 2
我有 NC_042565.1 1 1 0 0 1 0 0 1 0 0 0 0 8 3 0 0 0 0 0 0 0 0 0 NC_042565.1 2
我试图了解两个命令之间的区别是什么(我期望两个命令有相同的结果): 案例一 echo 'one,two,three,four,five' |awk -v FS=, '{NF=3}1' one two
我有这样一个文件: ID1 as;uh;2 ID2 uh;3 jk PASS ID3 PASS ID4 as;uh;PASS kk;3 rt ID5 as ID6 PASS PASS uh 3;4 I
我试图在 $NF 之前打印参数.然而$NF--没有用。解决这个问题的方法是什么?问题是,我不知道我得到了多少参数,所以我总是需要 $NF和之前的arg。 亲切的问候 于尔根 host -t ptr 1
我编写了一个程序,用于读取用户输入的文本文件,文件内部包含 .br 、 .sp 和 等格式化功能.nf. .nf 表示不填充,也意味着当您在 .nf 之后看到任何格式化功能时,它们都应该被忽略,并且应
我有一个数据库,用于存储射击游戏的结果。我将它们放入 3NF 以允许系统扩展。所以它看起来像这样: Player ------------------- GameId integer PlayerId
我有以下文件: cat testing.txt ============== line1 1 line2 2 2 line3 3 3 line4 我可以理解 awk 'NF > 0' testing.
我对以下内容有些困惑: $ echo foo bar baz | awk '{printf "%d:", NF--; print NF}' 3:2 $ echo foo bar baz | awk '
我读了一些教程,但我不明白如何链接各种 promise 来读取文件,但一个接一个,我认为这非常简单,但我不明白。 其想法是打开一个文件,读取另一个文件的文件名,打开该文件,然后启动 Express 服
以下有什么区别 NumberFormat nf = NumberFormat.getInstance(); 和 NumberFormat nf = new NumberFormat() 为什么我们需要
美好的一天! 我是创建数据库的新手...我需要为我的招聘网络应用程序创建一个数据库。 我的数据库架构如下: 注意:我在其他表中包含了申请人 ID...例如考试、面试、考试类型。 我是否违反了任何规范化
我在关系模型中有以下关系(表) Person person_id, first_name, last_name, address Student person_id, matr_nr Teac
我查看了一些重要的论坛,例如 SMF 论坛、PhpBB 或 VBulleting 论坛,我意识到它们不在 3rd FN 中。 他们有很多 NULL 字段,例如,在 SMF 论坛中,成员行可以将所有这些
我需要从文件中的每条记录中获取最后 4 个唯一值。文件以逗号分隔,不同记录的列数可以不同。我的输入文件。 $ cat last_cols.txt F F,B F,B,A F,B,A,F F,B,A,F
我正在阅读 The UNIX Programming Environment 和第 4.4 节,关于 awk,有这个示例代码: awk ' FILENAME != prevfile {
我有一些关于 DB2 NF 模式的客户问题。谷歌对此知之甚少。 我已经能够 推断 以下,但我并不完全相信它...... NF 和 CM(兼容模式)是大型机上 DB2 v8 上的设置。 CM 中 z/O
我正在尝试优化一个旨在获取大型数据集的库,并且 然后对其应用不同的操作。现在图书馆正在工作,我想要 来优化它。 我的印象是非严格评估允许 GHC 组合操作,以便数据只迭代一次 编写函数的顺序,以便对参
我是一名优秀的程序员,十分优秀!