powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / структура базы "страны ->.......->города"
9 сообщений из 9, страница 1 из 1
структура базы "страны ->.......->города"
    #33335650
JackS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно сделать структуру "страны ->.......->города" с произвольным количеством вложенностей а-ля "область->район->.... город" + название этих объектов админ. деления разные у разных стран ....

максимум до чего додумался это такая структура:

countries
country_id
.....
name

country_structure
structure_id
country_id
parent_id
name

cities
city_id
structure_id
name

вот ... но при таком построении что то я не вижу как получить запросом на пример все города в стране или по городу в какой он стране .... :(

country_structure.parent_id сылается на structure_id в этой же таблице ....
...
Рейтинг: 0 / 0
структура базы "страны ->.......->города"
    #33335715
Smirnov Anton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
country_structure
structure_id
country_id
parent_id
name
то вам в принципе не нужна уже таблица
cities , так как это тоже country_structure
и в рамках отношения country_structure ничем не отличается от области и тп
ну и соответсвенно не нужна так же и такблица countries :)
...
Рейтинг: 0 / 0
структура базы "страны ->.......->города"
    #33335752
JackS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так то оно так :) но страны и города выделить выделить нужно у них свойств своих будет ещё по всяким населениям площадям и прочему .... свойства "промежуточных" делений мало интересуют ...

но как в этом случае быть с запросами ? :(
может есть предложения по более здоровой структуре ?
или идеи как всё же заполучить запросом страну по городу или наоборот все города в странах ? :\
...
Рейтинг: 0 / 0
структура базы "страны ->.......->города"
    #33335800
Фотография !!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы примерно так сделал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
CREATE TABLE GEOPUNCT (ID NUMBER NOT NULL, PARENT_ID NUMBER NULL, NAME VARCHAR2( 20 ) NOT NULL, TYPE_ID NUMBER NOT NULL);

CREATE TABLE GEOPUNCTTYPE (ID_TYPE NUMBER NOT NULL, TYPE_NAME VARCHAR2( 20 ) NOT NULL);

INSERT INTO GEOPUNCTTYPE (ID_TYPE , TYPE_NAME)
SELECT  1 , 'СТРАНА' from dual
union all
SELECT  2 , 'Субъект федерации' from dual
union all
SELECT  3 , 'Область' from dual
union all
SELECT  4 , 'Район' from dual
union all
SELECT  5 , 'Штат (США)' from dual
union all
SELECT  6 , 'Кантон (Швейцария)' from dual;
union all
SELECT  7 , 'Федеральный округ(США)' from dual
union all
SELECT  8 , 'Город' from dual


insert into GEOPUNCT (ID, PARENT_ID , NAME, TYPE_ID)
select  1 , null, 'Россия',  1  from dual
union all
select  2 ,  1 , 'Москва',  2  from dual
union all
select  3 ,  1 , 'Московская обл',  3  from dual
union all
select  4 ,  3 , 'Мытищи',  8  from dual
union all
select  5 , null, 'США',  1  from dual
union all
select  6 ,  5 , 'Колумбия',  7  from dual
union all
select  7 ,  6 , 'Вашингтон',  8  from dual
union all
select  9 ,  5 , 'Иллинойс',  5  from dual
union all
select  10 ,  9 , 'Чикаго',  8  from dual;
...
Рейтинг: 0 / 0
структура базы "страны ->.......->города"
    #33335809
Фотография !!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JackSну так то оно так :) но страны и города выделить выделить нужно у них свойств своих будет ещё по всяким населениям площадям и прочему .... свойства "промежуточных" делений мало интересуют ...

но как в этом случае быть с запросами ? :(
может есть предложения по более здоровой структуре ?
или идеи как всё же заполучить запросом страну по городу или наоборот все города в странах ? :\Для работы с дополнительными атрибутами создать таблицы и связать их по первичному ключу 1-1. Ну и дополнительные проверки на тип
...
Рейтинг: 0 / 0
структура базы "страны ->.......->города"
    #33335926
YBW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
YBW
Гость
JackSвот ... но при таком построении что то я не вижу как получить запросом на пример все города в стране или по городу в какой он стране .... :(


можно проще - ключ вида

Земля/Евразия/Европа/Россия/Центральный Округ/Москва/Центральный Округ/Б. Никитская/5
...
Рейтинг: 0 / 0
структура базы "страны ->.......->города"
    #33337198
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Особенности каждой страны можно учесть через ТипПодчинения, перечисляющий допустимые вхождения типов административных единиц.

Страна (ИДСтр ->...) ;
ТипАдмЕдиницы (ИДСтр, ИДТипаАЕ -> ФлагСубъекта) ;
ТипПодчинения (ИДСтр, ИДТипаАЕЧто , ИДТипаАЕКуда -> );
АдмЕдиница (ИДАЕ -> ИДСтр, ИДТипаАЕ , ИДАЕКуда, ...);

ФлагСубъекта разрешает вхождение в страну, ИДАЕКуда IS NULL реализует разрешение.
Понятие "Субъект РФ" в ТипАдмЕдиницы не входит - это вычисляемая вещь - кто входит в Россию непосредственно.

Страна ( "Россия" )
ТипАдмЕдиницы ( "Россия", "Город" , "YES")
ТипАдмЕдиницы ( "Россия", "Район" , "NO")
ТипПодчинения ( "Россия", "Город" , "Область" )
АдмЕдиница ( "Москва" ,"Россия", "Город" , NULL );
АдмЕдиница ( "Нижний Новгород" ,"Россия", "Город" , "Нижегородская область");
...
Рейтинг: 0 / 0
структура базы "страны ->.......->города"
    #33337421
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 !!!
А также легко
Код: plaintext
1.
2.
3.
4.
insert into GEOPUNCT (ID, PARENT_ID , NAME, TYPE_ID)
select  1 , null, 'Россия',  1  from dual
union all
select  2 ,  1 , 'США',   1  from dual
 
:)
...
Рейтинг: 0 / 0
структура базы "страны ->.......->города"
    #33338070
Фотография !!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ModelR
Я сказал примерно .
ЗЫЖ А чего, было бы круто ;))
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / структура базы "страны ->.......->города"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]