位置的数据库结构

时间:2013-11-13 09:09:22

标签: sql database normalization database-normalization

我有3张桌子 -

国家 CountryId |名称

StateId |名称| CountryId

城市 CityId |名称| STATEID

这三个字段在用户表(以及其他一些表)中引用。

用户 UserId |名称| CountryId | StateId | CityId

只有国家/地区是强制性的。州和城市可以为空。 我们将仅在国家更新时显示州字段,然后在状态更新时显示城市。例如:

UserID |名称| CountryId | StateId | CityId

abc | xyz | 1 | null |空

abc1 | xyz1 | 1 | 19 |空

abc2 | xyz2 | 9 | 2 | 34

另外,我必须在很多地方列出国家。而且我还有一些表格,其中只引用了国家/地区字段。例如:

总统 PresidentId |国家


我想到的另一种方法是 -

地点 LocationId(Autoincrement int)|国家(字符串)|状态(字符串)|市(字符串)

用户 UserId |名称| LocationId


哪种方法好? 如果有更好的方法来构建数据库,请建议我吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

第一种方法更好,因为在第二种方法中,例如,每个城市都有多个国家副本。但是,对于用户而言,它足以指定cityId,因为您可以从中找出州和国家。 另请注意,该标准指定以单数形式使用名词作为实体名称。