Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Нормализация 3НФ.


Нормализация 1НФ.

Переменная отношения находится в первой нормальной форме (1НФ) тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов (атомарность значений).

Для получения 1-ой нормальной формы необходимо разбить столбцы Пассажир, Откуда/Куда, Вылет – на 2 столбца, Самолёт – на 5 столбцов:

 

Имя пассажира Фамилия пассажира # билета # рейса Откуда Куда Модель самолёта Серийный номер самолёта Принадлежность компании Кол-во пилотов Кол-во пасс. мест Дата вылета Время вылета Время в пути (часы)
Михаил Николаев     Москва Париж Boeing 737   S7     17.02.12 15:30  
Анатолий Киселев     Москва Мадрид Boeing 737   AeroX     20.10.12 17:00  
Владимир Балашов     Милан Москва Airbus A380   S7     20.11.12 20:00  
Валерий Харламов     Нью-Йорк Москва Ил-96   Аэрофлот     15.01.12 06:00  
Александр Пушкин     Хельсинки Москва Airbus A380   X-Air     07.06.13 10:00  
Светлана Борисова     Москва Хельсинки Boeing 737   X-Air     05.10.12 11:00  
Михаил Калашников     Лондон Москва Boeing 737   S7     07.12.13 15:00  
Юлия Алисова     Вена Москва Boeing 747   AeroX     10.11.12 23:00  
Марина Цветаева     Москва Милан Ил-96   Аэрофлот     15.12.12 23:30  
Фаина Раневская     Москва Берлин Boeing 747   AeroX     01.05.13 10:30  
 

Все столбцы содержат сейчас только атомарные значения. 1НФ достигнута.

Нормализация 2НФ.

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

Как видно из таблицы, имя и фамилия пассажира и номер рейса зависят от номера билета; серийный номер самолёта, дата и время вылета, а также время в пути и пункты назначения и отправления зависят от номера рейса; модель самолёта, количество пассажирских мест, количество пилотов и принадлежность компаниям зависят от серийного номера самолёта.

Для получения 2-ой нормальной формы разобьем таблицу (отношение) на 3 отдельных отношения:

# билета Имя пассажира Фамилия пассажира # рейса
  Михаил Николаев  
  Анатолий Киселев  
  Владимир Балашов  
  Валерий Харламов  
  Александр Пушкин  
  Светлана Борисова  
  Михаил Калашников  
  Юлия Алисова  
  Марина Цветаева  
  Фаина Раневская  
 

# рейса Откуда Куда Серийный номер самолёта Дата вылета Время вылета Время в пути (часы)
  Москва Париж   17.02.12 15:30  
  Москва Мадрид   20.10.12 17:00  
  Милан Москва   20.11.12 20:00  
  Нью-Йорк Москва   15.01.12 06:00  
  Хельсинки Москва   07.06.13 10:00  
  Москва Хельсинки   05.10.12 11:00  
  Лондон Москва   07.12.13 15:00  
  Вена Москва   10.11.12 23:00  
  Москва Милан   15.12.12 23:30  
  Москва Берлин   01.05.13 10:30  
 

Серийный номер самолёта Модель самолёта Принадлежность компании Кол-во пилотов Кол-во пасс. мест
  Boeing 737 S7    
  Boeing 737 AeroX    
  Airbus A380 S7    
  Ил-96 Аэрофлот    
  Airbus A380 X-Air    
  Boeing 737 X-Air    
  Boeing 737 S7    
  Boeing 747 AeroX    
  Ил-96 Аэрофлот    
  Boeing 747 AeroX    
 

Нормализация 3НФ.

Из определения 3-ой нормальной формы: отношение находится в третьей нормальной форме если оно уже 2НФ и любой её не ключевой атрибут функционально зависит только от первичного ключа.

Отношение оказалось в 3НФ. Нормализация выполнена.

Таблица 1:

USE Misha_aeroport

CREATE TABLE Planes

(

PlaneNumber int PRIMARY KEY,

Model varchar(50) NOT NULL,

Company varchar(50) NOT NULL,

PilotsN int NOT NULL,

PassengersN int NOT NULL

)

Описание столбцов:

PlaneSerial – серийный номер самолёта, тип число, первичный ключ;

Model – модель самолёта, тип строка (до 50 символов);

Company – компания-владелец самолёта, тип строка (до 50 символов);

PilotsN – количество пилотов, тип число;

PassengersN – количество пассажирских мест, тип число.

 

Таблица 2:

USE Misha_aeroport

CREATE TABLE Flights

(

FlightNumber int PRIMARY KEY,

FlightFrom varchar(50) NOT NULL,

FlightTo varchar(50) NOT NULL,

PlaneSerial int NOT NULL FOREIGN KEY REFERENCES Planes,

DateFlight date NOT NULL,

TimeFlight time NOT NULL,

TravelTime int NOT NULL

)

Описание столбцов:

FlightNumber – номер рейса, тип число, первичный ключ;

FlightFrom, FlightTo – пункт отправления и пункт назначения, тип строка (до 50 символов). В дальнейшем создадим ограничение CHECK, препятствующее добавлению рейсов, в которых пункт отправления и пункт назначения совпадают;

PlaneSerial – серийный номер самолёта, тип число, внешний ключ;

DateFlight – дата вылета, тип дата;

TimeFlight – время вылета, тип время;

TravelTime – время в пути (в часах), тип число.

 

Таблица 3:

USE Misha_Aeroport

CREATE TABLE Tickets

(

TicketNumber int NOT NULL PRIMARY KEY,

PassengerName varchar(50) NOT NULL,

PassengerSurname varchar(50) NOT NULL,

FlightNumber int NOT NULL FOREIGN KEY REFERENCES Flights

)

 

Описание столбцов:

TicketNumber – номер билета, тип число, первичный ключ;

PassengerName, PassengerSurname – имя и фамилия пассажира, тип строка (до 50 символов);

FlightNumber – номер рейса, тип число, внешний ключ.

Проверим, что пункт вылета и назначения не совпадают (ограничение CHECK)

USE Misha_Aeroport

ALTER TABLE Flights

ADD CONSTRAINT from_to CHECK

(

FlightFrom <> FlightTo

)

3. Нарисовать схему Базы данных.

4. Выбрать СУБД. Создать физическую модель.

5. Заполнить таблицы (10 записей в основной таблице).

 

 

 

6. Придумать три запроса для вывода данных из двух-трех таблиц.

1) Вывести пункт назначения для пассажиров с именем Михаил.

2) Выведем Фамилии пассажиров и дату их вылета с помощью RIGHT OUTER JOIN.

Выведем Фамилии пассажиров и дату их вылета с помощью LEFT OUTER JOIN.

3) Выведем Ил-96, летящий в Милан.

7.Создать хотя бы одно представление для вывода данных из двух таблиц

USE Misha_Aeroport

GO

CREATE VIEW Представление

AS

SELECT

FlightFrom + ' – ' + FlightTo as [Рейс], FlightNumber as [#], DateFlight as [Дата], model as [Модель]

FROM Flights

inner join Planes

ON Flights.PlaneSerial = Planes.PlaneSerial

GO

8. Создадим процедуру, которая по заданному номеру рейса возвращает количество доступных билетов.

USE Misha_Aeroport

GO

CREATE PROCEDURE if_flight

@tFlightNumber int

AS

SELECT

(SELECT PassengersN FROM Planes WHERE PlaneSerial=(SELECT PlaneSerial FROM Flights WHERE FlightNumber=@tFlightNumber))

-

(SELECT COUNT(*) FROM Tickets WHERE FlightNumber=@tFlightNumber)

AS [Доступно билетов]

GO

Создадим триггер, препятствующий удалению данных из таблицы Flights.

USE Misha_Aeroport

GO

CREATE TRIGGER DisableFlightDelete ON Flights

INSTEAD OF DELETE

AS

DECLARE @FlightDestination varchar(50)

SELECT @FlightDestination = FlightTo FROM deleted

RAISERROR (Вы хотите удалить %s. Отменено.', 10, 1, @FlightDestination);

ROLLBACK TRANSACTION

GO

9. В дополнении к уже созданной БД выполнить пункт, связанный с использованием конструкцией PIVOT. Для этого нужно будет добавить несколько столбцов (если они отсутствуют), заполнить таблицу нужной информацией и написать запрос с применением конструкции PIVOT.

Посчитаем количество самолетов разных моделей.




<== предыдущая лекция | следующая лекция ==>
Влияние температуры и концентрации на показатель поглощения | Потенциал солнечной энергии. Условия ее эффективного использования

Дата добавления: 2015-08-29; просмотров: 519. Нарушение авторских прав; Мы поможем в написании вашей работы!




Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Уравнение волны. Уравнение плоской гармонической волны. Волновое уравнение. Уравнение сферической волны Уравнением упругой волны называют функцию , которая определяет смещение любой частицы среды с координатами относительно своего положения равновесия в произвольный момент времени t...

Медицинская документация родильного дома Учетные формы родильного дома № 111/у Индивидуальная карта беременной и родильницы № 113/у Обменная карта родильного дома...

Основные разделы работы участкового врача-педиатра Ведущей фигурой в организации внебольничной помощи детям является участковый врач-педиатр детской городской поликлиники...

ЛЕЧЕБНО-ПРОФИЛАКТИЧЕСКОЙ ПОМОЩИ НАСЕЛЕНИЮ В УСЛОВИЯХ ОМС 001. Основными путями развития поликлинической помощи взрослому населению в новых экономических условиях являются все...

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

Studopedia.info - Студопедия - 2014-2026 год . (0.013 сек.) русская версия | украинская версия