Дилемма проектирования баз данных. Направляющие или цельные? - PullRequest
0 голосов
/ 24 апреля 2011

В настоящее время у меня есть следующие таблицы

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.
Однако я бы хотел на каком-то этапе дать пользователям возможность «нажимать» или «тянуть»'нации / города из базы данных друг друга.Например.У пользователя 1 есть дополнительное значение в его таблице городов:

Id NationId Name  
-----------------------  
4  1        California  
5  1        Chicago

В то время как у пользователя 2 в таблице городов есть следующее:

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?Или кто-нибудь знает альтернативный метод, я могу добиться этой желаемой синхронизации.

1 Ответ

0 голосов
/ 24 апреля 2011

Гиды наверняка подойдут для описываемой вами проблемы, однако, что произойдет, когда два пользователя добавят Бостон в свои базы данных?В конечном итоге вы получите большое количество дубликатов, особенно в обычных городах.

Не могли бы вы заранее заполнить базу данных информацией о городе?

...