代码之家  ›  专栏  ›  技术社区  ›  aherlambang

功能依赖与规范化

  •  15
  • aherlambang  · 技术社区  · 15 年前

    我试图找到一个伟大的资源来研究功能依赖性和规范化。

    有人知道我应该去哪里吗?我很难区分FD是1NF,2NF还是3NF?

    我一直在阅读维基百科,并使用谷歌搜索找到好的研究,但找不到任何简单的解释。

    也许你们都可以分享一下你们在生活中是如何学习FD和规范化的。

    6 回复  |  直到 7 年前
        1
  •  34
  •   Community Mohan Dere    7 年前

    函数依赖项定义属性之间的函数关系。例如: PersonId 功能决定 BirthDate (通常写为 PersonId -> BirthDate ). 另一种说法是:一个人的任何特定实例都只有一个出生日期。注意,相反的说法可能是真的,也可能不是真的。许多人可能是在同一天出生的。给予 出生日期 我们可以找到很多 拟人的 分享那个日期。

    函数依赖集可用于合成关系(表)。定义 前三种范式,包括Boyce-Codd范式(BCNF)是根据 给定的一组关系如何表示函数依赖关系。第四和第五正规形式涉及多值依赖(另一个鱼缸)。

    这里有一些关于函数依赖性、规范化和数据库设计的免费资源。 学习这些材料时,要准备好锻炼你的大脑和数学技能。

    以下是来自不同学术网站的“幻灯片”。。。

    以下是学术论文。阅读量大,但值得努力。

    如果你真的对这个问题感兴趣,我建议你把钱花在一本好书上 关于关系数据库设计的主题。例如: An Introduction to Database Systems by C.J. Date

        2
  •  7
  •   Agnieszka    12 年前

    函数依赖关系是表列之间的约束。例如,在表person中:

    SSN         | Name         | Date of birth | Address     | Phone number 
    ------------------------------------------------------------------------
    123-98-1234 | Cindy Cry    | 15-05-1983    | Los Angeles | 123-456-7891
    121-45-6145 | John O'Neill | 30-01-1980    | Paris       | 568-974-2562
    658-78-2369 | John Lannoy  | 30-01-1980    | Dallas      | 963-258-7413
    

    这里,SSN(社会保险号码)列中的值确定name、date of birth、address和phone Number列中的值。这意味着如果我们 SSN列中具有相同值的两行 ,然后在“名称”、“出生日期”、“地址”和“电话号码”列中设置值 会是平等的 . 一个SSN123-98-1234的人总是叫辛迪·克鲁,出生于1983年5月15日,以此类推。这种情况叫做 功能依赖 .

    函数依赖的概念被用来定义第二、第三范式和Boyce-Codd范式(BCNF)。

    要阅读更多关于函数依赖性和规范化的内容,可以阅读当时著名的学术书籍,如C.J.Date的数据库简介,或者 books by the H. Garcia-Molina, J.Ullman, J.Widom trio .

    如果你想要一个不那么正式的方法,我们 starting a series of posts on data normalization on our company blog .

        3
  •  4
  •   SBTec    14 年前

    我们可以用一种方式来理解函数依赖性,这种方式假设我们有两个属性,其中一个属性完全依赖于另一个属性,称为函数依赖性。

    以现实生活为例。我们知道每个人都有一个社会保险号码,上面写着这个人的名字。假设Frank是一个人,我们想知道此人的社会保险号,但数据库无法帮助处理此信息,因为可能有许多人叫Frank,但我们可以根据社会保险号确定此人的姓名,因此此人的姓名完全取决于社会保险号。

        4
  •  3
  •   nvogel    15 年前

    函数依赖项不是任何正常形式。正规形式是满足某一给定FDs集的关系的一个性质。

    不要依赖维基百科或谷歌。网上有太多的错误信息和垃圾。尝试:

    Introduction to Database Systems by Chris Date

    Practical Issues in Database Management by Fabian Pascal

        5
  •  3
  •   Premraj    11 年前

    什么是功能依赖?

    函数依赖关系是规范化过程的基础函数依赖关系描述表中属性(列)之间的关系。 换句话说,依赖FD:X†Y意味着Y的值由X的值决定。共享相同X值的两个元组必然具有相同的Y值。 enter image description here

    什么是数据库规范化?

    数据库规范化是一个循序渐进的形式化过程,它允许我们分解数据库表,从而使数据冗余和更新异常(有关更新异常的更多信息,请参见上文)最小化。

    enter image description here Courtesy

        6
  •  0
  •   rashedcs    8 年前

    功能依赖

    函数依赖可以定义为关系中的属性之间的关系。函数依赖用于创建Boyce-Codd Normal形式的关系,缩写为BCNF。如果C和D是关系R的属性,而属性C在功能上决定属性D,则两个属性之间的功能依赖关系可以表示为C->D。

    示例:在person模式下

    人员(身份证、姓名、地址);

    在这里,国家身份在功能上决定了人名。因此,函数依赖关系是national-id->name;

    为了消除冗余,函数依赖性在关系数据库设计中非常重要。