我对基本数据库设计感兴趣。我想设计一个有州和国家公园的简单数据库。因为一个州可以有许多国家公园,一个国家公园可以位于许多州,我认为它们应该是多对多的。
在这种类型的关系中,关联实体是必需的,这是我的设计。
我不确定实体和关联实体之间的关系。我已经这样做了,因为:
个别州不必是任何国家公园的所在地
一个州可以与许多国家公园一起列出
因此,一个(可选)到多个(可选)在"状态"之间。和" state_park"
每个国家公园必须至少位于一个州
每个国家公园都可以位于许多州
因此,许多(可选)到一个(强制性)在" state_park"之间。和"州"
我想知道我的思维方式是否正确?
我还想知道哪种类型的数据会违反我的数据库中的第三范式?我不认为人口或地区违反了这一点,因为它取决于" id(PK)"和"姓名"。
答案 0 :(得分:1)
作为您的解释,我认为您的第一个模型应该如下(UML表示法):
State
都可以有0 or more
(0 .. *)National Parks
。 (州可选)National Park
都可以位于1 or more
(1 .. *)State
(s)中。 (国家公园必备)
如果我们映射这种多对多的关系:
National Park
都应参与至少一个 State_National_Park
。 (国家公园必备)State
都可以参与0 or more
(0 .. *)State_National_Park
(s)。 (州可选)State_National_Park
(该实体/表格中存在的每个实例/记录)应该一个 State
和一个 National Park
。 请注意:可选和强制参与的基数显示在关系的其他方面。例如,在第一个模型中,National Park
具有强制参与,因此在我们模型的另一侧,我们使用1..*
(而不是0..*
)。
,此型号为3NF。 (但Area
的定义含糊不清)