2014-10-13 1 views
0

Я разрабатываю сайт, на котором есть понятие группы города. Где группа определяется городским родителем и городами как дети. Поэтому мне нужно сохранить связь между родительским городом и дочерними городами (отношение 1: n).Как организовать базу данных для хранения отношений родителя/ребенка

Мне было интересно, была ли лучшая схема для определения этого. Например, мы имели бы: Париж (родитель) -> Ней (ребенок), Винсенс (ребенок), Санкт-Манда (ребенок), и т.д ...

+0

http://stackoverflow.com/q/4048151/330315 –

ответ

1

Может быть что-то вроде:

--> cities 
- id (int PK) 
- name (varchar) 
- parent_id (int default 0) 

Тогда значения, как:

- 1,Paris, 0 
- 2, Neuilly, 1 
- 3, Vincennes, 1 
- 4, St Mandé, 1 

Чтобы построить свой список:

select * from cities as c0 join cities as c1 on c1.parent_id = c0.id; 
0

Вы будете использовать автообъединение для этого

table :=> cities 
fields :=> 
- id (int PK) 
- name (varchar) 
- parent_city_id (int default 0) 

И поэтому автообъединение будет использоваться там, где присоединиться будет основываться на ид c1 (города Алиас table1) присоединение c2 (города Псевдоним таблица2, лечение, как вторая таблица).