Обоснование выбора SQL
SQL - сокращение от Structured Query Language (Язык структурированных запросов) - это универсальный язык для создания, модификации и управления данными в реляционных базах данных. Реляционная модель была предложена в 1970 году И.Ф. Коддом, работавшим в исследовательской лаборатории IBM в Сан-Хосе, Калифорния, и развивалась последующие десять лет в университетах и научных организациях. SQL - один из нескольких языков, выросших из этой идеи, в настоящее время практически полностью господствует в мире реляционных баз данных. Производители систем управления реляционными базами данных, первоначально использовавшие другие языки, сегодня полностью переориентировались на SQL. SQL - это язык, на котором можно «разговаривать» с реляционными базами данных. Все системы управления базами данных предназначены для хранения и обработки информации. Реляционный подход к управлению базами данных основан на математической модели, использующей методы реляционной алгебры и реляционного исчисления. Определение реляционной системы, так же, как и правила Кодда, требует чтобы весь диалог с базой данных велся на едином языке - иногда его называют общим подъязыком данных. В мире коммерческих систем управления базами данных такой язык получил название SQL. SQL используется для манипуляции с данными (data manipulation) - выборки и модификации, определения данных (data definition) и администрирования данных (data administration). Любая операция по выборке, модификации, определению или администрированию выполняется с помощью оператора (statement) или команды (command) SQL. Имеется две разновидности операции по манипуляции с данными - выборка данных (data retrieval) и модификация данных (data modification). Выборка - это поиск необходимых вам данных, а модификация означает добавление, удаление или изменение данных. Операции по выборке (чаще называемые запросами (queries)) осуществляют поиск в базе данных, наиболее эффективно извлекают затребованную вами информацию и отображает ее. Во всех запросах SQL используется ключевое слово Select. Создание базы данных
База данных – это именованная область на носителе данных, содержащая таблицы, индексы и другие объекты. Для создания базы данных используется команда CREATE DATABASE Создание базы данных "Ремонт и ТО автотранспорта" USE master; GO IF DB_ID (N'autorem') IS NOT NULL DROP DATABASE autorem; GO CREATE DATABASE autorem ON PRIMARY (SIZE = 20MB,Name='autorem', Filename='D:\Programs\Autorem\Bases\autorem.mdf') GO Создание таблиц
Создав базу данных и подключившись к ней, можно начать создание таблиц. Таблицы являются основными строительными блоками базы данных. В них содержаться строки и столбцы данных. С помощью команд определения данных SQL можно создавать, удалять и манипулировать таблицами (добавлять, удалять, переставлять столбцы и менять их параметры). В большинстве реализаций SQL таблицей владеет создавший ее пользователь, выдавая разрешения на ее использование другим пользователям. Чтобы создать таблицу, по меньшей мере, надо сделать следующее. 1. Задать имя таблицы. 2. Задать имена составляющих ее столбцов. 3. Определить тип данных для каждого столбца. 4. Определить ограничения для каждого столбца или таблицы. Для создания таблицы используется команда Create Table. Порядок создания таблиц: сначала создаются родительские (те, которые не содержат внешних ключей), затем дочерние таблиц. Если таблицы созданы и связаны правильно, то на диаграмме созданной в Enterprise Manager это будет выглядеть следующим образом (см. Приложение 1). Назначение ограничений NULL/NOT NULL - разрешает или не разрешает неопределенность значений атрибутов; ограничение NULL (задается по умолчанию) явно указывает, что значения столбца могут быть не определены. Ограничение UNIQUE - разрешает только уникальные значения атрибутов; Ограничение PRIMARY KEY - определяет первичный ключ отношения (в каждом отношении может иметь место только один первичный ключ, первичный ключ не может иметь NULL значений, одна и та же комбинация столбцов не может быть объявлена одновременно в качестве уникального и первичного ключа); Ограничение FOREIGN KEY - определяет внешний ключ отношения (в одном отношении может быть несколько внешних ключей); организует ссылку по внешнему ключу на заданное в предложении REFERENCES отношение. База данных "Ремонт и ТО автотранспорта" включает в себя следующие таблицы: · Автобаза (Autobase) · Справочник состояний (Condition) · Справочник технического обслуживания (Technical) · Тип марки (TypeMarka) · Марка (Marka) · Транспорт (Transport) · Состояние единицы (ConditionUnit) Таблица Автобаза (Autobase). Таблица содержит данные об автобазах. Каждая автобаза имеет уникальный номер, который является первичным ключом отношения. Схема отношения имеет вид: R(IDAutobase)={NameAutobase, Address}, что аналогично R(Уникальный номер автобазы)={Название автобазы, Юридический адрес автобазы}. Атрибут IDAutobase должен быть уникальным и не равен нулю, т.к. является первичным ключом. Атрибут NameAutobase должен быть уникален, т.к. совпадающие названия автобаз состояний нарушают нормализацию таблицы базы данных, а также не равен NULL. Размер поля NameAutobase должен содержать символьные значения и максимальный среднестатистический размер атрибута равен 11 символов (к примеру, "Автобаза №1", "Автобаза №2"), следовательно, принимая во внимание необходимость избыточности размера поля порядка 4 символов, имеем размер поля NameAutobase типа VARCHAR равным 15. Размер поля Address должен содержать символьные значения и максимальный среднестатистический размер атрибута равен 35 символов (например, "г. Воркута, ул. Автозаводская, 22"), следовательно, принимая во внимание необходимость резервной избыточности размера поля порядка 25 символов, имеем размер поля Address типа VARCHAR равным 60 (см. Таблица 1).
Таблица 1.
USE autorem; GO CREATE TABLE Autobase (IDAutobase INT IDENTITY CONSTRAINT AutobasePrimary PRIMARY KEY, NameAutobase VARCHAR (15) NOT NULL CONSTRAINT NameAutobaseUnique UNIQUE, Address VARCHAR (60)) GO
Справочник состояний (Condition) Таблица содержит данные о типе марки автотранспорта. Каждое состояние автотранспорта имеет уникальный номер, который является первичным ключом отношения. Схема отношения имеет вид: R(IDCondition)={NameCondition}, что аналогично R(ID справочника состояний)={Название состояния}. Атрибут IDCondition должен быть уникальным и не быть равным NULL, т.к. является первичным ключом. Атрибут NameCondition должен быть уникален, т.к. совпадающие названия состояний нарушают нормализацию таблицы базы данных, а также не равен NULL. Размер поля NameCondition должен содержать символьные значения и максимальный среднестатистический размер атрибута не превышает 6 символов (например, "ремонт", "ТР", "ТО1", "ТО2", "СО"), следовательно, принимая во внимание необходимость избыточности размера поля порядка 3 символов, имеем размер поля NameCondition типа VARCHAR равным 10 символам (см. Таблица 2).
Таблица 2.
USE autorem; GO CREATE TABLE Condition (IDCondition INT IDENTITY CONSTRAINT ConditionPrimary PRIMARY KEY, NameCondition VARCHAR (10) NOT NULL CONSTRAINT NameConditionUnique UNIQUE) GO
Справочник технического обслуживания ( Technical ) Таблица содержит данные о периодичности технического обслуживания подвижного состава. Каждый тип автотранспорта (легковые, автобусы, грузовые автобусы на базе грузовых автомобилей) имеет уникальный номер, который является первичным ключом отношения. Схема отношения имеет вид: R(IDTechnical)={NameTechnical, TO1, TO2}, что аналогично R(ID справочника технического обслуживания)={Название типа автотранспорта, Километраж для TO1, Километраж для TO2}. Атрибут IDTechnical должен быть уникальным и не быть равным NULL, т.к. является первичным ключом. Атрибут NameTechnical должен быть уникален, т.к. совпадающие названия состояний нарушают нормализацию таблицы базы данных, а также не равен NULL. Размер поля NameTechnical содержит символьные значения и максимальный среднестатистический размер атрибута не превышает 46 символа (например, "грузовые автобусы на базе грузовых автомобилей", "легковые", "автобусы"), следовательно, принимая во внимание необходимость избыточности размера поля порядка 13 символов, имеем размер поля NameTechnical типа VARCHAR равным 60 символам. Поле TO1 должно содержать числовые значения о пробеге автотранспорта до первого технического обслуживания, следовательно, поле ТО1 имеет тип INT. Поле TO2 должно содержать числовые значения о пробеге автотранспорта до второго технического обслуживания, следовательно, поле ТО2 имеет тип INT. (см. Таблица 3).
Таблица 3.
CREATE TABLE Technical (IDTechnical INT IDENTITY CONSTRAINT TechnicalPrimary PRIMARY KEY, NameTechnical VARCHAR (60) NOT NULL CONSTRAINT NameTechnicalUnique UNIQUE, TO1 INT, TO2 INT) Тип марки (TypeMarka) Таблица содержит данные о типе марки автотранспорта. Каждая марка автотранспорта имеет уникальный номер, который является первичным ключом отношения. Схема отношения имеет вид: R(IDTypeMarka)={IDTechnical, NameTypeMarka}, что аналогично R(Уникальный номер типа марки)={ID справочника технического обслуживания, Название типа марки}. Внешним ключом является IDTechnical (ID справочника технического обслуживания). Атрибут IDTypeMarka должен быть уникальным и не быть равным NULL, т.к. является первичным ключом отношения. Атрибут IDTechnical должен быть уникальным и не быть равным NULL, т.к. является внешним ключом отношения. Атрибут NameTypeMarka должен быть уникален, т.к. совпадающие названия состояний нарушают нормализацию таблицы базы данных, а также не должен быть равен NULL. Размер поля NameTypeMarka должен содержать символьные значения и максимальный среднестатистический размер атрибута равен 20 символов (к примеру, "бортовая платформа", "экс.грейд.бульд.погр"), следовательно, принимая во внимание необходимость избыточности размера поля порядка 15 символов, имеем размер поля NameTypeMarka типа VARCHAR равным 35 символам (см. Таблица 4).
Таблица 4.
USE autorem; GO CREATE TABLE TypeMarka (IDTypeMarka INT IDENTITY CONSTRAINT TypeMarkaPrimary PRIMARY KEY, IDTechnical INT NOT NULL, NameTypeMarka VARCHAR (35) NOT NULL CONSTRAINT NameTypeMarkaUnique UNIQUE CONSTRAINT TypeMarkaTechnicalForeign FOREIGN KEY (IDTechnical) REFERENCES Technical) GO Таблица Марка ( Marka ). Таблица содержит данные о марках автотранспорта. Каждая марка имеет уникальный номер, который является первичным ключом отношения. Схема отношения имеет вид: R(IDMarka)={IDTypeMarka, NameMarka, Capacity}, что аналогично R(Уникальный номер марки)={Уникальный номер типа марки, Название марки, Грузоподъемность}. Внешним ключом является IDTypeMarka (Уникальный номер типа марки). Атрибут IDMarka должен быть уникальным и не быть равным NULL, т.к. является первичным ключом. Атрибут IDTypeMarka должен быть уникальным и не быть равным NULL, т.к. является внешним ключом отношения. Атрибут NameMarka должен быть не равен NULL. Размер поля NameMarka должен содержать символьные значения и максимальный среднестатистический размер атрибута равен 10 символов (к примеру, " КамАЗ-5320", "ЗиЛ-433100"), следовательно, принимая во внимание необходимость избыточности размера поля порядка 5 символов, имеем размер поля NameCondition типа VARCHAR равным 15. Поле Capacity должен содержать дробные числовые значения о грузоподъемности автотранспорта, следовательно, поле Capacity имеет тип FLOAT (см. Таблица 5).
Таблица 5.
USE autorem; GO CREATE TABLE Marka (IDMarka INT IDENTITY CONSTRAINT MarkaPrimary PRIMARY KEY, IDTypeMarka INT NOT NULL, NameMarka VARCHAR (15) NOT NULL, Capacity FLOAT, CONSTRAINT MarkaTypeMarkaForeign FOREIGN KEY (IDTypeMarka) REFERENCES TypeMarka) GO
Таблица Транспорт ( Transport ). Таблица содержит данные об автотранспорте. Каждый автотранспорт имеет уникальный номер, который является первичным ключом отношения. Схема отношения имеет вид: R(IDTransport)={IDAutobase, IDMarka, GarageNumber, GosNumber}, что аналогично R(Уникальный номер единицы автотранспорта)={Уникальный номер автобазы, Уникальный номер марки, Гаражный номер, Госномер}. Внешними ключами являются IDAutobase (Уникальный номер автобазы), IDMarka(Уникальный номер марки). Атрибут IDTransport(Уникальный номер единицы автотранспорта) должен быть уникален и не равным NULL, т.к. является первичным ключом. Атрибут IDAutobase должен быть уникальным и не быть равным NULL, т.к. является внешним ключом отношения. Атрибут IDTypeMarka должен быть уникальным и не быть равным NULL, т.к. является внешним ключом отношения. Атрибут GarageNumber должен быть уникален, т.к. каждая единица автотранспорта имеет свой гаражный номер, а также не равен NULL. Атрибут GosNumber должен быть уникален, т.к. каждая единица автотранспорта имеет свой уникальный госномер, выданный в соответствующей ведомости. Размер поля GosNumber должен содержать символьные значения и максимальный среднестатистический размер атрибута равен 8 символам (к примеру, "В 990 АЕ", "КО 6718", "КУ 2664"), следовательно, принимая во внимание необходимость избыточности размера поля, имеем размер поля NameCondition типа VARCHAR равным 10. Размер поля GarageNumber должен содержать числовые значения о гаражном номере автотранспорта, следовательно, поле GarageNumber имеет тип INT (см. Таблица 6).
Таблица 6.
USE autorem; GO CREATE TABLE Transport (IDTransport INT IDENTITY CONSTRAINT TransportPrimary PRIMARY KEY, IDAutobase INT, IDMarka INT, GarageNumber INT NOT NULL CONSTRAINT GarageNumberTransportUnique UNIQUE, GosNumber VARCHAR(10) CONSTRAINT GosNumberTransportUnique UNIQUE, CONSTRAINT TransportAutobaseForeign FOREIGN KEY (IDAutobase)REFERENCES Autobase, CONSTRAINT TransportMarkaForeign FOREIGN KEY (IDMarka) REFERENCES Marka); GO
Состояние единицы ( ConditionUnit ) Таблица содержит данные обо всех состояниях автотранспорта. Каждый автотранспорт имеет уникальный номер, который является первичным ключом отношения. Схема отношения имеет вид: R(IDConditionUnit)={IDCondition, IDTransport, Working, Beginning, Theend}, что аналогично R(Уникальный номер работы)={Уникальный номер единицы автотранспорта, Уникальный номер состояния единицы, Описание работы, Начало состояния, Конец состояния}. Внешними ключами являются IDCondition (Уникальный номер состояния единицы), IDTransport (Уникальный номер единицы автотранспорта). Атрибут IDConditionUnit (Уникальный номер работы) должен быть уникален и не равным NULL, т.к. является первичным ключом. Атрибут IDCondition должен быть уникальным и не быть равным NULL, т.к. является внешним ключом отношения. Атрибут IDTransport должен быть уникальным и не быть равным NULL, т.к. является внешним ключом отношения. Размер поля Working должен содержать символьные значения и максимальный среднестатистический размер атрибута должен равен 200 символов (например, "покраска переднего левого крыла; покраска крыши а/м; покраска передней левой двери; подготовка к покраске и покраска передней левой стойки; чистка хромированных деталей"), следовательно, принимая во внимание необходимость избыточности размера поля порядка 50 символов, имеем размер поля Working типа VARCHAR равным 250. Поля Beginning и Theend должны содержать даты постановки автотранспорта на ремонт и снятие с него, следовательно, типы этих полей определим как DateTime (см. Таблица 7).
Таблица 7.
USE autorem; GO CREATE TABLE ConditionUnit (IDConditionUnit INT IDENTITY CONSTRAINT ConditionUnitPrimary PRIMARY KEY, IDCondition INT, IDTransport INT, Working VARCHAR(250), Beginning DateTime, Theend DateTime, CONSTRAINT ConditionUnitConditionForeign FOREIGN KEY (IDCondition)REFERENCES Condition, CONSTRAINT ConditionUnitTransportForeign FOREIGN KEY (IDTransport) REFERENCES Transport);
Популярное: Почему стероиды повышают давление?: Основных причин три... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (255)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |