我是数据库新手。
我有一个带有UserProfile实体的数据库。我需要添加一个国家和地区(城市,城镇,村庄)到UserProfile。
最有效的方法是什么?
这就是我所拥有的:
发布于 2015-11-27 16:35:10
在关系数据库术语中,效率的核心是避免数据的重复。你在问题中显示的3张表格似乎是合理的,前提是:
这实际上是一个相当可行的设计,因为在世界上的一些地方,他们可能没有定义的位置,如您所描述的。(地球上有很多独特的决定。)当然,如果需要的话,您可以为跟踪目的生成一个人为的名称或描述。
例如:没有命名的地方,您可以创建一个类似于“咸水岛NW”的地方。
如果您打算让每个地区都属于一个国家,那么您可能会从添加一个CountryLocality表的小更改中获益:
这无疑是一个需要您决定的设计和使用问题,因为CountryLocality表增加了一些开销。这取决于国家-地方连接应该有多强,以及这个额外的步骤对于您的应用程序是否值得。
发布于 2015-11-28 06:17:26
从本地表和国家表中删除ID列可能会更好。否则,您可能会有重复或不正确的名称,因为ID是不同的。国家表可以让世界上每一个国家都很容易地填写,并用于查找,而不是数据输入。只有局部性表才需要一些新记录的数据输入。
CountryLocality表中的ID列将有助于组合的唯一性。
如果您知道每个UserProfile都有本地和国家,那么就可以消除CountryLocality的ID字段,只需创建LocalityName和CountryName的复合键。这种情况可能不是这样,而且可能会使将来的更新变得棘手(对于更改地名的情况)。
https://dba.stackexchange.com/questions/122291
复制相似问题