powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Справочник по адрессу
18 сообщений из 18, страница 1 из 1
Справочник по адрессу
    #32724618
fantom1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! Помогите решить проблему... Нужно создать справочники "страна" ему подчиненный "область" - к нему "район" - к етому "город или поселок" Думал создать четыри таблицы с primary foreign key для избежания казусов. Да не тут то было... Возможен вариант что есть страна область и сразу обласной центр минуя район либо страна и сразу город "столица страны"... Как правильно создать справочники чтобы было и правильно и красиво? Спасибо!!!
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32724630
bushmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fantom1978Всем привет! Помогите решить проблему... Нужно создать справочники "страна" ему подчиненный "область" - к нему "район" - к етому "город или поселок" Думал создать четыри таблицы с primary foreign key для избежания казусов. Да не тут то было... Возможен вариант что есть страна область и сразу обласной центр минуя район либо страна и сразу город "столица страны"... Как правильно создать справочники чтобы было и правильно и красиво? Спасибо!!!
Есть такая штука - КЛАДР называется. Возьми его за основу - там и структуру увидишь.
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32724647
sburm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fantom1978Всем привет! Помогите решить проблему... Нужно создать справочники "страна" ему подчиненный "область" - к нему "район" - к етому "город или поселок" Думал создать четыри таблицы с primary foreign key для избежания казусов. Да не тут то было... Возможен вариант что есть страна область и сразу обласной центр минуя район либо страна и сразу город "столица страны"... Как правильно создать справочники чтобы было и правильно и красиво? Спасибо!!!
Попробуй реализовать в виде дерева, где у объекта есть ссылка на предок-потомок
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32724661
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только структура там странная... хотя перелили в базу один к одному, чтоб легче было обновлять.
Проблемы были только в том как реализовать это добро на клиенте.
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32724670
bushmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EstetsТолько структура там странная... хотя перелили в базу один к одному, чтоб легче было обновлять.
Проблемы были только в том как реализовать это добро на клиенте.
У меня 3 год крутится КЛАДР, пока вроде проблем никаких не было.
На мой взгляд структура там простая
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32724711
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там структура удобная для программирования, но неудобная для использования пользователем. Основная проблема - по КЛАДР требуется знать
все вышестоящие уровни (куда входит название), тогда как в реальном мире они не всегда известны. ИМХО, древовидная структура для адреса вообще неудобна человеку.

Nobody faults but mine... (LZ)
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32724740
Tracer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое тупое ( и самое быстрое ) решение - это создать доп. таблицу "справочник".

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
креате табле дбо.справочник
( 
    страна   инт нот нул,
    область инт нул,
    район    инт нул,
    город    инт нул,
    район_парент инт нот нул,
    город_парент инт нот нул
)

и заполнять её по мере добавления информации
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32724760
fantom1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TracerСамое тупое ( и самое быстрое ) решение - это создать доп. таблицу "справочник".

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
креате табле дбо.справочник
( 
    страна   инт нот нул,
    область инт нул,
    район    инт нул,
    город    инт нул,
    район_парент инт нот нул,
    город_парент инт нот нул
)

и заполнять её по мере добавления информации

а зачем
район_парент инт нот нул,
город_парент инт нот нул
и что такое КЛАДР
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32724769
fantom1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sburm fantom1978Всем привет! Помогите решить проблему... Нужно создать справочники "страна" ему подчиненный "область" - к нему "район" - к етому "город или поселок" Думал создать четыри таблицы с primary foreign key для избежания казусов. Да не тут то было... Возможен вариант что есть страна область и сразу обласной центр минуя район либо страна и сразу город "столица страны"... Как правильно создать справочники чтобы было и правильно и красиво? Спасибо!!!
Попробуй реализовать в виде дерева, где у объекта есть ссылка на предок-потомок

А как потом раскрутить адресс в клиенте через select
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32724771
Tracer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для большей скорости некоторых запросов, хотя в принципе особо не нужны.
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32724773
fantom1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sburm fantom1978Всем привет! Помогите решить проблему... Нужно создать справочники "страна" ему подчиненный "область" - к нему "район" - к етому "город или поселок" Думал создать четыри таблицы с primary foreign key для избежания казусов. Да не тут то было... Возможен вариант что есть страна область и сразу обласной центр минуя район либо страна и сразу город "столица страны"... Как правильно создать справочники чтобы было и правильно и красиво? Спасибо!!!
Попробуй реализовать в виде дерева, где у объекта есть ссылка на предок-потомок

А как потом раскрутить адресс в клиенте через select чтобы было видно у клиента страна, область, район, город
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32725007
lisichanec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 fantom1978
В общем ничего сложного. Все именно так, как ты описал работает, по крайней мере у меня, на MS SQL Server 2000

Только потом сооруди функцию, наподобие вот этой:

Код: 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.
CREATE FUNCTION [dbo].[fn_GetAddress] 
	(
	)
RETURNS TABLE 
AS  
	RETURN
		(
		SELECT 	dbo.sprAddresOblast.Oblast_ID, 
				dbo.sprAddresOblast.NameOblast, 
				dbo.sprAddresRayon.Rayon_ID, 
				dbo.sprAddresRayon.NameRayon, 
		        	             dbo.sprAddresCity.Gorod_ID, 
				dbo.sprAddresCity.CityName, 
				dbo.sprAddresCity.PostIndex5,
				dbo.sprAddresTypeCity.SityTypeName,
				CASE 
					WHEN dbo.sprAddresRayon.NameRayon = dbo.sprAddresCity.CityName AND dbo.sprAddresOblast.NameOblast = dbo.sprAddresRayon.NameRayon THEN dbo.sprAddresCity.PostIndex5 + ', ' + dbo.sprAddresTypeCity.SityTypeName + ' ' + dbo.sprAddresCity.CityName
					WHEN dbo.sprAddresOblast.NameOblast = dbo.sprAddresRayon.NameRayon THEN dbo.sprAddresCity.PostIndex5 + ', ' + dbo.sprAddresOblast.NameOblast +  ' ' + dbo.sprAddresOblast.AdminDiff+ ', ' + dbo.sprAddresTypeCity.SityTypeName + ' ' + dbo.sprAddresCity.CityName
					WHEN dbo.sprAddresRayon.NameRayon =  dbo.sprAddresCity.CityName THEN  dbo.sprAddresCity.PostIndex5 + ', ' + dbo.sprAddresOblast.NameOblast +  ' ' + dbo.sprAddresOblast.AdminDiff+ ', ' + dbo.sprAddresTypeCity.SityTypeName + ' ' + dbo.sprAddresCity.CityName
					WHEN dbo.sprAddresRayon.NameRayon  =  dbo.sprAddresCity.CityName + ',' THEN  dbo.sprAddresCity.PostIndex5 + ', ' + dbo.sprAddresOblast.NameOblast +  ' ' + dbo.sprAddresOblast.AdminDiff+ ', ' + dbo.sprAddresTypeCity.SityTypeName + ' ' + dbo.sprAddresCity.CityName
					ELSE dbo.sprAddresCity.PostIndex5 + ', ' + dbo.sprAddresOblast.NameOblast +  ' ' + dbo.sprAddresOblast.AdminDiff + ', ' + dbo.sprAddresRayon.NameRayon + ' ' + dbo.sprAddresRayon.AdminDiff + ',  ' + dbo.sprAddresTypeCity.SityTypeName + ' ' + dbo.sprAddresCity.CityName
				END AS [StrAddress]

		FROM        dbo.sprAddresOblast 
			INNER JOIN dbo.sprAddresRayon ON dbo.sprAddresOblast.Oblast_ID = dbo.sprAddresRayon.Oblast_ID 
			INNER JOIN dbo.sprAddresCity ON dbo.sprAddresRayon.Rayon_ID = dbo.sprAddresCity.Rayon_ID
			INNER JOIN dbo.sprAddresTypeCity ON dbo.sprAddresCity.CityType_ID = dbo.sprAddresTypeCity.CityType_ID
		)

Ну вобщем где-то так.
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32725167
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bushmen
Есть такая штука - КЛАДР называется. Возьми его за основу - там и структуру увидишь.
Только синтаксический разбор кода в sql не стоит реализовывать.

> lisichanec
И как у тебя с быстродействием при использовании такой функции?

Можно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
креате табле дбо.справочник
( 
    страна   инт нот нул FK,
    область инт нул FK,
    район    инт нул FK,
    нас.пункт инт нот нул PK,
    название стр нот нул,
    индекс стр, 
    ... и пр.
)
И соответственно справочники: Стран (ОКСМ), Области/Регионы (из КЛАДР с уровнем  1 ), районы (из КЛАДР с уровнем  2 ).
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32725959
Jinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fantom1978Всем привет! Помогите решить проблему... Нужно создать справочники "страна" ему подчиненный "область" - к нему "район" - к етому "город или поселок" Думал создать четыри таблицы с primary foreign key для избежания казусов. Да не тут то было... Возможен вариант что есть страна область и сразу обласной центр минуя район либо страна и сразу город "столица страны"... Как правильно создать справочники чтобы было и правильно и красиво? Спасибо!!!

В оракле это реализуется очнь легко - дерево. Конечно с соответствующим запросом. Клиент формирует дерево из запроса сам, все зависит от языка программирования. В делфях это десяток строк, для такого справочника - один момент для вывода.
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32726047
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня сделано так
Таблица Geography ID, Name, Type, ParentID
В type указываешь тип элемента (страна, область, район, улица и т.д.)

Все объекты у которых ParentID ссылается на один ID другой записи, являются вложенными объектами, например у одной страны вложенными могут быть и штаты и области и просто города. У города вложенными могут быть районы или улицы
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32726261
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickУ меня сделано так
Таблица Geography ID, Name, Type, ParentID
В type указываешь тип элемента (страна, область, район, улица и т.д.)

Все объекты у которых ParentID ссылается на один ID другой записи, являются вложенными объектами, например у одной страны вложенными могут быть и штаты и области и просто города. У города вложенными могут быть районы или улицы
Я сам так же хотел по началу сделать, а потом представил, что мне из КЛАДРа надо закачать все данные по насел. пунктам и улицам. Таблица получится здоровенная. Выборки из нее вероятно будут идти медленно. А как у вас?
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32726423
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Записей около 10 миллионов. И никаких проблем
...
Рейтинг: 0 / 0
Справочник по адрессу
    #32726540
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я побоялся, что по правилу "9 запятых" адрес будем формироваться медленно, в качестве ораклового сервера PIV/512М стоит...
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Справочник по адрессу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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