Mysql SQL数据库结构问题

Mysql SQL数据库结构问题,mysql,normalization,Mysql,Normalization,如果你有城市、州和国家,而城市有时有州,有时没有州,你会如何构建一个数据库?你会简单地把州ID(默认值NULL)和国家ID放在City中吗?还是有更好的方法来解决这个问题?你的方法似乎恰到好处。如果没有可执行的层次结构,那么您就没有太多选择 当现实世界不符合我们的模式时,我们别无选择,只能使我们的模式符合现实世界。如果您的DBA坚持严格规范化,另一种选择是在State表中有特殊的“no State”记录。每个国家都需要一个(至少每个国家都有“无国籍”城市)。接受提供的答案。但要注意的是,这里没有

如果你有
城市
国家
,而城市有时有州,有时没有州,你会如何构建一个数据库?你会简单地把
州ID
(默认值
NULL
)和
国家ID
放在
City
中吗?还是有更好的方法来解决这个问题?

你的方法似乎恰到好处。如果没有可执行的层次结构,那么您就没有太多选择


当现实世界不符合我们的模式时,我们别无选择,只能使我们的模式符合现实世界。

如果您的DBA坚持严格规范化,另一种选择是在
State
表中有特殊的“no State”记录。每个
国家都需要一个
(至少每个国家都有“无国籍”城市)。

接受提供的答案。但要注意的是,这里没有提到的另一种方法是
City\u States
many-to-many表。这对于处于两个州的一些城市来说是一种特别有用的方法。

把没有州称为州有点奇怪,不是吗?我想这取决于你如何看待它。我不想这样做,但正如我所说的,它绕过了将国家id存储在两个地方的正常化问题。@babonk:这并不比将一个省、一个县或一个地区称为一个州更奇怪。@Catcall:所有这些至少都是国家和城市之间政治实体的同义词levels@babonk:嗯,国家也是国家和城市之间的一个政治实体。联合王国是一个国家。它由英格兰、苏格兰、威尔士和北爱尔兰四个国家组成。