SQL-显示 R 不是 Boyce-Codd 范式

标签 sql database-normalization functional-dependencies

R = (J,K,L,M,N)具有一组函数依赖项 {J->KL,LM->N,K->M,N->J} .

我理解BCNF的定义。我相信不存在微不足道的功能依赖,也可能没有 super 键。我不确定第二部分。您将如何从字母中确定 super 键?将不胜感激在这方面的一些投入。

最佳答案

如果所有函数依赖的左侧属性的闭包包含所有关系属性 (J, K, L, M, N),则该关系将采用 Boyce-Codd 范式 (BCNF)。 .换句话说,每个函数依赖的左侧属性都包含一个键。

让我们分析你的函数依赖:

  • J -> KL .然后K -> M ,然后 LM -> NN -> J .所以,J -> KL满足 BCNF。
  • LM -> N .然后N -> J ,然后 J -> KL
    就是这样,我们拥有所有属性。
  • K -> M .这个功能
    依赖显然违反了 BCNF,因为我们不能得到
    来自一组依赖项的更多属性。
  • N -> J .然后J -> KLK -> M .满足BCNF。

  • 因此,第三个依赖项违反了 BCNF 和 K属性不是键本身。

    关于SQL-显示 R 不是 Boyce-Codd 范式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19780489/

    相关文章:

    MySQL Join 语句将两个表中的数据放入 datagridview

    mysql - MYSQL DB规范化和查询索引

    mysql - MYSQL 5.7 中的原生 JSON 支持 : what are the pros and cons of JSON data type in MYSQL?

    database - 函数依赖的最小覆盖

    relational-database - 不保留函数依赖的分解

    SQL 将范围拆分为单独的行

    php - 如何获取 mysql 数据库更新以在 PHP session 中触发重新身份验证

    mysql - 将数字限制为 MySQL 中的最大值

    database - 正常化;如何明智地确定一个字段的存在是否依赖于主要属性?

    haskell - 具有 Haskell 函数依赖性的不明确类型变量