База данных для перинатального центра

Анализ главных аспектов создания базы данных в визуальной среде разработки СУБД phpMyAdmin и PHPMaker. Основы построения классов эквивалентности. Синтез схемы базы данных на основании функциональных зависимостей. Построение леворедуцированного покрытия.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 05.06.2014
Размер файла 226,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Юго-западный государственный университет»

Кафедра ПО ВТ

КУРСОВАЯ РАБОТА

по дисциплине ‹‹Базы данных››

на тему ‹‹База данных для перинатального центра››

Специальность 230105 Программное обеспечение вычислительной техники и автоматизированных систем

Автор работы

Киоса Сергей Александрович

Группа ПО - 92

Руководитель работы

В.Г. Белов

Курск, 2012 г.

Реферат

Объем данного курсового проекта равен 62 страницам. В курсовом проекте содержится два приложения, в которых приведены ER-схемы базы данных, код программы. Также в КП содержится постановка задачи.

Ключевые слова:

База данных, ER-схема, сущность, атрибут, ключ, связь, функциональная зависимость, система функциональных зависимостей.

Объект разработки:

Объектом исследования в данной работе является проектирование базы данных в соответствии с заданным вариантом.

Цель работы:

Спроектировать «Базу данных для перинатального центра».

Метод проведения работы:

Использование ER-диаграмм, минимизация зависимостей, построение запросов.

леворедуцированный субд эквивалентность

Содержание

Введение

1. Техническое задание

1.1 Основание для разработки

1.2 Назначение разработки

1.3 Стандарты

1.4 Требования к программе или программному изделию

1.4.1 Носители информации

1.4.2 Требования к составу и параметрам технических средств

2. Технический проект

2.1 Описание предметной области

2.2 Словарь понятий и терминов

2.3 Определение ключей и связей

2.4 Определение функциональных зависимостей

2.5 Синтез схемы базы данных на основании функциональных зависимостей

2.5.1 Построение неизбыточного покрытия

2.5.2 Построение леворедуцированного покрытия

2.5.3 Построение праворедуцированного покрытия

2.5.4 Построение классов эквивалентности

2.5.5 Построение редуцированного минимального кольцевого покрытия

2.6 Построение запросов на SQL

2.6.1 Запрос на выборку

Заключение

Библиографический список

Приложение

Определения

В данной работе применены следующие термины с соответствующими определениями:

база данных: Файлы, снабженные описанием хранимых в них данных и находящиеся под управлением СУБД.

er-диаграмма: Схема базы данных, спроектированная с помощью программы ERWin.

сущность: Любой различимый объект (объект, который мы можем отличить от другого), информацию о котором необходимо хранить в базе данных.

атрибут: Поименованная характеристика сущности.

ключ: Минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности.

связь: Ассоциирование двух или более сущностей.

Обозначения и сокращения

В данной работе применены следующие сокращения:

БД: База данных

СУБД: Система управления базами данных

ФЗ: Функциональная зависимость

Введение

Целью данной работы является проектирование «Базы данных для перинатального центра», а также ознакомление с основными принципами построения, использования и оптимизации реляционных баз данных.

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

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

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

1. Техническое задание

1.1 Основание для разработки

Основанием для разработки программного продукта служит задание на курсовую работу “База данных для перинатального центра”.

1.2 Назначение разработки

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

1.3 Стандарты

Данная работа оформлена в соответствии со стандартом СТУ 04.02.030.-2008.

1.4 Требования к программе или программному изделию

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

Результирующие компоненты изделия

База данных создана в визуальной среде разработки систем управления базами данных phpMyAdmin и PHPMaker 5.

1.4.1 Носители информации

Продукт должен размещаться в виде файлов на CD дисках. В процессе работы могут использоваться Flash, CD-R/-RW, DVD-R/RW или другие носители информации.

1.4.2 Требования к составу и параметрам технических средств

Программный комплекс должен корректно работать на компьютере со следующими техническими характеристиками (минимальные требования):

процессор Pentium V 2200 МГц;

оперативная память объемом 1024 Мб;

жесткий диск Seagate Barracuda, объемом 120 Гб;

видеоадаптер SVGA;

клавиатура;

манипулятор типа “мышь”;

устройство удаленного доступа к сети: модем или сетевая карта.

2. Технический проект

2.1 Описание предметной области

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

Информация о враче содержит фамилию, имя и отчество врача, номер его лицензии и данные о медсестре, работающей в паре с врачом. Данные о медсестре содержат фамилию, имя, отчество и номер лицензии.

2.2 Словарь понятий и терминов

Словарь понятий и терминов приведен в таблицах 2.1 - 2.15.

Таблица 2.1 Kid

Атрибут

Смысл

Пример

Num_Kid

Номер ребенка

3278

Data_Birth

Дата рождения ребенка

10.08.2012

Time_Birth

Время рождения ребенка

10.37.15

Blood_gr_Kid

Группа крови

3

Rez_f_Kid

Резус-фактор

+

Height_Kid

Рост ребенка

47

Weight_Kid

Вес ребенка

3770

Таблица 2.2 Mather

Атрибут

Смысл

Пример

Surname_M

Фамилия матери

Иванова

Name_M

Имя матери

Антонина

Fathername_M

Отчество матери

Ивановна

Pass_seria_M

Серия паспорта

3712

Pass_num_M

Номер паспорта

523512

Num_strah_M

Номер страхового свидетельства

364565321689800876

Num_polis_M

Номер полиса

907675645387832208

Таблица 2.3 Nasl_bolezny

Атрибут

Смысл

Пример

Num_nasl_bolezn

Номер наследственной болезни в классификации

2354

Nazvanie_nasl_bolezn

Название наследственной болезни

Ликемия

Таблица 2.4 Oslognenia

Атрибут

Смысл

Пример

Num_oslog

Номер осложнения

341

Nazvanie_oslog

Название осложнения

Отслаивание плаценты

Таблица 2.5 Consultatsia

Атрибут

Смысл

Пример

Name_consult

Название гинекологической консультации

Женская консультация 12

Таблица 2.6 Ginecolog

Атрибут

Смысл

Пример

Surname_gin

Фамилия

Иванов

Name_gin

Имя

Иван

Fathername_gin

Отчество

Иванович

Num_license_gin

Номер лицензии

3805876670875

Таблица 2.7 Personal

Атрибут

Смысл

Пример

Surname_pers

Фамилия

Иванов

Name_pers

Имя

Иван

Fathername_pers

Отчество

Иванович

Seria_pass_pers

Серия паспорта

3805

Num_pass_pers

Номер паспорта

363170

Phone

Телефон

89611356999

Таблица 2.8 Personal_post

Атрибут

Смысл

Пример

PP_date

Дата вступления на пост

10.05.1997

Таблица 2.9 Palata

Атрибут

Смысл

Пример

Palata_num

Номер

109

Palata_floor

Количество мест

4

Таблица 2.10 Podr

Атрибут

Смысл

Пример

Podr_name

Название подразделения

Дородовое отделение

Таблица 2.11 Post

Атрибут

Смысл

Пример

Name_post

Название должности

Акушер-гинеколог

Таблица 2.12 Policlinica

Атрибут

Смысл

Пример

Num_policlinic

Номер поликлиники

4

Таблица 2.13 Kids_doctor

Атрибут

Смысл

Пример

Surname_Doc_kid

Фамилия детского врача

Иванова

Name_Doc_kid

Имя детского врача

Надежда

Father_Doc_kid

Отчество детского врача

Ивановна

License_Doc_kid

Номер лицензии

23456785325632

Таблица 2.14 Medsestra

Атрибут

Смысл

Пример

Surname_med

Фамилия медсестры

Иванова

Name_med

Имя медсестры

Надежда

Fathername_med

Отчество медсестры

Ивановна

License_med

Номер лицензии

23456785325632

Таблица 2.15 Bolezny

Атрибут

Смысл

Пример

Num_ bolezn

Номер болезни в классификации

Иванов

Nazvanie_ bolezn

Название болезни

Иван

2.3 Определение ключей и связей

Первичным ключом для сущности Post является атрибут ID_Post .

Альтернативный ключ: AK1={Name_post} .

Первичным ключом для сущности Podr является атрибут ID_Podr .

Альтернативный ключ: AK1={Podr_name} .

Первичным ключом для сущности Personal является атрибут ID_Personal .

Альтернативный ключ: AK1={Seria_pass_pers, Num_pass_pers} .

Первичным ключом для сущности Palata является атрибут ID_Palata .

Альтернативный ключ: AK1={Palata_num} .

Первичным ключом для сущности Personal_post является атрибут ID_Personal_post .

Первичным ключом для сущности Medsestra является атрибут ID_Medsestra .

Альтернативный ключ: AK1={License_med} .

Первичным ключом для сущности Kids_doctor является атрибут ID_Doc_kid.

Альтернативный ключ: AK1={License_Doc_kid} .

Первичным ключом для сущности Policlinica является атрибут ID_Policlinic .

Альтернативный: AK1={Num_policlinic} .

Первичным ключом для сущности Bolezny является атрибут ID_Bolezn

Альтернативный ключ: AK1={Num_bolezn} .

Первичным ключом для сущности Nasl_bolezny является атрибут ID_Nasl_bolezn .

Альтернативный ключ: AK1={ Num_nasl_bolezn } .

Первичным ключом для сущности Oslognenia является атрибут ID_Oslog .

Альтернативный ключ: AK1={Num_oslog} .

Первичным ключом для сущности Ginecolog является атрибут ID_Ginecolog .

Альтернативный ключ: AK1={Num_license_gin} .

Первичным ключом для сущности Consultatsia является атрибут ID_Consult .

Альтернативный ключ: AK1={Name_consult} .

Первичным ключом для сущности Mather является атрибут ID_Mather .

Альтернативные ключи: AK1={ Seria_pass_M, Num_pass_M}, AK2={Num_strah_M}, AK3={Num_polis_M} .

Первичным ключом для сущности Kid является атрибут ID_Kid .

Альтернативный ключ: AK1={Num_kid} .

На рисунке 2.1 приведена ER-схема, отображающая структуру базы данных и связи.

Рисунок 2.1 ER-схема базы данных

2.4 Определение функциональных зависимостей

Не существует двух одинаковых должностей.

ID_Post->Name_post.

Не существует двух одинаковых подразделений.

ID_Podr->Name_podr.

Не существует двух палат с одинаковыми номерами.

ID_Palata->Palata_num.

Один номер лицензии однозначно соотносится с одной медсестрой.

ID_Medsestra->License_med.

Один номер лицензии однозначно соотносится с одним детским врачом.

ID_Doc_kid->License_doc_kid.

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

ID_Policlinic->Num_policlinic.

Каждой болезни соответствует свой уникальный номер.

ID_Bolezn->Num_bolezn.

Каждой наследственной болезни соответствует свой уникальный номер.

ID_Nasl_bolezn->Num_Nasl_bolezn.

Каждому осложнению соответствует свой уникальный номер.

ID_Oslogn->Num_oslogn.

Один номер лицензии однозначно соотносится с одним гинекологом.

ID_Ginecolog->Num_license_gin.

Каждой консультации соответствует свое уникальное название.

ID_Consult->Name_consult.

Одни и те же паспортные данные не могут одновременно принадлежать двум и более матерям.

ID_Mather->Pass_seria_M, Pass_num_M.

Не существует двух детей с одинаковыми номерами.

ID_Kid->Num_Kid.

Исходные функциональные зависимости представлены на рисунке 2.2.

ID_Post->Name_post

ID_Podr->Name_podr

ID_Palata->Palata_num

ID_Medsestra->License_med

ID_Doc_kid->License_doc_kid

ID_Policlinic->Num_policlinic

ID_Bolezn->Num_bolezn

ID_Nasl_bolezn->Num_Nasl_bolezn

ID_Oslogn->Num_oslogn

ID_Ginecolog->Num_license_gin

ID_Consult->Name_consult

ID_Mather->Pass_seria_M, Pass_num_M

ID_Kid->Num_Kid

Рисунок 2.2 Исходные функциональные зависимости

Синтез схемы базы данных на основании функциональных зависимостей

2.5.1 Построение неизбыточного покрытия

Этапы построения неизбыточного покрытия представлены на рисунке 2.3.

Построение неизбыточного покрытия.

Неизбыточное покрытие

g:

ID_Post -> Name_post

ID_Podr -> Name_podr

ID_Palata -> Palata_num

ID_Medsrstra -> License_med

ID_Doc_kid -> License_doc_kid

ID_Policlinic -> Num_policlinic

ID_Boezn -> Num_bolezn

ID_Nasl_boezn -> Num_Nasl_bolezn

ID_Oslogn -> Num_oslogn

ID_Ginecolog -> Num_license_gin

ID_Consult -> Name_consult

ID_Mather -> Pass_seria_M, Pass_num_M

ID_Kid -> Num_Kid

Рисунок 2.3 Построение неизбыточного покрытия

2.5.2 Построение леворедуцированного покрытия

Этапы построения леворедуцированного покрытия представлены на рисунке 2.4.

Построение леворедуцированного покрытия.

Леворедуцированное покрытие

g:

ID_Post -> Name_post

ID_Podr -> Name_podr

ID_Palata -> Palata_num

ID_Medsrstra -> License_med

ID_Doc_kid -> License_doc_kid

ID_Policlinic -> Num_policlinic

ID_Boezn -> Num_bolezn

ID_Nasl_boezn -> Num_Nasl_bolezn

ID_Oslogn -> Num_oslogn

ID_Ginecolog -> Num_license_gin

ID_Consult -> Name_consult

ID_Mather -> Pass_seria_M, Pass_num_M

ID_Kid -> Num_Kid

Рисунок 2.4 Построение леворедуцированного покрытия

2.5.3 Построение праворедуцированного покрытия

Этапы построения праворедуцированного покрытия представлены на рисунке 2.5.

Построение праворедуцированного покрытия.

Праворедуцированное покрытие

g:

ID_Post -> Name_post

ID_Podr -> Name_podr

ID_Palata -> Palata_num

ID_Medsrstra -> License_med

ID_Doc_kid -> License_doc_kid

ID_Policlinic -> Num_policlinic

ID_Boezn -> Num_bolezn

ID_Nasl_boezn -> Num_Nasl_bolezn

ID_Oslogn -> Num_oslogn

ID_Ginecolog -> Num_license_gin

ID_Consult -> Name_consult

ID_Mather -> Pass_seria_M, Pass_num_M

ID_Kid -> Num_Kid

Рисунок 2.5 Построение праворедуцированного покрытия

2.2.4 Построение классов эквивалентности

Этапы построения классов эквивалентности представлены на рисунках 2.6 - 2.8.

Построение классов эквивалентности.

1. Ef( ID_Post ):

ID_Post -> Name_post

2. Ef( ID_Podr ):

ID_Podr -> Name_podr

3. Ef( ID_Palata ):

ID_Palata -> Palata_num

4. Ef( ID_Medsrstra ):

ID_Medsrstra -> License_med

5. Ef( ID_Doc_kid ):

ID_Doc_kid -> License_doc_kid

6. Ef( ID_Policlinic ):

ID_Policlinic -> Num_policlinic

7. Ef( ID_Boezn ):

ID_Boezn -> Num_bolezn

8. Ef( ID_Nasl_boezn ):

ID_Nasl_boezn -> Num_Nasl_bolezn

9. Ef( ID_Oslogn ):

ID_Oslogn -> Num_oslogn

Рисунок 2.6 Построение классов эквивалентности

10. Ef( ID_Ginecolog ):

ID_Ginecolog -> Num_license_gin

11. Ef( ID_Consult ):

ID_Consult -> Name_consult

12. Ef( ID_Mather ):

ID_Mather -> Pass_seria_M, Pass_num_M

13. Ef( ID_Kid ):

ID_Kid -> Num_Kid

Построение минимального покрытия на основе

прямой функциональной определяемости

Редуцированное минимальное покрытие

g:

ID_Post -> Name_post

ID_Podr -> Name_podr

ID_Palata -> Palata_num

ID_Medsrstra -> License_med

ID_Doc_kid -> License_doc_kid

ID_Policlinic -> Num_policlinic

ID_Boezn -> Num_bolezn

ID_Nasl_boezn -> Num_Nasl_bolezn

Рисунок 2.7 Построение классов эквивалентности

ID_Oslogn -> Num_oslogn

ID_Ginecolog -> Num_license_gin

ID_Consult -> Name_consult

ID_Mather -> Pass_seria_M, Pass_num_M

ID_Kid -> Num_Kid

Рисунок 2.8 Построение классов эквивалентности

2.5.5 Построение редуцированного минимального кольцевого покрытия

Определение CF-зависимостей по классам эквивалентности представлено на рисунках 2.9 - 2.12.

Построение кольцевого покрытия.

Минимальное кольцевое покрытие

( ID_Post; ) -> Name_post

( ID_Podr; ) -> Name_podr

( ID_Palata; ) -> Palata_num

( ID_Medsrstra; ) -> License_med

( ID_Doc_kid; ) -> License_doc_kid

( ID_Policlinic; ) -> Num_policlinic

( ID_Boezn; ) -> Num_bolezn

( ID_Nasl_boezn; ) -> Num_Nasl_bolezn

( ID_Oslogn; ) -> Num_oslogn

( ID_Ginecolog; ) -> Num_license_gin

( ID_Consult; ) -> Name_consult

( ID_Mather; ) -> Pass_seria_M, Pass_num_M

Рисунок 2.9 Построение редуцированного минимального кольцевого покрытия

( ID_Kid; ) -> Num_Kid

Получение кольцевого минимального

редуцированного покрытия

Естественное характеристическое множество

для кольцевого покрытия

f(C):

ID_Post -> Name_post

ID_Podr -> Name_podr

ID_Palata -> Palata_num

ID_Medsrstra -> License_med

ID_Doc_kid -> License_doc_kid

ID_Policlinic -> Num_policlinic

ID_Boezn -> Num_bolezn

ID_Nasl_boezn -> Num_Nasl_bolezn

ID_Oslogn -> Num_oslogn

ID_Ginecolog -> Num_license_gin

ID_Consult -> Name_consult

ID_Mather -> Pass_seria_M, Pass_num_M

ID_Kid -> Num_Kid

Минимальное редуцированное кольцевое покрытие

C

( ID_Post; ) -> Name_post

( ID_Podr; ) -> Name_podr

( ID_Palata; ) -> Palata_num

Рисунок 2.10 Построение редуцированного минимального кольцевого покрытия

( ID_Medsrstra; ) -> License_med

( ID_Doc_kid; ) -> License_doc_kid

( ID_Policlinic; ) -> Num_policlinic

( ID_Boezn; ) -> Num_bolezn

( ID_Nasl_boezn; ) -> Num_Nasl_bolezn

( ID_Oslogn; ) -> Num_oslogn

( ID_Ginecolog; ) -> Num_license_gin

( ID_Consult; ) -> Name_consult

( ID_Mather; ) -> Pass_seria_M, Pass_num_M

( ID_Kid; ) -> Num_Kid

Естественное характеристическое множество

f(C):

ID_Post -> Name_post

ID_Podr -> Name_podr

ID_Palata -> Palata_num

ID_Medsrstra -> License_med

ID_Doc_kid -> License_doc_kid

ID_Policlinic -> Num_policlinic

ID_Boezn -> Num_bolezn

ID_Nasl_boezn -> Num_Nasl_bolezn

ID_Oslogn -> Num_oslogn

ID_Ginecolog -> Num_license_gin

ID_Consult -> Name_consult

Рисунок 2.11 Построение редуцированного минимального кольцевого покрытия

ID_Mather -> Pass_seria_M, Pass_num_M

ID_Kid -> Num_Kid

R0 = ( ID_Post, Name_post ) K0 = { ID_Post }

R1 = ( ID_Podr, Name_podr ) K1 = { ID_Podr }

R2 = ( ID_Palata, Palata_num ) K2 = { ID_Palata }

R3 = ( ID_Medsrstra, License_med ) K3 = { ID_Medsrstra }

R4 = ( ID_Doc_kid, License_doc_kid ) K4 = { ID_Doc_kid }

R5 = ( ID_Policlinic, Num_policlinic ) K5 = { ID_Policlinic }

R6 = ( ID_Boezn, Num_bolezn ) K6 = { ID_Boezn }

R7 = ( ID_Nasl_boezn, Num_Nasl_bolezn ) K7 = { ID_Nasl_boezn }

R8 = ( ID_Oslogn, Num_oslogn ) K8 = { ID_Oslogn }

R9 = ( ID_Ginecolog, Num_license_gin ) K9 = { ID_Ginecolog }

R10 = ( ID_Consult, Name_consult ) K10 = { ID_Consult }

R11 = ( ID_Mather, Pass_seria_M, Pass_num_M ) K11 = { ID_Mather }

R12 = ( ID_Kid, Num_Kid ) K12 = { ID_Kid }

Рисунок 2.12 Построение редуцированного минимального кольцевого покрытия

2.6 Построение запросов на SQL

2.6.1 Запрос на выборку

Словесная формулировка запроса

Перечислить все номера новорожденных детей со второй группой крови , учитывая: а) номер палаты должен находиться в промежутке от 5 до 10; б) номер паспорта матери должен быть промежутке от 100000 до 100100; в) номер поликлиники должен быть меньше 100; г) номер осложнения при беременности матери должен находиться в промежутке от 300 до 350; д) номер наследственной болезни должен быть меньше 120.

Текст запроса на языке SQL

Текст запроса на языке SQL представлен на рисунке 2.12.

SELECT Kid.Blood_gr_Kid, Palata.Palata_num, Policlinica.Num_policlinic, Mather.Pass_num_M, Oslognenia.Num_oslog, Nasl_bolezny.Num_nasl_bolezn from Kid

JOIN Nasl_bolezny on Nasl_bolezny.ID_Nasl_bolezn = Kid. ID_Nasl_bolezn

JOIN Palata on Palata.ID_Palata= Kid.ID_Palata

JOIN Policlinica on Policlinica.ID_Policlinic = Kid.ID_Policlinic

JOIN Oslognenia on Oslognenia.ID_Oslog = Kid.ID_Oslog

JOIN Mather on Mather.ID_Mather = Kid. ID_Mather

WHERE (Palata.Palata_num>5 AND Palata.Palata_num<10) AND Policlinica.Num_policlinic <100 AND (Mather.Pass_num_M >100000 AND Mather.Pass_num_M <100100) AND (Oslognenia.Num_oslog >300 AND Oslognenia.Num_oslog <350) AND Kid.Num_Kid = 10000 AND Nasl_bolezny.Num_nasl_bolezn <1200)

Рисунок 2.12 Текст запроса на языке SQL

Исходное дерево запроса

Расчет сложности запроса

Расчет сложности исходного запроса приведен ниже.

, (2.1)

где - результат естественного соединения таблиц;

- таблицы, участвующие в соединении;

- псевдонимы, используемые вместо имен таблиц для сокращения записи;

- операция естественного соединения.

, (2.2)

где - число записей в таблице ;

- число записей в таблице С;

- число записей в таблице O;

- число различных значений в столбце таблицы ;

- число различных значений в столбце таблицы .

,

,

,

.

, (2.4)

, (2.5)

где - число блоков, записанных в таблице ;

- длина одной записи таблицы в блоках;

- длина одной записи таблицы в байтах;

- размер одного блока.

Очевидно, что

, (2.6)

где - объем в байтах поля ;

- объем в байтах поля ;

,

,

.

.

.

.

, (2.7)

,

,

,

,

. (2.8)

.

Очевидно, что

, (2.9)

,

,

,

.

.

.

, (2.10)

,

,

,

,

. (2.11)

.

Очевидно, что

, (2.12)

,

,

,

.

.

.

, (2.13)

,

,

,

,

. (2.14)

.

Очевидно, что

, (2.15)

,

, ,

.

.

.

, (2.16)

,

,

,

,

. (2.17)

.

Очевидно, что

, (2.18)

,

,

,

.

.

.

(2.19)

где - операция селекции с логической формулой .

Формула имеет вид:

, (2.20)

,

, (2.21)

.

Так как операция селекции не изменяет структуру таблицы, то

,

.

Так как операция проекции располагается последней, то ее не учитывают при расчете сложности запроса.

Окончательно имеем:

, (2.22)

.

Оптимизированное дерево запроса на основании операции селекции

Оптимизированное дерево для запроса представлено на рисунке 2.14.

Расчет сложности оптимизированного запроса на основании селекции приведён ниже.

, (2.23)

где - операция селекции с логической формулой .

Формула имеет вид:

, (2.24)

,

,

, (2.25)

.

Так как операция селекции не изменяет структуру таблицы, то

,

.

, (2.26)

где - операция селекции с логической формулой .

Формула имеет вид:

, (2.27)

,

,

, (2.28)

.

Так как операция селекции не изменяет структуру таблицы, то

,

.

, (2.29)

где - результат естественного соединения таблиц;

- таблицы, участвующие в соединении;

- псевдонимы, используемые вместо имен таблиц для сокращения записи;

- операция естественного соединения.

, (2.30)

,

,

,

.

, (2.32)

, (2.33)

где - число блоков, записанных в таблице ;

- длина одной записи таблицы в блоках;

- длина одной записи таблицы в байтах;

- размер одного блока.

Очевидно, что

, (2.34)

где - объем в байтах поля ;

- объем в байтах поля ;

,

,

.

.

.

.

, (2.35)

где - операция селекции с логической формулой .

Формула имеет вид:

, (2.36)

,

,

, (2.37)

.

Так как операция селекции не изменяет структуру таблицы, то

,

.

, (2.38)

,

,

,

,

, (2.39)

.

Очевидно, что

, (2.40)

,

,

,

.

.

.

, (2.41)

где - операция селекции с логической формулой .

Формула имеет вид:

, (2.42)

,

,

, (2.43)

.

Так как операция селекции не изменяет структуру таблицы, то

,

.

, (2.44)

,

,

,

,

, (2.36)

.

Очевидно, что

, (2.45)

,

,

,

.

.

.

, (2.46)

где - операция селекции с логической формулой .

Формула имеет вид:

, (2.47)

,

,

, (2.48)

.

Так как операция селекции не изменяет структуру таблицы, то

,

.

, (2.49)

,

,

,

,

, (2.50)

.

Очевидно, что

, (2.51)

,

,

,

.

.

.

, (2.52)

где - операция селекции с логической формулой .

Формула имеет вид:

, (2.53)

,

,

, (2.54)

.

Так как операция селекции не изменяет структуру таблицы, то

,

.

, (2.55)

,

,

,

,

, (2.56)

.

Очевидно, что

, (2.57)

,

,

,

.

.

.

Так как операция проекции располагается последней, то ее не учитывают при расчете сложности запроса.

Окончательно имеем:

, (2.58)

.

Заключение

В ходе выполнения курсовой работы была достигнута цель работы - проектирование базы данных организации, выпускающей сертификаты электронно-цифровой подписи.

Для достижения цели был решен ряд задач: составление описания предметной области; составление словаря понятий и терминов; построение исходной модели (ER-диаграммы) базы данных; определение функциональных зависимостей; синтез схемы базы данных на основании функциональных зависимостей; построение оптимизированной концептуальной модели; построение запросов на выборку.

Библиографический список

1. Атре, Ш., Структурный подход к организации баз данных. / [Текст] : Атре, Ш. - М.: Финансы и статистика, 1983. - 320 с.

2. Бойко, В.В., Проектирование баз данных информационных систем. / [Текст] : Бойко, В.В., Савинков, В.М., - М.: Финансы и статистика, 1989. - 351 с.

3. Гарсия-Молина, Гектор, Ульман, Джеффри, Д., Уидом, Дженнифер Системы баз данных. Полный курс. : Пер. с англ. - М. : Издательский дом “Вильямс”, 2003. - 188 с. : ил.

4. Дейт, К., Руководство по реляционной СУБД DB2. / [Текст] : Дейт, К. - М.: Финансы и статистика, 1988. - 320 с.

5. Джексон, Г., Проектирование реляционных баз данных для использования с микроЭВМ. / [Текст] : Джексон, Г., -М.: Мир, 1991. - 252 с.

6. Кириллов, В.В., Структуризованный язык запросов (SQL). / [Текст] : Кириллов, В.В., - СПб.: ИТМО, 1994. - 80 с.

7. Мартин, Дж., Планирование развития автоматизированных систем. / [Текст] : Мартин, Дж., - М.: Финансы и статистика, 1984. - 196 с.

8. Мейер, М., Теория реляционных баз данных. / [Текст] : Мейер, М.,- М.: Мир, 1987. - 608 с.

9. Тиори, Т., Проектирование структур баз данных. / [Текст] : Тиори, Т., Фрай, Дж., В 2 кн., - М.: Мир, 1985. Кн. 1. - 287 с.: Кн. 2. - 320 с.

Приложение 1

Код заполнения базы данных таблицами, состоящими из миллиона записей

Код заполнения базы данных таблицами, состоящими из миллиона записей представлен на рисунках А1, А2.

<?php ini_set("max_execution_time", "500000"); ?>

<?php

function my_error_handler($errNo, $errStr, $errFile, $errLine) {

if (ob_get_length())

ob_clean();

$err_msg = 'ERRNO: '.$errNo.chr(10).

'TEXT: '.$errStr.chr(10).

'LOCATION: '.$errFile.' '.$errLine;

echo $err_msg;

exit;

}

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

set_error_handler("my_error_handler", E_ALL);

$username = "serg";

$userpassword = "1234";

$servername = "localhost";

$databasename = "perinatalniy_centr";

@mysql_pconnect($servername, $username, $userpassword) or die("Невозможно подключиться к базе. Проверьте настройки подключения");

@mysql_select_db($databasename);

for($i = 1; $i <= 1000000; $i++)

{

$query = "INSERT INTO `ginecolog` (`ID_Ginecolog`, `Surname_gin`, `Name_gin`, `Fathername_gin`, `Num_license_gin`) VALUES (".$i.", \"Фамилия ".$i."\", \"Имя ".$i."\", \"Отчество ".$i."\",".$i.");";

mysql_query($query) or die(mysql_error());

$query = "INSERT INTO `Consultatsia` (`ID_Consult`, `Name_consult`, `ID_Ginecolog`) VALUES (".$i.", \"Консультация ".$i."\", ".$i.");";

mysql_query($query) or die(mysql_error());

$query = "INSERT INTO `oslognenia` (`ID_Oslogn`, `Num_oslog`, `Nazvanie_oslogn`) VALUES (".$i.", ".$i.", \"Осложнение ".$i."\");";

mysql_query($query) or die(mysql_error());

$query = "INSERT INTO `nasl_bolezny` (`ID_Nasl_bolezn`, `Num_nasl_bolezn`, `Nazvanie_nasl_bolezn`) VALUES (".$i.", ".$i.", \"Наследственная".$i."\");";

mysql_query($query) or die(mysql_error());

$query = "INSERT INTO `Mather` (`ID_Mather`, `Surname_M`, `Name_M`, `Fathername_M`, `Pass_seria_M`, `Pass_num_M`, `Num_strah_M`, `Num_polis_M`, `ID_Consult`, `ID_Oslogn`, `ID_Nasl_bolezn`) VALUES (".$i.", \"Фамилия ".$i."\", \"Имя".$i."\", \"Отчество".$i."\" , ".$i.", ".$i.", ".$i.", ".$i.",".$i.",".$i.",".$i.");";

mysql_query($query) or die(mysql_error());

$query = "INSERT INTO `Kid` (`ID_Kid`, `Num_Kid`, `Date_Birth`, `Time_Birth`, `Blood_gr_Kid`, `Rez_f_Kid`, `Height_Kid`, `Weight_Kid`, `ID_Bolezn`, `ID_Mather`, `ID_PP`, `ID_Policlinic`, `ID_Palata`) VALUES (".$i.", ".($i + 1000).", \"Дата".($i)."\", \"Время".($i)."\", ".(rand(1,4)).",".(rand(1,2)).",".(rand(37,68)).",".(rand(1200,7800)).",".$i.",".$i.",".$i.",".$i.",".$i.");";

mysql_query($query) or die(mysql_error());

$query = "INSERT INTO `bolezny` (`ID_Bolezn`, `Num_bolezn`, `Nazvanie_bolezn`) VALUES (".$i.", ".($i+1000).", \"Болезнь ".(rand(1,10000))."\");";

mysql_query($query) or die(mysql_error());

Рисунок А.1

$query = "INSERT INTO `Policlinica` (`ID_Policlinic`, `Num_policlinic`, `ID_Doc_kid`)

VALUES (".$i.", \"Поликлиника ".$i."\",".$i.");";

mysql_query($query) or die(mysql_error());

$query = "INSERT INTO `kids_doctor` (`ID_Doc_kid`, `Surname_Doc_kid`, `Name_Doc_kid`, `Father_Doc_kid`, `License_Doc_kid`, `ID_Medsestra`) VALUES (".$i.", \"Фамилия ".(rand(1,50000))."\", \"Имя ".(rand(1,50000))."\", \"Отчество ".(rand(1,50000))."\",".$i.",".$i.");";

mysql_query($query) or die(mysql_error());

$query = "INSERT INTO `medsestra` (`ID_Medsestra`, `Surname_med`, `Name_med`, `Fathername_med`, `License_med`) VALUES (".$i.", \"Фамилия ".(rand(1,50000))."\", \"Имя ".(rand(1,50000))."\", \"Отчество ".(rand(1,50000))."\",".$i.");";

mysql_query($query) or die(mysql_error());

$query = "INSERT INTO `palata` (`ID_Palata`, `Palata_num`, `Palata_floor`, `ID_Podr`) VALUES (".$i.", ".$i.", ".(rand(2,8)).",".$i.");";

mysql_query($query) or die(mysql_error());

$query = "INSERT INTO `personal` (`ID_Personal`, `Surname_pers`, `Name_pers`, `Fathernae_pers`, `Seria_pass_pers`, `Num_pass_pers`, `Phone`) VALUES (".$i.", \"Фамилия ".(rand(1,50000))."\", \"Имя ".(rand(1,50000))."\", \"Отчество ".(rand(1,50000))."\", ".$i.", ".$i.", ".$i.");";

mysql_query($query) or die(mysql_error());

$query = "INSERT INTO `Personal_post` (`ID_PP`, `PP_date`, `ID_Personal`, `ID_Podr`, `ID_Post`) VALUES (".$i.", \"Дата ".$i."\",".$i.",".$i.",".$i.");";

mysql_query($query) or die(mysql_error());

$query = "INSERT INTO `Podr` (`ID_Podr`, `Podr_name`) VALUES (".$i.", \"Отдел ".$i."\");";

mysql_query($query) or die(mysql_error());

$query = "INSERT INTO `Post` (`ID_Post`, `Name_post`) VALUES (".$i.", \"Консультация ".$i."\");";

mysql_query($query) or die(mysql_error());

}

?>

Рисунок А.2

Приложение 2

Тексты запросов на языке SQL

Текст исходного запроса на языке SQL представлен на рисунке B1.

SELECT Kid.Num_Kid, Palata.Palata_num, Policlinica.Num_policlinic, Mather.Pass_num_M, Oslognenia.Num_oslog, Nasl_bolezny.Num_nasl_bolezn from Kid

JOIN Nasl_bolezny on Nasl_bolezny.ID_Nasl_bolezn = Kid. ID_Nasl_bolezn

JOIN Palata on Palata.ID_Palata= Kid.ID_Palata

JOIN Policlinica on Policlinica.ID_Policlinic = Kid.ID_Policlinic

JOIN Oslognenia on Oslognenia.ID_Oslog = Kid.ID_Oslog

JOIN Mather on Mather.ID_Mather = Kid. ID_Mather

WHERE (Palata.Palata_num>5 AND Palata.Palata_num<10) AND Policlinica.Num_policlinic <100 AND (Mather.Pass_num_M >100000 AND Mather.Pass_num_M <100100) AND (Oslognenia.Num_oslog >300 AND Oslognenia.Num_oslog <350) AND Kid.Num_Kid = 10000 AND Nasl_bolezny.Num_nasl_bolezn

Рисунок B1 Текст исходного запроса на языке SQL

Текст запроса, оптимизированного на основании селекции, на языке SQL представлен на рисунке B2.

SELECT Kid.Num_Kid from Kid

JOIN (SELECT * from Palata WHERE (Palata_num>5 AND Palata_num<10)) as t1

on t1.ID_Palata = Kid.ID_Palata

JOIN (SELECT * from Policlinica where Num_policlinic <100) as t2

on Kid.ID_Policlinic = t2.ID_Policlinic

JOIN (SELECT * from Oslognenia where(Num_oslog >300 AND Num_oslog <350)) as t3

on Kid.ID_Oslogn = t3.ID_Oslogn

JOIN (SELECT * from Mather where(Pass_num_M >100000 AND Pass_num_M <100100)) as t4

on Kid.ID_Mather = t4.ID_Mather

JOIN (SELECT * from Nasl_bolezny where Num_nasl_bolezn <1200) as t5

on Kid.ID_Nasl_bolezn = t5. ID_Nasl_bolezn

where Num_Kid = 10000

Рисунок B2 Текст запроса, оптимизированного на основании селекции, на языке SQL

Размещено на Allbest.ru

...

Подобные документы

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

    курсовая работа [190,8 K], добавлен 12.05.2009

  • Анализ баз данных и систем управления ими. Проектирование и создание реляционной базы данных в среде MS Access для ресторана "Дельфин": построение информационно логической модели, разработка структур таблиц базы данных и схемы данных, создание Web-узла.

    курсовая работа [3,7 M], добавлен 15.11.2010

  • Концептуальное проектирование базы данных: разработка схемы и структуры таблиц, описание атрибутов. Реализация базы данных в среде СУБД MS SQL Server 2000. Основные принципы создания таблиц. Доступ и обработка данных с помощью утилиты Enterprise Manager.

    курсовая работа [3,8 M], добавлен 22.01.2013

  • Анализ предметной области, ее формализации с помощью функциональных зависимостей. Этапы минимизации системы функциональных зависимостей и на основании полученной редуцированной системы проектирование модели базы данных. Создание и моделирование запросов.

    курсовая работа [1,7 M], добавлен 21.06.2010

  • Системы управления базами данных: сущность и характеристика. Типы данных и свойства полей СУБД Access. Объекты базы данных: таблицы, схемы данных, формы, запросы, отчеты. Разработка и проектирование базы данных "Продажи книг" в среде Microsoft Access.

    курсовая работа [1,8 M], добавлен 04.02.2013

  • Понятие базы данных в Microsoft Access, описание таблицы как объекта. Назначение запросов, форм, отчетов и страниц. Макросы и модули в СУБД. Порядок создания базы данных, ввод описания поля. Свойства полей таблиц. Построение реляционной модели данных.

    презентация [389,6 K], добавлен 18.01.2014

  • Словесное описание предметной области. Построение схемы функциональных зависимостей. Реализация базы данных средствами утилиты Enterprise Manager в формате SQL Server Management Studio. Разработка алгоритмов работы программы и приложения пользователя.

    дипломная работа [1,8 M], добавлен 26.03.2015

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

    дипломная работа [488,5 K], добавлен 30.08.2012

  • Сущности и функциональные зависимости базы данных. Атрибуты и связи. Таблицы базы данных. Построение ER-диаграммы. Организация ввода и корректировки данных. Реляционная схема базы данных. Реализация запросов, получение отчетов. Защита базы данных.

    курсовая работа [2,4 M], добавлен 06.02.2016

  • Система управления базами данных (СУБД). Программные средства, предназначенные для создания, наполнения, обновления и удаления базы данных. Структура, модели и классификация баз данных. Создание каталогов, псевдонимов, таблиц, шаблонов и форм СУБД.

    презентация [1,1 M], добавлен 09.01.2014

  • Исследование теоретических основ проектирования и разработки баз данных. Выявление функциональных зависимостей, построение инфологической модели. Обзор языковых и программных средств, предназначенных для создания, ведения и совместного использования БД.

    курсовая работа [1,5 M], добавлен 22.02.2012

  • Создание базы данных, планирование разработки и системные требования. Проектирование базы данных в среде Microsoft Access, элементы и типы данных. Создание таблицы и использование конструктора для их модернизации. Построение запросов и создание макросов.

    курсовая работа [2,0 M], добавлен 16.04.2011

  • Определение функциональных зависимостей. Разработка структуры базы данных. Организация запросов к базе данных. Использование триггеров для поддержки данных в актуальном состоянии. Разработка хранимых процедур и функций. Ограничения ведения базы данных.

    курсовая работа [113,2 K], добавлен 17.06.2014

  • Понятие реляционной модели данных, целостность ее сущности и ссылок. Основные этапы создания базы данных, связывание таблиц на схеме данных. Проектирование базы данных книжного каталога "Books" с помощью СУБД Microsoft Access и языка запросов SQL.

    курсовая работа [838,9 K], добавлен 25.11.2010

  • Цель создания базы данных магазина. Понятие и сущность инфологического моделирования, его применение. Особенности разработки базы данных, создание таблиц, схемы данных, запросов, визуальных и печатных форм. Описание процесса работы с базами данных.

    курсовая работа [1,9 M], добавлен 15.11.2013

  • Системный анализ предметной области. Разработка концептуальной модели базы данных. Построение схемы функциональных зависимостей. Создание таблиц базы данных в Database Desktop и псевдонима в BDE Administrator. Разработка алгоритма работы программы.

    курсовая работа [911,3 K], добавлен 20.12.2014

  • Создание базы данных в среде MS Access. Создание и работа с базой данных в ателье. Алгоритм решения задачи. Выбор пакета прикладных программ. Проектирование форм выходных документов с использованием СУБД MS Access. Структура записи таблиц базы данных.

    курсовая работа [1,6 M], добавлен 30.01.2009

  • Основные виды баз данных. Система управления базами данных. Анализ деятельности и информации, обрабатываемой в поликлинике. Состав таблиц в базе данных и их взаимосвязи. Методика наполнения базы данных информацией. Алгоритм создания базы данных.

    курсовая работа [3,1 M], добавлен 17.12.2014

  • Создание программ, позволяющих создавать базы данных. Создание таблицы базы данных. Создание схемы данных. Создание форм, отчетов, запросов. Увеличение объема и структурной сложности хранимых данных. Характеристика системы управления базой данных Access.

    курсовая работа [2,1 M], добавлен 17.06.2013

  • Проектирование базы данных в среде СУБД MS Access. Автоматизация учета информации о товаре в магазине. Определение требований и функций системы. Анализ предметной области. Разработка, создание таблиц, запросов, форм и отчетов. Инструкция для пользователя.

    отчет по практике [523,6 K], добавлен 21.04.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.