База данных для перинатального центра
Анализ главных аспектов создания базы данных в визуальной среде разработки СУБД 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