Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / КЛАДР / 25 сообщений из 45, страница 1 из 2
04.06.2010, 16:15
    #36669847
Хорёк
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Столкнулся с такой проблемой в КЛАДР.
Есть данные, актуальные и неактуальные.
При прописывании в таблице родителя объекту, столкнулся с проблемой -

ID NAME SOCR CODE IND GNINMB UNO OCATD STATUS

Санкт-Петербург г 7800000000000 190000 7800 40000000000 0
Ленинград г 7800000000001 190000 7800 40000000000 0
Петергоф г 7800000800000 198510 7819 40290501000 0
Петродворец г 7800000800001 198510 7819 40290501000 0

из этого списка - два объекта активные, два другие - нет.
проблема следующая - и Петергоф и Петродворец - я привязал к Санкт-Петербургу.

Как определить, к какому объекту прикреплять актуальный/неактуальный объект???
Может Петродворец должен быть связан с Ленинградом?
...
Рейтинг: 0 / 0
04.06.2010, 16:22
    #36669876
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
ХорёкКак определить, к какому объекту прикреплять актуальный/неактуальный объект???
Может Петродворец должен быть связан с Ленинградом?Просто выкиньте неактуальные элементы классификатора. Если бы в КЛАДРе еще ALTNAMES.DBF велся по-человечьи.
...
Рейтинг: 0 / 0
04.06.2010, 16:29
    #36669895
Хорёк
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Senya_L,

нельзя так.

если вбиваю паспортные данные, к примеру человека, который получал его еще в Ленинграде, получается такого города просто нет( - это уже неправильно.
история должна сохраниться.


мне подсказывают, что просто надо привязать неактуальный объект в актуальному - то есть и Петергоф и Петродворец к Санкт-Петербургу.
...
Рейтинг: 0 / 0
04.06.2010, 16:59
    #36670021
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Хорёкмне подсказывают, что просто надо привязать неактуальный объект в актуальному - то есть и Петергоф и Петродворец к Санкт-Петербургу.Тогда у Вас адресная строка получается:
Код: plaintext
Санкт-Петербург, Петергоф
а такого адреса никогда не существовало. Ерунда получается. Можно, конечно, поискать город со статусом "....1", т.е. Ленинград, но в общем случае восстановить не получится. Я пробовал - потом забил. Поймите, КЛАДР ведется с потерей данных об истории и восстановить адреса какими они были прежними - дело проблематичное.
...
Рейтинг: 0 / 0
04.06.2010, 17:03
    #36670032
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Senya_Lпоискать город со статусом "....1"читать как поискать город со статусом "01". там же на статус 2 цифры отводится. А есть еще "99", и еще какие-то имеются...
...
Рейтинг: 0 / 0
04.06.2010, 17:04
    #36670037
Хорёк
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Senya_L,

да все верно.
но судя по описанию кода, который приводят в КЛАДР, все=таки
Санкт-Петербург - это отдельный субъект РФ, а вот Петергоф - входит в субъект СПб.

это ведь для построения дерева.
...
Рейтинг: 0 / 0
04.06.2010, 18:47
    #36670270
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
ХорёкSenya_L,

да все верно.
но судя по описанию кода, который приводят в КЛАДР, все=таки
Санкт-Петербург - это отдельный субъект РФ, а вот Петергоф - входит в субъект СПб.

это ведь для построения дерева.Я понимаю, что для дерева. Но при нахождении родителя возникает неоднозначность - вот я к чему клоню. По на роль родителя для Петергофа подходит как Ленинград, так и Петербург. Как выбрать правильный запросом? Я не придумал. Но у меня адреса вбиваются только актуальные и "петергофы" не ребуются
...
Рейтинг: 0 / 0
04.06.2010, 18:54
    #36670284
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Хорёкно судя по описанию кода, который приводят в КЛАДР, все=таки
Санкт-Петербург - это отдельный субъект РФ, а вот Петергоф - входит в субъект СПб.В КЛАДРе не отслеживается хронология изменения элементов.

С 1944 по 1991 правильный адрес: Ленинград, Петродворец
С 1991 по 2009 правильный адрес Петербург, Петродворец
С 2009 и > правильный адрес: Петербург, Петергоф

Ферштейн, где собака порылась?
...
Рейтинг: 0 / 0
04.06.2010, 22:16
    #36670483
Хорёк
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Senya_L,

тогда проще вести все данные, только использовать столбец актуальности для данного вида информации.
...
Рейтинг: 0 / 0
04.06.2010, 22:29
    #36670507
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
ХорёкSenya_L,

тогда проще вести все данные, только использовать столбец актуальности для данного вида информации.Тогда у Вас древа не получится
...
Рейтинг: 0 / 0
05.06.2010, 10:56
    #36670839
Kirill Razuvaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Senya_L,
Почему не получится? Просто дерево чуть более сложное будет. По сути получится узел с кодом объекта, к которому привяжутся с одной стороны все его наименования, а с другой - подчиненные объекты.

IMHO, в текущей реализации КЛАДР неактуальные данные нужны только для ввода старых исходных данных, т.е. поиск кода объекта по наименованию, а это можно и на основе отдельной таблицы сделать.
...
Рейтинг: 0 / 0
05.06.2010, 11:43
    #36670893
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Kirill RazuvaevSenya_L,
Почему не получится? Просто дерево чуть более сложное будет. По сути получится узел с кодом объекта, к которому привяжутся с одной стороны все его наименования, а с другой - подчиненные объекты.Это уже не древо. Это уже многие-ко-многим.
...
Рейтинг: 0 / 0
05.06.2010, 11:45
    #36670895
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Senya_LKirill RazuvaevSenya_L,
Почему не получится? Просто дерево чуть более сложное будет. По сути получится узел с кодом объекта, к которому привяжутся с одной стороны все его наименования, а с другой - подчиненные объекты.Это уже не древо. Это уже многие-ко-многим.Невнимательно прочитал Ваше сообщение. Теперь врубился. Интересная мысль. Но мне требуются только актуальные адреса, так что... Но запомню на будущее.
...
Рейтинг: 0 / 0
05.06.2010, 12:25
    #36670920
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Если я правильно понял Кирилла, то получается такая структура
Код: 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.
if object_id('KladrItem', 'U') is not null
	drop table KladrItem;
if object_id('Prefix', 'U') is not null
	drop table Prefix;
if object_id('Kladr', 'U') is not null
	drop table Kladr;

create table Kladr(
	KladrID int not null identity( 1 ,  1 ),
	ParentID int null,
	constraint PK_Kladr primary key nonclustered(KladrID),
	constraint FK_Kladr_Kladr foreign key(ParentID) references Kladr(KladrID)
);
create unique clustered index clst on Kladr(ParentID, KladrID);


create table Prefix(
	PrefixID smallint not null,
	level tinyint not null,
	Name varchar( 10 ) not null,
	FullName varchar( 29 ) not null,
	Dot bit constraint DF_Prefix_Dot default( 0 ),
	constraint PK_Prefix primary key(PrefixID)
);

create table KladrItem(
	KladrID int not null,
	PrefixID smallint not null,
	Name varchar( 40 ) not null,
	Code varchar( 19 ) not null,
	PostIndex char( 6 ) null,
	GNINMB char( 4 ) null,
	UNO char( 4 ) null,
	OCATD char( 11 ) null,
	Status char( 1 ) not null,
	constraint PK_KladrItem primary key(KladrID, Status), -- ??? Status
	constraint FK_KladrItem_Prefix foreign key(PrefixID) references Prefix(PrefixID),
	constraint FK_KladrItem_Kladr foreign key(KladrID) references Kladr(KladrID)
);
create unique index IX_Code on KladrItem(Code);
...
Рейтинг: 0 / 0
06.06.2010, 10:44
    #36671558
Kirill Razuvaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Senya_LЕсли я правильно понял Кирилла, то получается такая структура Да, что-то типа того. Я, правда, делал по-другому , ввиду исторической нелюбви к флоре :-)
...
Рейтинг: 0 / 0
06.06.2010, 12:46
    #36671654
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Kirill RazuvaevSenya_LЕсли я правильно понял Кирилла, то получается такая структура Да, что-то типа того. Я, правда, делал по-другому , ввиду исторической нелюбви к флоре :-)Да, я помню тот топик. А мне не нравится раскидывание КЛАДРА на несколько таблиц. Намного удобнее хранить адресную ссылку, получать строку адреса. Лично я вообще слил в одну таблицу и KLADR.DBF, и STREET.DBF. Приведенный выше скрипт сделан на основе реально используемого загрузчика в MSскульную БД.
...
Рейтинг: 0 / 0
06.06.2010, 23:25
    #36672050
Kirill Razuvaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Senya_LДа, я помню тот топик. А мне не нравится раскидывание КЛАДРА на несколько таблиц. Намного удобнее хранить адресную ссылку, получать строку адреса.Да, естественно! Чем мешает несколько таблиц? Точно также вытаскиваем все, что нужно, только из ХП... Выбор здесь скорее из области любви к красному цвету и к зеленому... Меня в исходном КЛАДРе притомила слегка необходимость вычислять уровень, отсюда и разбивка на уровни по таблицам взялась, опять же проще сокращения прикручивать и корректировать (контролировать корректность)... :-)
...
Рейтинг: 0 / 0
07.06.2010, 01:21
    #36672163
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Kirill RazuvaevМеня в исходном КЛАДРе притомила слегка необходимость вычислять уровень, отсюда и разбивка на уровни по таблицам взялась, опять же проще сокращения прикручивать и корректировать (контролировать корректность)... :-)Напрасно :-) Не претендуя на изящество:
Код: 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.
40.
41.
42.
43.
44.
45.
;with cte as(
	select
		Kladr.KladrID as KladrID0,
		Kladr.KladrID,
		Kladr.ParentID,
		Kladr.Name as Name,
		Kladr.PostIndex,
		Prefix.level
	from Kladr
		join Prefix on Kladr.PrefixID = Prefix.PrefixID
	where KladrID = :KladrID
	union all
	select
		cte.KladrID0,
		Kladr.KladrID,
		Kladr.ParentID,
		Kladr.Name as Name,
		PostIndex = coalesce(cte.PostIndex, Kladr.PostIndex),
		Prefix.level
	from Kladr
		join Prefix on Kladr.PrefixID = Prefix.PrefixID
		join cte on Kladr.KladrID = cte.ParentID	
)
select top  1 
	cte.KladrID0,
	A1.KladrID as KladrID1,
	A2.KladrID as KladrID2, 
	A3.KladrID as KladrID3,
	A4.KladrID as KladrID4,
	A5.KladrID as KladrID5,
	A1.Name as Name1,
	A2.Name as Name2,
	A3.Name as Name3,
	A4.Name as Name4,
	A5.Name as Name5,
	cast(null as varchar( 10 )) as HouseNumber,
	cast(null as varchar( 10 )) as HouseCorp,
	cast(null as varchar( 10 )) as Flat,
	cte.PostIndex
from cte
	outer apply(select KladrID, Name from cte where level= 1 ) A1
	outer apply(select KladrID, Name from cte where level= 2 ) A2
	outer apply(select KladrID, Name from cte where level= 3 ) A3
	outer apply(select KladrID, Name from cte where level= 4 ) A4
	outer apply(select KladrID, Name from cte where level= 5 ) A5
...
Рейтинг: 0 / 0
08.06.2010, 16:32
    #36675953
Kirill Razuvaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Senya_LНапрасно :-) Не претендуя на изящество:Ни асилил... слишком много букоф... :-)
P.S. Тот вопрос, что был - решен, нет смысла менять. А "будет день - будет пища"... :-)
...
Рейтинг: 0 / 0
08.06.2010, 21:59
    #36676645
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Kirill RazuvaevSenya_LНапрасно :-) Не претендуя на изящество:Ни асилил... слишком много букоф... :-)Что букафф много я уже потом сам увидел Этот запрос раскидает древовидный кладр (та флора, шо ты не любишь;)) по 5 уровням. Там на самом деле много лишнего балласта. Простой копипаст не в кон.
Kirill RazuvaevP.S. Тот вопрос, что был - решен, нет смысла менять. А "будет день - будет пища"... :-)Если работает - то не трогай. Просто автор изначально настроен был на древо и зачем ему мешать. Особенно, если я с ним согласен
...
Рейтинг: 0 / 0
09.06.2010, 13:17
    #36677926
Хорёк
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Senya_L,


я в принципе уже залил информацию в БД, если интересно, могу показать структуру таблиц
...
Рейтинг: 0 / 0
09.06.2010, 13:24
    #36677951
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
ХорёкSenya_L,


я в принципе уже залил информацию в БД, если интересно, могу показать структуру таблицИнтересно будет сравнить. И для потомков, если не жалко выложите скрипты преобразования. КЛАДР - тема всерьез и надолго =).
...
Рейтинг: 0 / 0
10.06.2010, 20:51
    #36681603
Хорёк
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
завтра, то бишь в пятницу буду на работе - опубликую скрипты на создание таблиц, заливка данных пока хромает - грузит дубли - думаю, на днях исправлю и следом закину.
...
Рейтинг: 0 / 0
12.06.2010, 07:20
    #36684036
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Тогда я опубликую
Создание временных таблиц, в которые заливаем банные массовой вставкой. Данные таблиц предвариельно выгружаем в plain-файл.
Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
use tempdb;

if object_id('o_SOCRBASE') is not null
	drop table o_SOCRBASE;

create table o_SOCRBASE(
	level tinyint null,
	SCNAME varchar( 10 ) null,
	SOCRNAME varchar( 29 ) null,
	KOD_T_ST int null
);


if object_id('o_KLADR') is not null
	drop table o_KLADR;

create table o_KLADR(
	NAME varchar( 40 ) null,
	SOCR varchar( 10 ) null,
	CODE char( 13 ) null,
	[INDEX] char( 6 ) null,
	GNINMB char( 4 ) null,
	UNO CHAR( 4 ) null,
	OCATD char( 11 ) null,
	[STATUS] char( 1 ) null
);

if object_id('o_STREET') is not null
	drop table o_STREET;

create table o_STREET(
	NAME varchar( 40 ) null,
	SOCR varchar( 10 ) null,
	CODE char( 17 ) null,
	[INDEX] char( 6 ) null,
	GNINMB char( 4 ) null,
	UNO CHAR( 4 ) null,
	OCATD char( 11 ) null
);


if object_id('o_ALTNAMES') is not null
	drop table o_ALTNAMES;

create table o_ALTNAMES(
	OLDCODE varchar( 19 ) null,
	NEWCODE varchar( 19 ) null,
	LEVEL tinyint null
);
Рабочие таблицы. Создаются в контексте соединения с требуемой БД. Индексы и ограничения лучше создавать после массовой вставки из текстовых файлов.
Код: 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.
create table Prefix(
	PrefixID smallint not null,
	level tinyint not null,
	Name varchar( 10 ) not null,
	FullName varchar( 29 ) not null,
	Dot bit constraint DF_Prefix_Dot default( 0 )
);



create table Kladr(
	KladrID int  identity( 1 ,  1 ),
	ParentID int null,
	PrefixID smallint not null,
	Name varchar( 40 ) not null,
	Code varchar( 19 ) not null,
	PostIndex char( 6 ) null,
	GNINMB char( 4 ) null,
	UNO char( 4 ) null,
	OCATD char( 11 ) null,
	Status char( 1 ) null
);

GO

create unique clustered index clst on Prefix(PrefixID);
create unique clustered index clst on Kladr(ParentID, KladrID);
create unique index IX_Code on Kladr(Code);

alter table Prefix add constraint PK_Prefix primary key nonclustered(PrefixID);


alter table Kladr add constraint PK_Kladr primary key nonclustered(KladrID);
alter table Kladr add constraint FK_Kladr_Prefix foreign key(PrefixID) references Prefix(PrefixID);
alter table Kladr add constraint FK_Kladr_Kladr foreign key(ParentID) references Kladr(KladrID);
Запросы на преобразование (неактивные элементы классификатора отбрасываются)
Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
-- индексы на временные таблицы
create unique clustered index clst on o_KLADR(Code)
create unique clustered index clst on o_STREET(Code)

GO
-- префиксы
insert into Prefix(PrefixID, level, Name, FullName)
select
	KOD_T_ST, level, SCNAME, SOCRNAME
from tempdb..o_SOCRBASE


-- уровень 1
insert into Kladr(ParentID, PrefixID, Name, Code, PostIndex, GNINMB, UNO, OCATD, Status)
select
	null, P.PrefixID, K.NAME, K.CODE, K.[INDEX], K.GNINMB, K.UNO, K.OCATD, K.Status
from tempdb..o_KLADR K
	join Prefix P on K.SOCR = P.Name and P.level =  1 
where 
	CODE like '__00000000000'
	and not exists(
		select * from Kladr where Code = K.CODE
	)
order by K.Code

-- уровень 2
insert into Kladr(ParentID, PrefixID, Name, Code, PostIndex, GNINMB, UNO, OCATD, Status)
select
	PK.KladrID, P.PrefixID, K.NAME, K.CODE, K.[INDEX], K.GNINMB, K.UNO, K.OCATD, K.Status
from tempdb..o_KLADR K
	join Prefix P on K.SOCR = P.Name and P.level =  2 
	join Kladr PK on left(K.Code,  2 ) = left(PK.Code,  2 ) and right(PK.Code,  2 ) = '00'
where 
	K.CODE like '_____00000000' and K.CODE not like '__00000000000'
	and not exists(
		select * from Kladr where Code = K.CODE
	)
order by K.Code


-- уровень 3
insert into Kladr(ParentID, PrefixID, Name, Code, PostIndex, GNINMB, UNO, OCATD, Status)
select
	PK.KladrID, P.PrefixID, K.NAME, K.CODE, K.[INDEX], K.GNINMB, K.UNO, K.OCATD, K.Status
from tempdb..o_KLADR K
	join Prefix P on K.SOCR = P.Name and P.level =  3 
	join Kladr PK on left(K.Code,  5 ) = left(PK.Code,  5 ) and right(PK.Code,  2 ) = '00'
where 
	K.CODE like '________00000' and K.CODE not like '_____00000000' and K.CODE not like '__00000000000'
	and not exists(
		select * from Kladr where Code = K.CODE
	)
order by K.Code

-- уровень 4
insert into Kladr(ParentID, PrefixID, Name, Code, PostIndex, GNINMB, UNO, OCATD, Status)
select
	PK.KladrID, P.PrefixID, K.NAME, K.CODE, K.[INDEX], K.GNINMB, K.UNO, K.OCATD, K.Status
from tempdb..o_KLADR K
	join Prefix P on K.SOCR = P.Name and P.level =  4 
	join Kladr PK on left(K.Code,  8 ) = left(PK.Code,  8 ) and right(PK.Code,  2 ) = '00' and K.CODE != PK.Code
where 
	K.CODE like '___________00' and K.CODE not like '________00000' 
		and K.CODE not like '_____00000000' and K.CODE not like '__00000000000'
	and not exists(
		select * from Kladr where Code = K.CODE
	)
order by K.Code

-- уровень 5
	insert into Kladr(ParentID, PrefixID, Name, Code, PostIndex, GNINMB, UNO, OCATD, Status)
	select
		PK.KladrID, P.PrefixID, S.NAME, S.CODE, S.[INDEX], S.GNINMB, S.UNO, S.OCATD, null
	from tempdb..o_STREET S
		join Prefix P on S.SOCR = P.Name and P.level =  5 
		join Kladr PK on left(S.Code,  11 ) = left(PK.Code,  11 ) and right(PK.Code,  2 ) = '00' and S.CODE != PK.Code
	where 
		right(S.Code,  2 ) = '00'
		and not exists(
			select * from Kladr where Code = S.CODE
		)
order by S.Code


2Кирилл Разуваев, мы совсем забыли, что кроме переименования, для элемента КЛАДР еще возможны слияния, удаления и пр. :(
...
Рейтинг: 0 / 0
12.06.2010, 13:29
    #36684176
Kirill Razuvaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КЛАДР
Senya_L... в которые заливаем банные массовой вставкой... Оговорочка-то - по Фрейду... ;-)

2Кирилл Разуваев, мы совсем забыли, что кроме переименования, для элемента КЛАДР еще возможны слияния, удаления и пр. :(Не помню, честно говоря, как в КЛАДР описаны правила слияния, а вот по удалению не вижу особых проблем. Удаление данных без подчиненных сводится к установке флага, в случае же наличия подчиненных - нужно разбираться. Варианта событий я вижу два: удаление с подчиненными (удаление "мертвых" населенных пунктов) и удаление узла с переподчинением или даже слиянием подчиненных (смена административного деления). Первый обсуждать особого смысла нет, ибо легко решается в любом из (обсуждаемых) вариантов реализации. А вот реализацию второго - есть сомнения, что удастся автоматизировать в силу нестабильности исходных данных... Хотя, возможно, кто-то сможет предложить довольно общее решение. Короче, нужно попробовать преобразовать дерево в граф посредством интеграции altnames.dbf
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / КЛАДР / 25 сообщений из 45, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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