![]() ![]() ![]()
Какой рейтинг вас больше интересует?
|
![]()
Описания таблиц отвечающих за описание машины (часть 3)2012-10-27 01:07:00 (читать в оригинале)![]() Продолжаю серию практических постов о реализации различных структур в БД. В этом посте речь пойдет о таблицах описывающих марку, модель, модификацию машины, а также ее параметры. Начало серии смотри в этом Описания таблиц отвечающих за человека, паспорт, права (часть 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), для использования в проекте базы данных в солюшене.
|
![]() ![]()
Категория «Закон»
Взлеты Топ 5
Падения Топ 5
![]()
Популярные за сутки
|
Загрузка...

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