如何构建一个拥有City
,State
和Country
的数据库,而城市有时会有州,有时则不会?您是否只需将State_ID
(默认NULL
)和Country_ID
放在City
中,或者有更好的方法来接近它吗?
答案 0 :(得分:3)
你的方法似乎很明显。如果没有可执行的层次结构,那么您就没有多少选择。
当现实世界不符合我们的架构时,我们别无选择,只能使我们的架构符合现实世界。
答案 1 :(得分:0)
如果你的DBA是一个非常严格规范化的坚持者,那么另一种选择就是在State
表中有一个特殊的“无状态”记录。每个Country
(至少每个都有“无国籍”城市)都需要其中一个。
答案 2 :(得分:0)
接受所提供的答案。但只是要注意,此处未提及的另一种方法是City_States
多对多表。对于处于两个州的一些城市来说,这将是一种特别有用的方法。