关联实体和简单数据库中的第三范式

时间:2018-01-05 16:54:16

标签: database database-design

我对基本数据库设计感兴趣。我想设计一个有州和国家公园的简单数据库。因为一个州可以有许多国家公园,一个国家公园可以位于许多州,我认为它们应该是多对多的。

在这种类型的关系中,关联实体是必需的,这是我的设计。

entity-diagram

我不确定实体和关联实体之间的关系。我已经这样做了,因为:

  • 个别州不必是任何国家公园的所在地

  • 一个州可以与许多国家公园一起列出

因此,一个(可选)到多个(可选)在"状态"之间。和" state_park"

  • 每个国家公园必须至少位于一个州

  • 每个国家公园都可以位于许多州

因此,许多(可选)到一个(强制性)在" state_park"之间。和"州"

我想知道我的思维方式是否正确?

我还想知道哪种类型的数据会违反我的数据库中的第三范式?我不认为人口或地区违反了这一点,因为它取决于" id(PK)"和"姓名"。

1 个答案:

答案 0 :(得分:1)

作为您的解释,我认为您的第一个模型应该如下(UML表示法):

enter image description here

  1. 每个State都可以有0 or more(0 .. *)National Parks。 (州可选)
  2. 每个National Park都可以位于1 or more(1 .. *)State(s)中。 (国家公园必备)

  3. 如果我们映射这种多对多的关系:

    enter image description here

    1. 每个National Park都应参与至少一个 State_National_Park。 (国家公园必备)
    2. 每个State都可以参与0 or more(0 .. *)State_National_Park(s)。 (州可选)
    3. ,每个State_National_Park(该实体/表格中存在的每个实例/记录)应该一个 State一个 National Park
    4. 请注意:可选和强制参与的基数显示在关系的其他方面。例如,在第一个模型中,National Park具有强制参与,因此在我们模型的另一侧,我们使用1..*(而不是0..*)。

      ,此型号为3NF。 (但Area的定义含糊不清)