Нормализация
1) Соберем все атрибуты в одну таблицу, далее смотрим, является не нормализованной (в одной ячейке несколько значений) или в 1НФ (в каждой ячейке не более 1 значения).
код страны, код вида спорта, фамилия, дата рождения, рост, вес, пол, код города, страны (код, наименование, начальник команды, телефон), виды спорта (код, наименование), города (код, наименование)
Находится в 1НФ.
2) 2-НФ.Разбиваем данную таблицу на: таблицу основных данных и таблицы справочники.
Основная таблица
**Олимпийцы (код страны, код вида спорта, фамилия, дата рождения, рост, вес, пол, код города).
Справочники:
Страны (код страны, наименование, начальник команды, телефон, код города, наименование города, код области, наименование области);
Наименование города зависит от не ключевого кода города;
Наименование Области от не ключевого кода области;
И зависят от ключевого кода страны.
**виды спорта (код, наименование);
Находится во 2НФ. Производим перевод в 3НФ.
3) 3-НФ.
Основная таблица
Олимпийцы (код страны, код вида спорта, фамилия, дата рождения, рост, вес, пол, код города).
Таблица Страны разбивается на:
Справочники:
Страны (код страны, наименование, начальник команды, телефон);
Виды спорта (код, наименование);
Города (код, наименование).
Области (код, наименование).
Все таблицы находятся в 3НФ.
Таблица находится в третьей нормальной форме т.к, она уже находится в второй (все неключевые атрибуты целиком зависят от всего ключа, а не от отдельной его части) нормальной форме, и все не ключевые атрибуты взаимно функционально независимы.
Концептуальная модель – представлена в виде овал диаграммы
Концептуальная модель - это отражение предметной области, без ориентации на какую-либо конкретную СУБД и модель данных.
|
Логическая модель – описание структуры базы данных (в среде СУБД)
Логическая модель - схема базы данных на основе конкретной модели данных, с элементами данных и связями описывающими отношение между объектами, без указания среды реализации.
Физическая модель базы данных - практическая разработка базы данных в среде СУБД
SQL запросы
Простой запрос
SELECT Олимпийцы.[Фамилия участника], Города.[Код города], Города.[Наименование города], Области.[Код области], Области.[Наименование области], Страны.[Код страны], Страны.[Наименование страны], Страны.[Начальник команды], Страны.Телефон, [Виды спорта].[Код вида спорта], [Виды спорта].[Наименование вида спорта], Олимпийцы.[Дата рождения], Олимпийцы.Рост, Олимпийцы.Вес, Олимпийцы.Пол
FROM Страны INNER JOIN ((Области INNER JOIN Города ON Области.[Код области] = Города.[Код области]) INNER JOIN ([Виды спорта] INNER JOIN Олимпийцы ON [Виды спорта].[Код вида спорта] = Олимпийцы.[Код вида спорта]) ON Города.[Код города] = Олимпийцы.[Код города]) ON Страны.[Код страны] = Области.[Код страны]
Запрос с группировкой
SELECT [Базовый Запрос].[Наименование страны], Count([Базовый Запрос].[Фамилия участника]) AS [Всего участников] Как! (присвоение имени)
FROM [Базовый Запрос]
GROUP BY [Базовый Запрос].[Наименование страны];
Запрос с параметром и сортировкой
SELECT Олимпийцы.[Фамилия участника], Города.[Код города], Города.[Наименование города], Области.[Код области], Области.[Наименование области], Страны.[Код страны], Страны.[Наименование страны], Страны.[Начальник команды], Страны.Телефон, [Виды спорта].[Код вида спорта], [Виды спорта].[Наименование вида спорта], Олимпийцы.[Дата рождения], Олимпийцы.Рост, Олимпийцы.Вес, Олимпийцы.Пол
|
FROM Страны INNER JOIN ((Области INNER JOIN Города ON Области.[Код области] = Города.[Код области]) INNER JOIN ([Виды спорта] INNER JOIN Олимпийцы ON [Виды спорта].[Код вида спорта] = Олимпийцы.[Код вида спорта]) ON Города.[Код города] = Олимпийцы.[Код города]) ON Страны.[Код страны] = Области.[Код страны]
WHERE (((Базовый.[Фамилия участника])=[Фамилия участника])) Условия отбора
ORDER BY Базовый.[Фамилия участника]; Сортировка