Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблица ОКАТО / 6 сообщений из 6, страница 1 из 1
15.10.2010, 10:21
    #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
15.10.2010, 11:31
    #36900955
Nushi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица ОКАТО
Senya_L,

а мне больше дерево нравится.
Данных там не так много, и отрабатывать дерево будет быстро.
имхо для Oracle.
...
Рейтинг: 0 / 0
15.10.2010, 12:16
    #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
15.10.2010, 12:22
    #36901123
Шайтан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица ОКАТО
вот тут есть уже в sql-скрипте, может пригодиться

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

Ну и что???
названия то разные.
Делайте дерево и оставьте признак как он и есть 1 и 2.
правда хз что это такое
и будет вам счастьЁ!
...
Рейтинг: 0 / 0
06.01.2011, 15:06
    #37047590
Sha
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]