ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

acer ado.net amd asp.net c sharp c# cms css exceptions google html ipad iphone it бизнес javascript jquery linq microsoft mysql net nokia nokia lumia samsung seo silverlight sql surface tsql windows 8 windows blue windows phone windows rt xna безопасность библиотека вопросы на собеседовании интересные проекты интернет интернет магазин исключения книга книги компьютерная безопасность компьютерные игры контролы курсы по программированию логированние исключений мобильные приложения монетизация сайтов наушники новости новости it новости microsoft новости интернет новости технологий ноутбук ноутбуки обработка исключений оптимизация острова периферия планшет планшеты поддержка сайтов поисковое продвижение программы продвижение продвижение сайта продвижение сайтов рабство разработка игр разработка сайтов раскрутка сайта рекламные технологии смартфон смартфоны собеседование создание сайтов средства разработки туризм фриланс хостинг яндекс
  << Предыдущий пост       Следующий пост >>  
От: kramer
29. октября 2012 22:03

ms sql server

Продолжаю серию практических постов о реализации различных структур в БД. В этом посте речь пойдет о таблицах описывающих различные данные соответствующие содержимому КЛАДР-а. Эти таблицы устроены таким образом, чтобы ими было удобно пользоваться для различных задач. В этом смысле они более универсальны, чем таблицы самого КЛАДР-а. КЛАДР имеет особое значение для нашей страны. На 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. Сделать это достаточно быстро, и если кто-нибудь соберется прикрутить к своему проекту КЛАДР, то этот пост сильно упростит и ускорит его работу.

Похожие записи


Вопросы на собеседовании C#, Net, ASP.NET, SQL
Продолжая тему вопросов на собеседовании. Нашел еще одну подборку. Оригинал лежит здесь . Перенес, чтобы не затерялось. Есть вполне вменяемые ответы (хотя, на некоторые вопросы ответил бы по-другому). Ответы находятся после списка вопросов, я их не менял. 23. Что такое шаблон проектирования Model/View/Controller? Как и зачем его применяют? 2...

Способы заработка на сайте
На этом блоге было много постов про производство и раскрутку сайтов. Но пока не было про заработок на них. Пора исправить этот недочет. Здесь будут описаны по возможности не фантастичные, и не супер низко прибыльные способы. Также упор будет сделан именно на организацию процесса, а не технических деталях, которых в обилии в интернете. Несмотря на то, что как пр...

Сколько вы стоите, или как вести переговоры о зарплате
Не в деньгах счастье. Многие добавят «но в их количестве». Можно долго рассуждать о преданности любимому делу, заводить разговоры о стремлении к профессиональному росту и работе в сплоченном коллективе. Но это, скорее, прелюдия к главному и насущному вопросу «сколько?». И от полученного ответа зависит либо дальнейший энтузиазм в разговоре, либо плохо скрываемое ...

Комментарии

 
nistelroi 17.11.2013 0:21:38 #

Сэкономило кучу времени, спасибо!

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий