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服务,在应用程序和城市“主列表”之间提供同步。