ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА 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
27. октября 2012 01:07

tsql

Продолжаю серию практических постов о реализации различных структур в БД. В этом посте речь пойдет о таблицах описывающих марку, модель, модификацию машины, а также ее параметры. Начало серии смотри в этом Описания таблиц отвечающих за человека, паспорт, права (часть 1) посте. Оформление таблиц делалось в соответствии с Об одном из способов именования таблиц, представлений, хранимых процедур.... Единственное отличие это то, что все части и вспомогательные сущности помещаются в таблицы с "типом" TOB. И еще один важный момент касающийся именно описания машин: в скриптах группой моделей называется, то что обычно называют модель, а моделью, то что обычно называют модификацией. Так что, если вы будете применять эти скрипты в своем проекте, то переименуйте эти две таблицы соответственно. Сначала скрипт будет идти просто как текст поста, чтобы вы могли посмотреть о чем идет речь. Потом будут диаграммы этой части БД. Потом скрипт целиком для накатывания на БД. И в конце архив с TSQL скриптами для каждой сущности в отдельности, для того чтобы их было удобно использовать в проекте базы данных в солюшене. Для простоты ссылки ведущие на таблицы, описания которых я не собираюсь публиковать, оформлены просто как значения типа идентификатор (в общем скрипте). В этом проекте это GUID (uniqueidentifier).


USE [CarDB]
GO

-- тип корпуса ТС, соответствует модели машины как 1 к 1
-- например, "седан", "хэтчбэк", "универсал", "джип" ...
CREATE TABLE [dbo].[tblVehicleDICBodyType]
(
	Id      uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, 
	Value   nvarchar(32) NOT NULL, -- это надпись которую видит (сразу) пользователь в GUI 
	Comment nvarchar(max) NULL     -- некое средней длины дополнительное пояснение
)

/*
Список типов тормозов транспортного средства
*/
CREATE TABLE [dbo].[tblVehicleDICBrakeType]
(
	Id		uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL,
	Value	nvarchar(64)  NULL, 
	Comment nvarchar(max) null
)

-- Список типов брэндов: неизвестен, отечественный, зарубежный
CREATE TABLE [dbo].[tblVehicleDICBrandType]
(
	Id			uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, 
	Value		nvarchar(32) NOT NULL, 
	Comment		nvarchar(max) NULL     
)

/*
Варианты расположения цилиндров
*/
CREATE TABLE [dbo].[tblVehicleDICCylindersArrangement]
(
	Id		uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL,
	Value	nvarchar(32)  NULL, 
	Comment nvarchar(max) null
)

-- ведущие колеса транспортного средства: передние, задние, полный привод
CREATE TABLE [dbo].[tblVehicleDICDriveWheelsType]
(
	Id      uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, 
	Value   nchar(32) NOT NULL, -- ведущие колеса транспортного средства - строка
	Comment nvarchar(max) NULL  -- некое дополнительное пояснение
)

CREATE TABLE [dbo].[tblVehicleDICEngineArrangement]
(
	Id		uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL,
	Value	nvarchar(32)  NULL, 
	Comment nvarchar(max) NULL
)

-- тип двигателя: карбюраторный, инжекторный, дизельный
CREATE TABLE [dbo].[tblVehicleDICEngineType]
(
	Id      uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, 
	Value   nchar(64) NOT NULL, -- тип двигателя - строка
	Comment nvarchar(max) NULL  -- некое дополнительное пояснение
)

-- тип и марка топлива
CREATE TABLE [dbo].[tblVehicleDICFuelType]
(
	Id      uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, 
	Value   nchar(64) NOT NULL, -- тип и марка топлива - строка
	Comment nvarchar(max) NULL  -- некое дополнительное пояснение
)

-- где произведено ТС: неизвестно, в россии, за рубежом
CREATE TABLE [dbo].[tblVehicleDICRussianProduction]
(
	Id			uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, 
	Value		nvarchar(32) NOT NULL, 
	Comment		nvarchar(max) NULL     
)

/*
Список вариантов подвесок
*/
CREATE TABLE [dbo].[tblVehicleDICSuspension]
(
	Id		uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL,
	Value	nvarchar(max)  NULL, 
	Comment nvarchar(max) null
)

-- тип коробки передач: ручная, автоматическая ...
CREATE TABLE [dbo].[tblVehicleDICTransmissionType]
(
	Id      uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, 
	Value   nchar(128) NOT NULL, -- тип коробки передач - строка
	Comment nvarchar(max) NULL  -- некое дополнительное пояснение
)

-- Параметры ТС.
-- Может быть связана с tblVehicleBOBVehicle или с tblVehicleBOBModel
-- Параметры, указанные как ссылка из tblVehicleBOBVehicle, 
-- должны иметь приоритет над параметрами из tblVehicleBOBModel
CREATE TABLE [dbo].[tblVehicleBOBVehicleParams]
(
	Id		   uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL,
	BodyType   uniqueidentifier REFERENCES tblVehicleDICBodyType(Id)   NOT NULL, -- тип корпуса машины
		
	Weigth   int NULL, -- вес машины в килограммах
	
	Length   int NULL, -- длина машины в миллиметрах
	Width    int NULL, -- длина машины в миллиметрах
	Height   int NULL, -- длина машины в миллиметрах
	
	WheelBase       int NULL, -- колесная база в миллиметрах
	FrontWheelGauge int NULL, -- колея передних колес в миллиметрах
	RearWheelGauge  int NULL, -- колея задних колес в миллиметрах
	RoadClearance   int NULL, -- клиренс в миллиметрах

	FuelType     uniqueidentifier REFERENCES tblVehicleDICFuelType(Id) NULL,-- тип и марка топлива
	GasCanBeUsed bit NULL, -- может ли машина ездить на газе

	EngineType   uniqueidentifier REFERENCES tblVehicleDICEngineType(Id)       NULL, -- тип двигла
	EngineVolume int NULL, -- объем двигателя в кубических сантиметрах
	EnginePower  int NULL, -- мощьность двигателя в лошадиных силах
	
	Transmission uniqueidentifier REFERENCES tblVehicleDICTransmissionType(Id) NULL, -- тип коробки
	
	DriveWheels  uniqueidentifier REFERENCES tblVehicleDICDriveWheelsType(Id)  NULL, -- колеса ведущие
	
	PlacesCount  int NULL, -- количество мест
	DoorsCount   int NULL,  -- количество дверей
	
	Torque nvarchar(64) null, -- Крутящий момент, Н•м при об/мин
	IsSupercharge bit null, -- Наличие наддува
	
	ValvesForCylinder int null, -- Количество клапанов на цилиндр
	IsABS bit null, -- Наличие АБС
	IsESP bit null, -- Система курсовой устойчивости
	Acceleration nvarchar(24) null, -- Разгон с места до 100 км/ч, с
	MaxSpeed int null, -- Максимальная скорость, км/ч
	FuelExpense nvarchar(24) null, -- Средний условный расход топлива, л/100 км
	
	FrontBrake uniqueidentifier REFERENCES tblVehicleDICBrakeType(Id)       NULL, -- Тормоза передние
	BackBrake uniqueidentifier REFERENCES tblVehicleDICBrakeType(Id)       NULL, -- Тормоза задние
	CylindersArrangement uniqueidentifier REFERENCES tblVehicleDICCylindersArrangement(Id) NULL, 
	EngineArrangement uniqueidentifier REFERENCES tblVehicleDICEngineArrangement(Id)       NULL, 
	FrontSuspension uniqueidentifier REFERENCES tblVehicleDICSuspension null, -- Передняя подвеска
	BackSuspension uniqueidentifier REFERENCES tblVehicleDICSuspension null, -- Задняя подвеска
	LastChangeDate datetime2
)

-- марка ТС это название ее производителя, 1 марка соотв. N моделям транспротного средства
-- например, "BMW", "Audi", "Maserati", "Saleen", "Koenigsegg", "Тагаз", "SsangYoung" ...
-- если тип брэнда не понадобится (что весьма вероятно), то надо его похарчить в тиши
CREATE TABLE [dbo].[tblVehicleTOBVehicleMark]
(
	Id			uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, 
	Value		nvarchar(32) NOT NULL, -- это надпись которую видит (сразу) пользователь в GUI 
	Comment		nvarchar(max) NULL,     -- некое средней длины доп. пояснение
	BrandType	uniqueidentifier references tblVehicleDICBrandType(Id) null 
)

-- класс машин или группа моделей
-- на самом деле это в простонародье как раз модель 
-- надо бы переименовать в будущем чтобы не путаться
-- например: "C", "E", "3", "A8" 
-- внимание! СООТВЕТСТВУЕТ НА САМОМ ДЕЛЕ МОДЕЛИ (В ТЕРМИНАХ auto.mail.ru)
CREATE TABLE [dbo].[tblVehicleTOBModelGroup]
(
	Id      uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, 
	Value   nvarchar(32) NOT NULL, -- строка с надписью в интерфейсе
	Comment nvarchar(max) NULL,    -- некое дополнительное пояснение
	
	Mark    uniqueidentifier REFERENCES tblVehicleTOBVehicleMark(Id) NOT NULL  -- марка машины
)

-- модель машины, 1 марка машины соответствует N моделям транспортного средства
-- например, "E36 335i MT" 
-- в полное название конкретной модели входит: 
--     название корпуса (производительское, если есть, например E45), 
--     объем двигателя,
--     буквы типа двигателя (если есть),
--     остальные буквы обозначающие модификацию
-- внимание! СООТВЕТСТВУЕТ НА САМОМ ДЕЛЕ МОДИФИКАЦИИ (В ТЕРМИНАХ auto.mail.ru)
CREATE TABLE [dbo].[tblVehicleBOBModel]
(
    Id         uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, 
	Value      nvarchar(70)                                            NOT NULL, -- название модели, полное
	Comment    nvarchar(max)                                           NULL, -- некое длинное пояснение
    ModelGroup uniqueidentifier REFERENCES tblVehicleTOBModelGroup(Id) NOT NULL, -- класс/группа моделей
	VehicleParams uniqueidentifier REFERENCES [tblVehicleBOBVehicleParams](Id) NULL, -- ссылка на параметры ТС

	-- фиг его знает почему, но оно тут :) 
	-- это придумал не я, я его хотел зпихнуть в tblVehicleBOBVehicle
	-- ну и ладно сами себе карлосы кастанеды
	IsRussianProduction uniqueidentifier REFERENCES tblVehicleDICRussianProduction(Id) NULL, -- российское производство

	LastChangeDate datetime2
)

-- серия выпуска для модели, одной модели может соответствовать много серий или ни одной 
CREATE TABLE [dbo].[tblVehicleBOBSeries]
(
    Id                uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID() ROWGUIDCOL, 
	SeriesLabel       nvarchar(16)   NULL, -- краткое обозначение серии для ориентации в таблице
    Comment           nvarchar(max)  NULL, -- некий длинный коментарий или пояснение для серии  
    
    Model             uniqueidentifier REFERENCES tblVehicleBOBModel(Id) NOT NULL, -- модель машины
	ProdBegDate       date NOT NULL, -- дата начала производства этой серии
	ProdEndDate       date NOT NULL, -- дата конца  производства этой серии	
	VINIsReq          bit  NOT NULL, -- признак необходимости ввода VIN для этой серии
	ChassisNumIsReq   bit  NOT NULL, -- признак необходимости ввода номера шасси для этой серии
	VINRegExp         nvarchar(1024) NULL, -- строка с рег. выраженим для проверки VIN  
	ChassisNumRegExp  nvarchar(1024) NULL,  -- строка с рег. выраженим для проверки номера шасси
	LastChangeDate datetime2
)
параметры машины таблицы БД
параметры машины марка модель серия

Это скрипт целиком в виде одного файла - CarDB_Vehicle.sql (18,46 kb).

А это скрипты создания каждой отдельной таблицы - CarDBVehicleByTable.zip (9,64 kb),
для использования в проекте базы данных в солюшене.

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


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

Описания таблиц отвечающих за владение машиной (часть 2)
Продолжаю серию практических постов о реализации различных структур в БД. В этом посте речь пойдет о таблицах описывающих владение автомобилем (транспортным средством). Начало серии смотри в этом Описания таблиц отвечающих за человека, паспорт, права (часть 1) посте. Оформление таблиц делалось в соответствии с Об одном из способов именования таблиц, представле...

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

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




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


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