Разработка базы данных «Прекрасные места Алтая»
Таблица находится во второй нормальной форме, так как она находится в первой нормальной форме, и при этом любой её атрибут, который не входит в состав первичного ключа, функционально полно зависит от первичного ключа. Теперь необходимо выявить транзитивные зависимости, чтобы привести отношения к 3НФ. В качестве приложения, разрабатываем сайт. В главной странице будет содержаться ссылки… Читать ещё >
Разработка базы данных «Прекрасные места Алтая» (реферат, курсовая, диплом, контрольная)
Постановка задачи, построение моделей
Требуется разработать проект базы данных для хранения информации о прекрасных местах Алтая. Эта база для туристов даст возможность посмотреть и помочь выбрать, куда ему следует поехать, чтоб отдохнуть.
Созданная база данных обладает следующими функциями:
- — заносить информацию в базу данных;
- — поддерживать целостность данных;
- — контроль вводимых данных;
- -показать итог выполнения запросов БД;
База данных ориентирована не только на туриста, который ищет информацию о местах, где можно отдохнуть, но также на простого пользователя, например студента или учащегося, который ищет информацию про прекрасные места Алтая, и может в любое время зайти на сайт и ознакомиться с предоставленной информацией.
Входной информацией у нас будет: природные объекты, например водопады, озера и т. п. все данные должны соответствовать параметрам, по которым мы можем отдельно сгруппировать водопады, озера и т. д.
Выходная информация — отчеты.
- — в каком конкретном районе, какие природные объекты находятся;
- — какой-либо природный объект и его кратное описание;
- — какой-либо природный объект и его параметры;
Чтобы понять, что мы будем делать и что мы будем обрабатывать, построим небольшую диаграмму, в которой отражены и выделили основные процессы.
Клиент обращается в туристическое агентство. Клиент запрашивает конкретную информацию, к примеру, скажем, какие озера есть в N районе, администратор обращается в базу и предоставляет его клиенту. Но можно и показать данный запрос на сайте, ссылаясь на базу. Также клиент может сам выйти на сайт и посмотреть нужную информацию.
На основе данных миграции населения можно понять, в какие районы больше приезжают туристов, и проанализировать районы, чтобы выделить природные объекты, которые привлекают туристов. Прежде всего, это водопады, озера, пещеры, ледники и так далее. Но в нашей базе, мы будем рассматривать прекрасные места, относительно района и их расположения На основании проведенного анализа можно выделить следующие сущности: «Водопады», «Озера», «Ледники», «Пещеры» и «Районы».
Сущность «Районы» необходима для хранения и просмотра данных о районах и их описание. Содержит атрибуты: Номер района, Наименование района, общая площадь и административный центр.
Сущность «Водопады» необходима для хранения и просмотра данных о водопадах и их описание. Содержит атрибуты: Код водопада, Номер района, Название водопада, высота и краткое описание.
Сущность «Озеро» необходима для хранения и просмотра данных об озерах и их описание. Содержит поля: Код озера, номер района, Название озера, Глубина, Площадь и Краткое описание.
Сущность «Пещеры» — предназначено для хранения и просмотра данных о пещерах и их описание. Содержит поля: код перевала, номер района, название пещеры, протяженность, краткое описание.
Сущность «Ледники» необходима для хранения и просмотра сведений о ледниках и их описание. Содержит поля: код ледника, название ледника, административный район, протяженность, горная система.
При завершении построения инфологической модели переходим к проектированию даталогичской модели. Она будет строиться в той же программе MS Visio.
Для построения даталогической модели, устанавливаем типы данных для атрибутов.
Приводим отношения к нормальным формам.
Приведение к первой нормальной форме.
- 1. Районы
- — номер района — первичный ключ (PK)
- — наименование района
- — общая площадь
- -административный центр
Номер района — первичный ключ (PK).
Наименование района, площадь, административный центр — имеет единственное значение.
- 2. Водопады
- — код водопада (PK)
- — номер района (FK)
- — наименование водопада
- -высота
- -краткое описание
Атрибуты «высота» и «краткое описание» — не делится на какие-либо значения.
- 3. Озера
- — код озера (PK)
- — номер района (FK)
- — название озера
- — глубина
- — площадь
- — краткое описание
Атрибуты «Глубина», «Площадь», «Краткое описание» — по смыслу не делимы.
- 4. Пещеры
- -код пещеры (PK)
- -номер района (FK)
- — название пещеры
- — протяженность
- -краткое описание
Атрибуты «Название пещеры», «Протяженность», «Краткое описание» по смыслу не делимы.
- 5. Ледники
- -код ледника (PK)
- — название ледника
- — административный район (FK)
- — протяженность
- -горная система
Атрибуты «Протяженность», «Горная система» по смыслу не делимы.
Все отношения находятся в первой нормальной форме, так все как атрибуты атомарны и содержат только одно значение. Теперь надо привести их ко второй нормальной форме.
Выделяем отношение «Район» с атрибутами: номер района (PK), наименование района, общая площадь, административный центр и краткое описание Выделяем отношение «Водопады» с атрибутами: код водопада (PK), номер района (FK), наименование водопада, высота, краткое описание. Каждый атрибут зависим от первичного ключа. Так как за каждым водопадом закреплен определенный код — наш первичный ключ. Название водопада не может быть первичным ключом, так как названия разные.
За каждым озером закреплены данные о площади озера, глубине озера и т. д. Каждый атрибут зависим от ключа.
За каждой пещерой закреплены данные о протяженности, описание. Каждый атрибут зависим от ключа.
За каждым ледником закреплены данные о протяженности ледника, принадлежности к горной системе и административному району.
Таблица находится во второй нормальной форме, так как она находится в первой нормальной форме, и при этом любой её атрибут, который не входит в состав первичного ключа, функционально полно зависит от первичного ключа. Теперь необходимо выявить транзитивные зависимости, чтобы привести отношения к 3НФ.
Выделяем отношение «Район» с атрибутами: номер района (PK), наименование района, общая площадь, административный центр и краткое описание.
В данном случае выделилась одна транзитивная зависимость, от которой необходимо избавиться. В таком случае, мы выделяем отдельное отношение Наименование района — общая площадь.
Выделяем отношение «Водопады» с атрибутами: код водопада (PK), номер района (FK), наименование водопада, высота, краткое описание.
Между атрибутами отсутствует транзитивная зависимость. Выделяем отношение «Озера» с атрибутами: код озера (PK), номер района (FK), наименование озера, глубина, площадь, краткое описание.
Транзитивных зависимостей нет, поэтому все атрибуты будут в отношении в БД.
Выделяем отношение «Пещеры» с атрибутами: код пещеры (PK), номер района (FK), наименование пещеры, протяженность и краткое описание.
Между атрибутами отсутствует транзитивная зависимость.
Выделяем отношение «Ледники» с атрибутами: код водопада (PK), номер района (FK), наименование водопада, высота, краткое описание.
В данном случае отсутствует транзитивная зависимость.
Таким образом, таблицы приведены в 3НФ так как они находятся во 2НФ и отсутствуют транзитивные зависимости неключевых атрибутов от ключевых.
На основе выделенных нами отношений приступаем к разработке базы данных в MS Access. Для создания таблиц используем SQL-запрос и конструктор таблиц. Для построения таблицы будет использоваться оператор CREATE TABLE в SQL-запросе Создаем таблицу «Район». SQL-запрос: Сreate table Район (номер_района integer, наименование_района text, общая_площадь char, административный_центр text); Constant [номер_района] Primary key Nott null.
Затем созданную таблицу заполняем.
Создаем таблицу «Водопады». SQL-запрос: Сreate table Водопады (Код_водопада integer, Номер_района char (10), Название_водопада text (20), Высота_м char (10), краткое_описание text Constant [Код_водопада] Primary key Nott null).
Создаем таблицу «Озера». SQL-запрос: create table Озера (Код_озера integer, номер_района integer (10), Название_озера text (20), глубина_м char, площадь_квкм char, краткое_описание text Constant [Код_озера] Primary key Nott null).
Создаем таблицу «Пещеры». SQL-запрос: create table Пещеры (Код_пещеры integer, номер_района char, Название_пещеры text (20), потяженность char, краткое_описание text Constant [Код_пещеры] Primary key Nott null).
Создаем последнюю таблицу «Ледники» в самом конструкторе.
После создания всех таблиц строим схему данных.
Таким образом, процесс проектирования базы данных завершен. Заполняем все таблицы. Затем строим отчеты, которые будут открываться в веб-приложении.
На основе заполненных таблиц, составляем запросы:
1. Ледник и район. SELECT Район. наименование_района, Ледник. Название ледника].
FROM Район INNER JOIN Ледник ON Район. номер_района = Ледник. административный район];
2. Озеро и район SELECT Район. наименование_района, Озера. Название_озера.
FROM Район INNER JOIN Озера ON Район. номер_района = Озера. номер_района;
3. Водопады и район. SELECT Район. наименование_района, Водопады. Название_водопада.
FROM Район INNER JOIN Водопады ON Район. номер_района = Водопады. Номер_района;
4. Озера, пещеры, водопады в одном районе. SELECT Район. наименование_района, Водопады. Название_водопада, Пещеры. Название_пещеры, Озера. Название_озера.
FROM ((Район INNER JOIN Водопады ON Район. номер_района = Водопады. Номер_района) INNER JOIN Озера ON Район. номер_района = Озера. номер_района) INNER JOIN Пещеры ON Район. номер_района = Пещеры. номер_района;
5. Пещеры и район. SELECT Район. номер_района, Пещеры. Название_пещеры.
FROM Район INNER JOIN Пещеры ON Район. номер_района = Пещеры. номер_района;
В итоге у нас есть база данных. Теперь приступаем к разработке веб-приложения.
Разработка веб-приложения
В качестве приложения, разрабатываем сайт. В главной странице будет содержаться ссылки на страницы: «Озера», «Водопады», «Ледники», «Пещеры». Основу для страниц берем из нашей базы, то есть у нас будет отдельные страницы «Водопады», «Озера», «Районы», «Пещеры», «Ледники».
В итоге у нас получится небольшая страница, где в качестве кнопочной формы выступает боковая панель ссылок. Она для всех страниц одинакова. Это предусмотрено для обеспечения связи между страницами и чтобы было удобно для пользователя.