Студопедия — Нормализация 3НФ.
Студопедия Главная Случайная страница Обратная связь

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

Нормализация 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; просмотров: 499. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

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

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

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

ТЕРМОДИНАМИКА БИОЛОГИЧЕСКИХ СИСТЕМ. 1. Особенности термодинамического метода изучения биологических систем. Основные понятия термодинамики. Термодинамикой называется раздел физики...

Травматическая окклюзия и ее клинические признаки При пародонтите и парадонтозе резистентность тканей пародонта падает...

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

Ваготомия. Дренирующие операции Ваготомия – денервация зон желудка, секретирующих соляную кислоту, путем пересечения блуждающих нервов или их ветвей...

Билиодигестивные анастомозы Показания для наложения билиодигестивных анастомозов: 1. нарушения проходимости терминального отдела холедоха при доброкачественной патологии (стенозы и стриктуры холедоха) 2. опухоли большого дуоденального сосочка...

Сосудистый шов (ручной Карреля, механический шов). Операции при ранениях крупных сосудов 1912 г., Каррель – впервые предложил методику сосудистого шва. Сосудистый шов применяется для восстановления магистрального кровотока при лечении...

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