powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблица ОКАТО
6 сообщений из 6, страница 1 из 1
Таблица ОКАТО
    #36900754
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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
-- 1) Code на манер hierarchyid
	create table OCATO(
		Code varchar( 11 ) not null,
		Name varchar( 151 ) not null,
		Razdel tinyint,
		Centrum varchar( 81 ),
		NOMDESCR varchar( 251 ),
		NOMAKT varchar( 4 ),
		[STATUS] float,
		DATA_UPD datetime,
		constraint PK_OCATO primary key clustered(Code)
	);

-- Примечание: Выборка потомков элемента с Code='01201' будет выглядеть так
select
  *
from OCATO
where Code like '01201%';
-- Я забыл, как называется такой тип ссылочной целостности :(

-- 2) как в исходной dbf-таблице
	create table OCATO(
		TER varchar( 2 ) not null,
		KOD1 varchar( 3 ) not null,
		KOD2 varchar( 3 ) not null,
		KOD3 varchar( 3 ) not null,
		Name varchar( 151 ) not null,
		Razdel tinyint,
		Centrum varchar( 81 ),
		NOMDESCR varchar( 251 ),
		NOMAKT varchar( 4 ),
		[STATUS] float,
		DATA_UPD datetime,
		constraint PK_OCATO primary key clustered(TER, KOD1, KOD2, KOD3)
	);

-- 3) классическое дерево
	create table OCATO(
		ID int not null, 
		ParentID int,
		Code varchar( 11 ) not null,
		Name varchar( 151 ) not null,
		Razdel tinyint,
		Centrum varchar( 81 ),
		NOMDESCR varchar( 251 ),
		NOMAKT varchar( 4 ),
		[STATUS] float,
		DATA_UPD datetime,
		constraint PK_OCATO primary key clustered(ID),
		constraint FK_Ocato_Tree foreign key(ParentID) references OCATO(ID)
	);

--  4 ) что-то еще...
...
Рейтинг: 0 / 0
Таблица ОКАТО
    #36900955
Nushi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Senya_L,

а мне больше дерево нравится.
Данных там не так много, и отрабатывать дерево будет быстро.
имхо для Oracle.
...
Рейтинг: 0 / 0
Таблица ОКАТО
    #36901101
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NushiSenya_L,

а мне больше дерево нравится.
Данных там не так много, и отрабатывать дерево будет быстро.
имхо для Oracle.Мне тоже дерево больше по душе. Но в ОКАТО несколько запутанная иерархия. Например, код ОКАТО в отличии от кода КЛАДР не уникален. :(
Код: plaintext
1.
 01201802000 	 01 	 201 	 802 	 000 	Алейский	 1 	п Алейский	NULL	 000 	 0 	 2009 - 12 - 15   00 : 00 : 00 . 000 
 01201802000 	 01 	 201 	 802 	 000 	Сельские населенные пункты Алейского сельсовета/	 2 	NULL	NULL	 000 	 0 	 2009 - 12 - 15   00 : 00 : 00 . 000 
Т.е. уникальна пара (Code, Razdel). Видимо, это и должно быть взято за первичный ключ. Составной ключ типа (TER, KOD1, KOD2, KOD3) неудобен, поскольку для привязки КЛАДРовских OCATD удобнее именно одно поле Code - соединение по вычисляемому выражению ни к чему, несмотря на малое количество данных.
...
Рейтинг: 0 / 0
Таблица ОКАТО
    #36901123
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот тут есть уже в sql-скрипте, может пригодиться

http://www.classbase.ru/okato
...
Рейтинг: 0 / 0
Таблица ОКАТО
    #36901170
Nushi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Senya_L,

Ну и что???
названия то разные.
Делайте дерево и оставьте признак как он и есть 1 и 2.
правда хз что это такое
и будет вам счастьЁ!
...
Рейтинг: 0 / 0
Таблица ОКАТО
    #37047590
Фотография Sha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_LNushiSenya_L,

а мне больше дерево нравится.
Данных там не так много, и отрабатывать дерево будет быстро.
имхо для Oracle.Мне тоже дерево больше по душе. Но в ОКАТО несколько запутанная иерархия. Например, код ОКАТО в отличии от кода КЛАДР не уникален. :(
Код: plaintext
1.
 01201802000 	 01 	 201 	 802 	 000 	Алейский	 1 	п Алейский	NULL	 000 	 0 	 2009 - 12 - 15   00 : 00 : 00 . 000 
 01201802000 	 01 	 201 	 802 	 000 	Сельские населенные пункты Алейского сельсовета/	 2 	NULL	NULL	 000 	 0 	 2009 - 12 - 15   00 : 00 : 00 . 000 
Т.е. уникальна пара (Code, Razdel). Видимо, это и должно быть взято за первичный ключ. Составной ключ типа (TER, KOD1, KOD2, KOD3) неудобен, поскольку для привязки КЛАДРовских OCATD удобнее именно одно поле Code - соединение по вычисляемому выражению ни к чему, несмотря на малое количество данных.
Вторая запись не есть "Административно - Территориальное Образование", такие из собственного классификатора надо просто исключать. Тогда все коды уникальны. Дерево легко строится для большинства регионов, кроме 5-ти, со сложной структурой АТО. В любом случае алгоритм парсинга вполне вменяемый. У меня к каждой записи просто добавлен parent, полученный этим самым парсингом. Для скорости код представлен BIGINT, математика работает.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблица ОКАТО
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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