![]() ![]() ![]()
Какой рейтинг вас больше интересует?
|
![]()
Таблицы данных отвечающие за КЛАДР и загрузчик его данных2012-10-29 23:03:00 (читать в оригинале)![]() Продолжаю серию практических постов о реализации различных структур в БД. В этом посте речь пойдет о таблицах описывающих различные данные соответствующие содержимому КЛАДР-а. Эти таблицы устроены таким образом, чтобы ими было удобно пользоваться для различных задач. В этом смысле они более универсальны, чем таблицы самого КЛАДР-а. КЛАДР имеет особое значение для нашей страны. На 3-х местах работы (причем 2 из них коммерческие), я взаимодействовал с КЛАДР-ом. Так что, думаю, кому-нибудь пригодиться то, что я тут выложу. Оформление таблиц делалось в соответствии с Об одном из способов именования таблиц, представлений, хранимых процедур.... Единственное отличие это то, что все части и вспомогательные сущности помещаются в таблицы с "типом" TOB. Сначала скрипт будет идти просто как текст поста, чтобы вы могли посмотреть о чем идет речь. Потом будут диаграммы этой части БД. Потом скрипт целиком для накатывания на БД. Потом архив с TSQL скриптами для каждой сущности в отдельности, для того чтобы их было удобно использовать в проекте базы данных в солюшене. И в конце, самое полезное - проект загрузчика данных из файлов официального КЛАДР-а. Правда этого не достаточно для загрузки и кое-что придется сделать вам самим, но все же этот пост вам сильно поможет, если в вашем проекте нужен КЛАДР. Для простоты ссылки ведущие на таблицы, описания которых я не собираюсь публиковать, оформлены просто как значения типа идентификатор (в общем скрипте). В этом проекте это GUID (uniqueidentifier). use [test] GO CREATE TABLE [dbo].[tblKladrDICCountyType] ( Id uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, Value nvarchar(40) NOT NULL, -- название района Comment nvarchar(max) NULL, -- некое средней длины дополнительное пояснение ) GO -- тип географического объекта -- обозначает на какую таблицу ссылка: tblKladrTOBCountry, tblKladrTOBRegion, tblKladrTOBSettlement CREATE TABLE [dbo].[tblKladrDICObjectType] ( Id uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, Value nvarchar(16) NULL, -- тип гео объекта Comment nvarchar(max) NULL -- некое дополнительное пояснение ) GO -- тип региона внутри страны (первичные данные берутся из КЛАДР) CREATE TABLE [dbo].[tblKladrDICRegionType] ( Id uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, Value nchar(16) NOT NULL, -- тип региона - строка Comment nvarchar(max) NULL, -- некое средней длины дополнительное пояснение ) GO -- тип населенного пункта (первичные данные берутся из КЛАДР) -- например: городок, деревня, аул, аал, заимка CREATE TABLE [dbo].[tblKladrDICSettlementType] ( Id uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, Value nchar(16) NOT NULL, -- тип населенного пункта - строка Comment nvarchar(max) NULL -- некое средней длины дополнительное пояснение ) GO -- тип улицы (первичные данные берутся из КЛАДР) -- например: улица, переулок, проезд, площадь и т.п. CREATE TABLE [dbo].[tblKladrDICStreetType] ( Id uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, Value nchar(16) NOT NULL, -- тип улицы - строка Comment nvarchar(max) NULL -- некое средней длины дополнительное пояснение ) GO -- страна CREATE TABLE [dbo].[tblKladrTOBCountry] ( Id uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, Value nchar(40) NOT NULL, -- название страны Comment nvarchar(max) NULL, -- некое средней длины дополнительное пояснение PartOfPhoneNumber nchar(4) -- номер страны внутри номера телефона ) GO -- регионы страны, максимального размера, то есть области/штаты, но не районы/дистрикты CREATE TABLE [tblKladrTOBRegion] ( Id uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, Value nchar(40) NOT NULL, -- название региона Comment nvarchar(max) NULL, -- некое средней длины дополнительное пояснение Country uniqueidentifier REFERENCES tblKladrTOBCountry(Id) NULL, -- страна в которой регион RegionType uniqueidentifier REFERENCES tblKladrDICRegionType(Id) NULL, -- тип региона PartOfAutoNumber nchar(2), -- номер региона внутри номера транспортного средства KLADRCode nchar(17) NULL, -- код для сопоставления с КЛАДР(здесь полные 17 цифр) IsActual bit, -- признак актуальности объекта PartOfPhoneNumber nchar(7) NULL, -- номер региона внутри номера телефона TimeZone uniqueidentifier, LastChangeDate datetime2 ) GO CREATE TABLE [dbo].[tblKladrTOBCounty] ( Id uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, Value nvarchar(40) NOT NULL, -- название района Comment nvarchar(max) NULL, -- некое средней длины sдополнительное пояснение Region uniqueidentifier references tblKladrTOBRegion(Id) NOT NULL, -- ссылка на регион CountyType uniqueidentifier references tblKladrDICCountyType(Id), --тип района KLADRCode nchar(17) NULL, -- код для сопоставления с КЛАДР(здесь полные 17 цифр) PostalIndex nchar(6) NULL, -- почтовый индекс IsActual bit, -- признак актуальности объекта LastChangeDate datetime2 ) GO -- населенные пункты CREATE TABLE [dbo].[tblKladrTOBSettlement] ( Id uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, Value nvarchar(40) NOT NULL, -- название населенного пункта Comment nvarchar(max) NULL, -- некое средней длины дополнительное пояснение Region uniqueidentifier REFERENCES tblKladrTOBRegion(Id) NOT NULL, -- регион где нас. пункт County uniqueidentifier REFERENCES tblKladrTOBCounty(Id) NOT NULL, -- район где нас. пункт SettlementType uniqueidentifier REFERENCES tblKladrDICSettlementType(Id) NULL, -- тип нас. пункта KLADRCode nchar(17) NULL, -- код для сопоставления с КЛАДР(здесь полные 17 цифр) PostalIndex nchar(6) NULL, -- почтовый индекс IsActual bit, -- признак актуальности объекта IsFake bit, -- признак фиктивности IsRAT bit, -- в поселении имеется присутствие РАТ LastChangeDate datetime2 ) GO -- улица существующая в некотором населенном пункте (первоначально согласно кладр) CREATE TABLE [dbo].[tblKladrTOBStreet] ( Id uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, Value nvarchar(40) NOT NULL, -- название населенного пункта Settlement uniqueidentifier REFERENCES tblKladrTOBSettlement(Id) NULL, -- нас. пункт где улица StreetType uniqueidentifier REFERENCES tblKladrDICStreetType(Id) NULL, -- тип улицы (ул, пер...) KLADRCode nchar(17) NULL, -- код для сопоставления с КЛАДР(здесь полные 17 цифр) PostalIndex nchar(6) NULL, -- почтовый индекс LastChangeDate datetime2 ) GO ![]() Это скрипт целиком в виде одного файла - KLADR_DB.sql (10,62 kb). А это скрипты создания каждой отдельной таблицы - KLADR_Db_Entities.zip (5,43 kb), для использования в проекте базы данных в солюшене. А это загрузчик из БД КЛАДР-а - KLADR_Loader.zip (12,19 kb). Правда не полный, вам придется использовать ORM, подойдут LINQ2SQL или Entity Framework. Сделать это достаточно быстро, и если кто-нибудь соберется прикрутить к своему проекту КЛАДР, то этот пост сильно упростит и ускорит его работу.
|
![]() ![]()
Категория «Архитектура»
Взлеты Топ 5
Падения Топ 5
![]()
Популярные за сутки
|
Загрузка...

BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.