【问题标题】:Normal Form - 4th Normal Form范式 - 第四范式
【发布时间】:2015-04-28 21:13:00
【问题描述】:

我有这些数据需要放入第三和第四范式。

我了解范式的基础知识,但我对第 3 和第 4 范式感到困惑,我在网上查过但仍然不明白。

我正在创建一个正在被我的系统使用的数据库。

【问题讨论】:

  • 您无法根据数据的 sn-p 判断如何将某些内容放入 3NF(或 4NF,就此而言);它们基于属性之间的关系,您没有解释。
  • 3NF背后的基本思想是避免冗余;因此,例如,如果某些字段仅基于用户(如姓名、电子邮件和邮寄地址),而不是特定的预订,您可以通过仅使用关于客户的表格和带有预订的单独表格来避免客户信息的冗余指的是客户表(通常带有客户 ID)。
  • 在这些 NF 之间是重要的 BCNF。这没有被提及吗?也许这是你真正需要的而不是 3NF?处于 4NF 意味着处于 BCNF 和 3NF。你的任务到底是什么?

标签: database-design database-normalization third-normal-form


【解决方案1】:

4NF 中的关系也在 BCNF、3NF 和较低的 NF 中。

来自this answer

超级键是一组唯一标识行的列。

候选键是一组唯一标识行和 不包含唯一的列的较小(“正确”)子集 标识行。

所以一个 候选键是一个不包含更小的超键的超键。

A multi-valued dependecy (MVD) X ->> Y 保存在具有属性集 R 的表中(即表具有该 MVD),当该表可以表示为两个表的连接时,即其对属性的投影设置 XUY 和 XU (R - Y)。 (因为 MVD 是二进制 join dependency (JD))。

来自Wikipedia

一个平凡的多值依赖 X ->> Y 是一个,其中 要么 Y 是 X 的子集,要么 X 和 Y 一起构成整个集合 关系的属性。

一个表在 4NF 中当且仅当,对于它的每一个非平凡 多值依赖 X ->> Y,X 是一个超键——即 也就是说,X 要么是候选键,要么是其超集。

每个表都有一个谓词,即由表的属性名称参数化的语句模板,其中表中的行是通过替换谓词中的属性名称来构成真实语句的行通过行中相应的属性值。当它的谓词 P 可以改写为时,MVD X ->> Y 在表中成立:
对于不在 X U Y 中的属性的某些值,P
对于不在 X U (R - Y) 中的属性的某些值,P

因此,让表的含义成为 CK、超级键和 MVD 的指南。从 BCNF 规范化到 4NF:如果一个非平凡的 MVD X ->> Y 不是超键之外的,则用它在 X U Y 和 X U (R - Y) 上的投影替换该表;在新表上重复。

【讨论】:

    猜你喜欢
    • 2011-09-02
    • 1970-01-01
    • 2015-04-22
    • 2013-12-13
    • 1970-01-01
    • 2021-11-21
    • 2015-08-21
    • 2014-09-21
    • 2011-11-24
    相关资源
    最近更新 更多