Database 如果一个表只有一个主键,那么数据库默认为2NF,这是真的吗?

Database 如果一个表只有一个主键,那么数据库默认为2NF,这是真的吗?,database,primary-key,database-normalization,relational,Database,Primary Key,Database Normalization,Relational,i、 e.有一个表只有一个主键(没有复合键)。默认情况下是2NF吗?假设它已经是1NF 在您的示例中,PatNo不是主键,因为PatNo可能会看多个医生,或者有多个appNo。不严格地说,表是2NF的,当且仅当它是 在1NF中,以及 不存在部分密钥依赖项 这与将具有单列主键的表放在2NF中并不完全相同。像这样的桌子 person_id full_name phones -- -43 Ericka Cimini 555-222-1515

i、 e.有一个表只有一个主键(没有复合键)。默认情况下是2NF吗?假设它已经是1NF


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

不严格地说,表是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中。(详细信息请参见。)由于它不在1NF中,所以不可能在2NF中。

我想我现在知道了


在我的示例中,如果有多个医生,那么医生也部分依赖于患者编号,因为医生必须看正确的患者。这只是让人困惑,因为医生也通过appNo间接依赖patNo。

也许这种迟来的反应可能对其他人有所帮助。我们被告知(可能是错误地)不相关的数据也属于2NF。所以
动物(门、类、目、科、属、种、希腊音素)
不会在2NF中,因为希腊音素与动物无关。

Patno、PatName、appNo、time、医生说Patno是主键。这不是2NF吗?不存在部分密钥依赖项。这是否回答了您的问题?也许只有一个医生?你的答案真的一点帮助都没有。不,在你的例子中,医生和病人号码之间没有部分键依赖关系。可传递依赖项与2NF无关。不,您的问题是,“默认情况下,[具有单列主键的表]是否为2NF?”很可能很多人会记住关于单列主键的内容,而忘记关于1NF的部分。