0

私は現在次のテーブルを持っています

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

User2の都市テーブルには次のものがあります。

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

User2:

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を使用する必要がありますか?または、私がこの望ましい同期を実現できる代替方法を知っている人はいますか。

4

1 に答える 1

0

GUIDは、あなたが説明する問題に対しては確かに機能しますが、2人のユーザーがボストンをデータベースに追加するとどうなりますか?特に一般的な都市では、重複が多数発生することになります。

データベースに都市情報を事前入力できませんか?

于 2011-04-24T16:23:08.530 に答える