【问题标题】:Is it true that a database is 2NF by default if the table only has 1 primary key?如果表只有 1 个主键,那么数据库是否默认为 2NF?
【发布时间】:2023-03-26 04:50:01
【问题描述】:

即有一个表只有 1 个主键(没有复合键)。默认是2NF吗?假设已经是1NF

【问题讨论】:

标签: database primary-key database-normalization relational


【解决方案1】:

http://en.wikipedia.org/wiki/Second_normal_form

在您的示例中,PatNo 不是主键,因为 PatNo 可能会看到不止一位医生,或者拥有多个 appNo。

【讨论】:

  • 也许只有一位医生?你的回答真的一点用都没有。
【解决方案2】:

简单地说,一个表在 2NF 中当且仅当它是

  • 在 1NF 中,并且
  • 没有部分密钥依赖关系。

这与说具有单列主键的表在 2NF 中并不完全相同。这样的表

person_id  full_name       phones
--
-43        Ericka Cimini   555-222-1515
                           555-232-6100
-18        Julio Martina   555-123-4567

有一个单列主键(“person_id”),但它不在 1NF 中。 (详见wikipedia。)因为它不在1NF中,所以不可能在2NF中。

【讨论】:

  • 不,您的问题是“默认情况下[具有单列主键的表] 2NF 吗?”很可能很多人会记住有关单列主键的一些内容,而忘记有关 1NF 的部分。
【解决方案3】:

我想现在明白了。

在我的示例中,如果有超过 1 位医生,那么医生也部分取决于患者编号,因为医生必须看到正确的患者。这只是令人困惑,因为医生也通过 appNo 传递依赖于 patNo。

【讨论】:

  • 不,在您的示例中,医生和患者编号之间没有部分密钥依赖关系。传递依赖与 2NF 无关。
【解决方案4】:

也许这个迟到的回复可能对其他人有所帮助。我们被教导(可能是错误地)不相关的数据也属于 2NF。所以animal(phylum, class, order, family, genus, species, greek_phoneme) 不会在 2NF 中,因为希腊音素与 Animals 无关。

【讨论】:

    猜你喜欢
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多