Database design 数据库设计困境。guid还是int?

Database design 数据库设计困境。guid还是int?,database-design,primary-key,guid,data-synchronization,Database Design,Primary Key,Guid,Data Synchronization,我目前有以下表格 Nation ---------------- Id (int) primary key autoincrement Name (char) City ---------------- Id (int) primary key autoincrement NationId (int) references Nation(Id) Name (char) Nation table data Id Name ----------

我目前有以下表格

Nation   
----------------  
Id (int) primary key autoincrement
Name (char)  

City   
----------------  
Id (int) primary key autoincrement
NationId (int) references Nation(Id)    
Name (char)  

Nation table data   
Id Name  
----------  
0  England  
1  USA  

City table data   
Id NationId Name
-----------------------  
0  0        London  
1  0        Manchester  
2  1        New York  
3  1        Boston  
以上是我希望重新分发给应用程序用户的数据库的一部分。
我的应用程序的用户将被允许添加他们自己的国家和城市。当他们添加自己的城市时,按照当前的数据库设计,这显然会增加city.Id主键值。
然而,我希望在某个阶段,允许用户从彼此的数据库中“推”或“拉”国家/城市。例如User1在其城市表中具有附加值:

Id NationId Name  
-----------------------  
4  1        California  
5  1        Chicago
Id NationId Name  
-----------------------  
4  1        Houston  
5  1        Phoenix
而User2在其城市表中有以下内容:

Id NationId Name  
-----------------------  
4  1        California  
5  1        Chicago
Id NationId Name  
-----------------------  
4  1        Houston  
5  1        Phoenix
每个人都希望在他们的城市表中有彼此的城市。一旦每个人都将其不同的城市数据推送到不同的位置,他们的City.Id、City.Name属性就不会完全对应

用户1:

Id NationId Name  
-----------------------  
0  0        London  
1  0        Manchester  
2  1        New York  
3  1        Boston  
4  1        California  
5  1        Chicago
6  1        Houston  
7  1        Phoenix
用户2:

Id NationId Name  
-----------------------
0  0        London  
1  0        Manchester  
2  1        New York  
3  1        Boston  
4  1        Houston  
5  1        Phoenix
6  1        California  
7  1        Chicago
我希望City.Id、City.Name属性在所有用户数据库中具有相似的外观


那么,我应该选择City.Id的用户guid吗?或者是否有人知道我可以实现所需同步的替代方法。

guid肯定会解决您描述的问题,但是,当两个用户将Boston添加到他们的数据库时会发生什么?你会得到大量的复制品,尤其是在普通城市


您不能用城市信息预先填充数据库吗?

关于重复项的观点很好。然而,让我们假设一个算法已经到位,可以防止在同一个国家出现重复的城市。此外,我发送了一个数据库,其中包含尽可能多的城市(超过1000个城市)。我想这个应用程序将在没有互联网连接的计算机上运行?如果没有,那么您可以运行一个简单的web服务,在应用程序和城市“主列表”之间提供同步。