1 Обзор информационных технологий, подходящих для разработки ис компьютерных курсов
Скачать 3.95 Mb.
|
1.4. Требования к разрабатываемой базе данныхРазрабатываемая база данных должна полностью удовлетворять потребности всех её пользователей. Рассмотрим, какие группы пользователей могут работать с базой данных, и какие задачи они должны выполнять. С данной базой данных могут работать следующие группы пользователей: заведующий – руководящая должность в учебном заведении; преподаватели – сотрудник учебного заведения; учащиеся – клиент учебного заведения; При работе с базой данных заведующий может выполнять следующие задачи: вносить изменения в личные данные преподавателей или учащихся; составлять расписание; распределять аудитории между преподавателями; выводить любую информацию о преподавателе или учащемся; принимать и отчислять учащихся; При работе с базой данных преподаватель может выполнять следующие задачи: просматривать личную информацию о себе; просматривать список групп студентов; просматривать расписание; При работе с базой данных студент может: просматривать расписание; Выводы В данной главе проведен анализ предметной области объекта автоматизации «Компьютерные курсы», в ходе которого перечислены должности работников учебного заведения и ограничения, накладываемые на информацию, содержащуюся в информационной системе. В ходе обзора информационных технологий перечислены классы СУБД, приведены примеры для каждого класса и определены достоинства и недостатки следующих СУБД: Microsoft Access, SQLite, MySQL, Microsoft SQL Server. Рассмотрены продукты-аналоги на рынке информационных систем(АСУ «КОЛЛЕДЖ», АСУ «Учебное заведение», АСУ «ВУЗ») и даны описания данных систем. В заключении главы указаны требования к разрабатываемой базе данных со стороны каждой из групп пользователей и перечислены выполняемые этими пользователями задачи. Таким образом, полностью выполнен анализ предметной области и осуществлена подготовка к этапу проектирования базы данных. Глава II. Проектирование базы данных Во второй главе курсовой работы проведено проектирование разрабатываемой информационной системы на инфологическом уровне, при этом выделены сущности и построена инфологическая модель предметной области. Затем приведены достоинства и недостатки каждой из существующих моделей данных, обоснован выбор реляционной модели и построена даталогическая модель ИС. А также нормализована спроектированная модель и построена схема базы данных. В заключении приведены выводы по данной главе. 2.1. Разработка инфологической модели Целью инфологического проектирования является создание структурированной информационной модели предметной области, для которой будет разрабатываться база данных. При проектировании на инфологическом уровне создается информационно-логическая модель, которая должна отвечать следующим требованиям: обеспечение наиболее естественных для человека способов сбора и предоставления той информации, которую предполагается хранить в создаваемой базе данных; корректность схемы БД(адекватное отображение моделированной ПО); простота и удобство использования на следующих этапах проектирования, то есть информационно-логическая модель может легко отображаться на модели базы данных, которые поддерживаются известным СУБД(сетевые, иерархические, реляционные и др.); информационно-логическая модель должна быть описана языком, понятным проектировщикам баз данных, программистам, администратору и будущим пользователям. Суть инфологического моделирования состоит в выделении сущностей(информационных объектов предметной области), которые подлежат хранению в базе данных, а также в определении характеристик объектов и взаимосвязей между ними. Для информационной системы «Компьютерные курсы» на основе проведенного системного анализа предметной области выделены следующие сущности: преподаватель – сущность содержит информацию о преподавателях, включая заведующего; студент – сущность содержит информацию об учащихся в данном учебном заведении; аудитория – сущность содержит техническую информацию об аудиториях данного учебного заведения; направление – сущность содержит информацию о доступных курсах обучения; расписание – сущность содержит необходимую, для студентов и преподавателей, информацию; Исходя из приведенных выше сущностей, построена инфологическая модель предметной области, которая представлена на рисунке 1. Рис.1 Инфологическая модель предметной области 2.2. Обоснование выбора модели данных Под даталогической моделью понимается модель, отражающая логические взаимосвязи между элементами данных безотносительно их содержания и физические организации. При этом даталогическая модель разрабатывается с учетом конкретной реализации СУБД, также с учетом специфики конкретной предметной области на основе ее инфологической модели. Существуют несколько разновидностей даталогических моделей данных: иерархическая модель; сетевая модель; реляционная модель; объектно-ориентированная модель; Чтобы определить, какая модель лучше всего подходит для проектирования разрабатываемой ИС, рассмотрим подробней каждую разновидность. Иерархическая модель данных Структура данных. Организация данных в СУБД иерархического типа определяется в терминах: Атрибут(элемент данных) – наименьшая единица структура данных. Обычно каждому элементу при описании базы данных присваивается уникальное имя. По этому имени к нему обращаются при обработке. Элемент данных также часто называют полем. Запись – именованная совокупность атрибутов. Использование записей позволяет за одно обращение к базе получить некоторую логически связанную совокупность данных. Именно записи изменяются, добавляются и удаляются. Тип записи определяется составом ее атрибутов. Экземпляр записи – конкретная запись с конкретным значением элементов. Групповое отношение – иерархическое отношение между записями двух типов. Родительская запись(владелец группового отношения) называется исходной записью, а дочерние записи(члены группового отношения) – подчиненными. Иерархическая база данных может хранить только такие древовидные структуры. Корневая запись каждого дерева обязательно должна содержать ключ с уникальным значением. Ключи некорневых записей должны иметь уникальное значение только в рамках группового отношения. Каждая запись идентифицируется полным сцепленным ключом, под которым понимается совокупность ключей всех записей от корневой по иерархическому пути. При графическом изображении групповые отношения изображают дугами ориентированного графа, а типы записей – вершинами(диаграмма Бахмана). Для групповых отношений в иерархической модели обеспечивается автоматический режим включения и фиксированное членство. Это означает, что для запоминания любой некорневой записи в БД должна существовать ее родительская запись. При удалении родительской записи автоматически удаляются все подчиненные. У иерархических БД имеются следующие недостатки: Частично дублируется информация между парными записями, причем в иерархической модели данных не предусмотрена поддержка соответствия между парными записями. Иерархическая модель реализует отношение между исходной и дочерней записью по схеме 1:N, то есть одной родительской записи может соответствовать любое число дочерних. Допустим теперь, что исполнитель может принимать участие более чем в одном контракте(т.е. возникает связь типа M:N). В этом случае в базу данных необходимо ввести еще одно групповое отношение, в котором исполнитель будет являться исходной записью, а контракт – дочерней. Таким образом, мы опять вынуждены дублировать информацию. Операции над данными, определенные в иерархической модели: ДОБАВИТЬ в базу данных новую запись. Для корневой записи обязательно формирование значения ключа. ИЗМЕНИТЬ значение данных предварительно извлеченной записи. Ключевые данные не должны подвергаться изменениям. УДАЛИТЬ некоторую запись и все подчиненные ей записи. ИЗВЛЕЧЬ: Извлечь корневую запись по ключевому значению, допускается также последовательный просмотр корневых записей; Извлечь следующую запись(следующая запись извлекается в порядке левостороннего обхода дерева); В операции ИЗВЛЕЧЬ допускается задание условий выборки(например, извлечь сотрудников с окладом более 1 тысячи рублей). Как видим, все операции изменения применяются только к одной «текущей» записи, которая предварительно извлечена из базы данных. Такой подход к манипулированию данных получил название «навигационного». Ограничения целостности. Поддерживается только целостность связей между владельцами и членами группового отношения(никакой потомок не может существовать без предка). Как уже отмечалось, не обеспечивается автоматическое поддерживание соответствия парных записей, входящих в различные иерархии. Сетевая модель данных Структура данных. На разработку этого стандарта большое влияние оказал американский ученый Ч.Бахман. Основные принципы сетевой модели данных разработаны в середине 60-х годов, эталонный вариант сетевой модели данных описан в отчетах рабочей группы по языкам баз данных (COnference on DAta SYstem Languages) CODASYL (1971 г.). Сетевая модель данных определяется в тех же терминах, что и иерархическая. Она состоит из множества записей, которые могут быть владельцами или членами групповых отношений. Связь между записью-владельцем и записью-членом также имеет вид 1:N. Основное различие этих моделей состоит в том, что в сетевой модели запись может быть членом более чем одного группового отношения. Согласно этой модели каждое групповое отношение именуется и проводится различие между его типом и экземпляром. Тип группового отношения задается его именем и определяет свойства общие для всех экземпляров данного типа. Экземпляр группового отношения представляется записью-владельцем и множеством (возможно пустым) подчиненных записей. При этом имеется следующее ограничение: экземпляр записи не может быть членом двух экземпляров групповых отношений одного типа. Каждый экземпляр группового отношения характеризуется следующими признаками: способ упорядочения подчиненных записей: произвольный, хронологический(очередь), обратный хронологический(стек), сортированный. Если запись объявлена подчиненной в нескольких групповых отношениях, то в каждом из них может быть назначен свой способ упорядочивания. режим включения подчиненных записей: автоматический - невозможно занести в БД запись без того, чтобы она была сразу же закреплена за неким владельцем; ручной - позволяет запомнить в БД подчиненную запись и не включать ее немедленно в экземпляр группового отношения. Эта операция позже инициируется пользователем; режим исключения Принято выделять три класса членства подчиненных записей в групповых отношениях: Фиксированное. Подчиненная запись жестко связана с записью владельцем и ее можно исключить из группового отношения только удалив. При удалении записи-владельца все подчиненные записи автоматически тоже удаляются. В рассмотренном выше примере фиксированное членство предполагает групповое отношение "ЗАКЛЮЧАЕТ" между записями "КОНТРАКТ" и "ЗАКАЗЧИК", поскольку контракт не может существовать без заказчика. Обязательное. Допускается переключение подчиненной записи на другого владельца, но невозможно ее существование без владельца. Для удаления записи-владельца необходимо, чтобы она не имела подчиненных записей с обязательным членством. Таким отношением связаны записи "СОТРУДНИК" и "ОТДЕЛ". Если отдел расформировывается, все его сотрудники должны быть либо переведены в другие отделы, либо уволены. Необязательное. Можно исключить запись из группового отношения, но сохранить ее в базе данных не прикрепляя к другому владельцу. При удалении записи-владельца ее подчиненные записи - необязательные члены сохраняются в базе, не участвуя более в групповом отношении такого типа. Примером такого группового отношения может служить "ВЫПОЛНЯЕТ" между "СОТРУДНИКИ" и "КОНТРАКТ", поскольку в организации могут существовать работники, чья деятельность не связана с выполнением каких-либо договорных обязательств перед заказчиками. Операции над данными. ДОБАВИТЬ - внести запись в БД и, в зависимости от режима включения, либо включить ее в групповое отношение, где она объявлена подчиненной, либо не включать ни в какое групповое отношение. ВКЛЮЧИТЬ В ГРУППОВОЕ ОТНОШЕНИЕ - связать существующую подчиненную запись с записью-владельцем. ПЕРЕКЛЮЧИТЬ - связать существующую подчиненную запись с другой записью-владельцем в том же групповом отношении. ОБНОВИТЬ - изменить значение элементов предварительно извлеченной записи. ИЗВЛЕЧЬ - извлечь записи последовательно по значению ключа, а также используя групповые отношения - от владельца можно перейти к записям - членам, а от подчиненной записи к владельцу набора. УДАЛИТЬ - убрать из БД запись. Если эта запись является владельцем группового отношения, то анализируется класс членства подчиненных записей. Обязательные члены должны быть предварительно исключены из группового отношения, фиксированные удалены вместе с владельцем, необязательные останутся в БД. ИСКЛЮЧИТЬ ИЗ ГРУППОВОГО ОТНОШЕНИЯ - разорвать связь между записью-владельцем и записью-членом. Ограничения целостности. Как и в иерархической модели обеспечивается только поддержание целостности по ссылкам (владелец отношения - член отношения). Реляционная модель данных Реляционная модель предложена сотрудником компании IBM Е.Ф.Коддом в 1970 г. (русский перевод статьи, в которой она впервые описана опубликован в журнале "СУБД" N 1 за 1995 г.). В настоящее время эта модель является фактическим стандартом, на который ориентируются практически все современные коммерческие СУБД. Структура данных. В реляционной модели достигается гораздо более высокий уровень абстракции данных, чем в иерархической или сетевой. В упомянутой статье Е.Ф.Кодда утверждается, что "реляционная модель предоставляет средства описания данных на основе только их естественной структуры, т.е. без потребности введения какой-либо дополнительной структуры для целей машинного представления". Другими словами, представление данных не зависит от способа их физической организации. Это обеспечивается за счет использования математической теории отношений (само название "реляционная" происходит от английского relation - "отношение"). Перейдем к рассмотрению структурной части реляционной модели данных. Прежде всего необходимо дать несколько определений. Определения: Декартово произведение: Для заданных конечных множеств (не обязательно различных) декартовым произведением называется множество произведений вида: , где Пример: если даны два множества A (a1,a2,a3) и B (b1,b2), их декартово произведение будет иметь вид С=A*B (a1*b1, a2*b1, a3*b1, a1*b2, a2*b2, a3*b2) Отношение: Отношением R, определенным на множествах называется подмножество декартова произведения . При этом: множества называются доменами отношения элементы декартова произведения называются кортежами число n определяет степень отношения ( n=1 - унарное, n=2 - бинарное, ..., n-арное) количество кортежей называется мощностью отношения Пример: на множестве С могут быть определены отношения R1 (a1*b1, a3*b2) или R2 (a1*b1, a2*b1, a1*b2) Отношения удобно представлять в виде таблиц. На рис. 2 представлена таблица (отношение степени 5), содержащая некоторые сведения о работниках гипотетического предприятия. Строки таблицы соответствуют кортежам. Каждая строка фактически представляет собой описание одного объекта реального мира (в данном случае работника), характеристики которого содержатся в столбцах. Можно провести аналогию между элементами реляционной модели данных и элементами модели "сущность-связь". Реляционные отношения соответствуют наборам сущностей, а кортежи - сущностям. Поэтому, также как и в модели "сущность-связь" столбцы в таблице, представляющей реляционное отношение, называют атрибутами. Рис.2. Основные компоненты реляционного отношения. Каждый атрибут определен на домене, поэтому домен можно рассматривать как множество допустимых значений данного атрибута. Несколько атрибутов одного отношения и даже атрибуты разных отношений могут быть определены на одном и том же домене. В примере, показанном на рис.2 атрибуты "Оклад" и "Премия" определены на домене "Деньги". Поэтому, понятие домена имеет семантическую нагрузку: данные можно считать сравнимыми только тогда, когда они относятся к одному домену. Таким образом, в рассматриваемом нами примере сравнение атрибутов "Табельный номер" и "Оклад" является семантически некорректным, хотя они и содержат данные одного типа. Именованное множество пар "имя атрибута - имя домена" называется схемой отношения. Мощность этого множества - называют степенью или "арностью" отношения. Набор именованных схем отношений представляет из себя схему базы данных. Атрибут, значение которого однозначно идентифицирует кортежи, называется ключевым (или просто ключом). В нашем случае ключом является атрибут "Табельный номер", поскольку его значение уникально для каждого работника предприятия. Если кортежи идентифицируются только сцеплением значений нескольких атрибутов, то говорят, что отношение имеет составной ключ. Отношение может содержать несколько ключей. Всегда один из ключей объявляется первичным, его значения не могут обновляться. Все остальные ключи отношения называются возможными ключами. В отличие от иерархической и сетевой моделей данных в реляционной отсутствует понятие группового отношения. Для отражения ассоциаций между кортежами разных отношений используется дублирование их ключей. Рассмотрим пример базы данных (см. рис.3), содержащей сведения о подразделениях предприятия и работающих в них сотрудниках, применительно к реляционной модели будет иметь вид: Рис.3. База данных о подразделениях и сотрудниках предприятия. Например, связь между отношениями ОТДЕЛ и СОТРУДНИК создается путем копирования первичного ключа "Номер_отдела" из первого отношения во второе. Таким образом: для того, чтобы получить список работников данного подразделения, необходимо из таблицы ОТДЕЛ установить значение атрибута "Номер_отдела", соответствующее данному "Наименованию_отдела" выбрать из таблицы СОТРУДНИК все записи, значение атрибута "Номер_отдела" которых равно полученному на предыдушем шаге. для того, чтобы узнать в каком отделе работает сотрудник, нужно выполнить обратную операцию: определяем "Номер_отдела" из таблицы СОТРУДНИК по полученному значению находим запись в таблице ОТДЕЛ. Атрибуты, представляющие собой копии ключей других отношений, называются внешними ключами. Свойства отношений. Отсутствие кортежей-дубликатов. Из этого свойства вытекает наличие у каждого кортежа первичного ключа. Для каждого отношения, по крайней мере, полный набор его атрибутов является первичным ключом. Однако, при определении первичного ключа должно соблюдаться требование "минимальности", т.е. в него не должны входить те атрибуты, которые можно отбросить без ущерба для основного свойства первичного ключа - однозначно определять кортеж. Отсутствие упорядоченности кортежей. Отсутствие упорядоченности атрибутов. Для ссылки на значение атрибута всегда используется имя атрибута. Атомарность значений атрибутов, т.е. среди значений домена не могут содержаться множества значений (отношения). Объектно-ориентированная модель данных Основные трудности объектно-ориентированного моделирования данных проистекают из того, что такого развитого математического аппарата, на который могла бы опираться общая объектно-ориентированная модель данных, не существует. В большой степени, поэтому до сих пор нет базовой объектно-ориентированной модели. С другой стороны, некоторые авторы утверждают, что общая объектно-ориентированная модель данных в классическом смысле и не может быть определена по причине непригодности классического понятия модели данных к парадигме объектной ориентированности. Один из наиболее известных теоретиков в области моделей данных Беери предлагает в общих чертах формальную основу ООБД, далеко не полную и не являющуюся моделью данных в традиционном смысле, но позволяющую исследователям и разработчикам систем ООБД по крайней мере говорить на одном языке (если, конечно, предложения Беери будут развиты и получат поддержку). Независимо от дальнейшей судьбы этих предложений мы считаем полезным кратко их пересказать. Во-первых, следуя практике многих ООБД, предлагается выделить два уровня моделирования объектов: нижний (структурный) и верхний (поведенческий). На структурном уровне поддерживаются сложные объекты, их идентификация и разновидности связи «отношением классификации (ISA)».База данных - это набор элементов данных, связанных отношениями "входит в класс" или "является атрибутом". Таким образом, БД может рассматриваться как ориентированный граф. Важным моментом является поддержание наряду с понятием объекта понятия значения (позже мы увидим, как много на этом построено в одной из успешных объектно-ориентированных СУБД O2). Важным аспектом является четкое разделение схемы БД и самой БД. В качестве первичных концепций схемного уровня ООБД выступают типы и классы. Отмечается, что во всех системах, использующих только одно понятие (либо тип, либо класс), это понятие неизбежно перегружено: тип предполагает наличие некоторого множества значений, определяемого структурой данных этого типа; класс также предполагает наличие множества объектов, но это множество определяется пользователем. Таким образом, типы и классы играют разную роль, и для строгости и недвусмысленности требуется одновременная поддержка обоих понятий. Беери не представляет полной формальной модели структурного уровня ООБД, но выражает уверенность, что текущего уровня понимания достаточно, чтобы формализовать такую модель. Что же касается поведенческого уровня, предложен только общий подход к требуемому для этого логическому аппарату (логики первого уровня недостаточно). Важным, хотя и недостаточно обоснованным предположением Беери является то, что двух традиционных уровней - схемы и данных - для ООБД недостаточно. Для точного определения ООБД требуется уровень мета-схемы, содержимое которой должно определять виды объектов и связей, допустимых на схемном уровне БД. Мета-схема должна играть для ООБД такую же роль, какую играет структурная часть реляционной модели данных для схем реляционных баз данных. Имеется множество других публикаций, относящихся к теме объектно-ориентированных моделей данных, но они либо затрагивают достаточно частные вопросы, либо используют слишком серьезный для этого обзора математический аппарат (например, некоторые авторы определяют объектно-ориентированную модель данных на основе теории категорий). Для иллюстрации текущего положения дел мы кратко рассмотрим особенности конкретной модели данных, применяемой в объектно-ориентированной СУБД O2 (это, конечно, тоже не модель данных в классическом смысле). В O2 поддерживаются объекты и значения: Объект - это пара (идентификатор, значение), причем объекты инкапсулированы, т.е. их значения доступны только через методы - процедуры, привязанные к объектам. Значения могут быть атомарными или структурными. Структурные значения строятся из значений или объектов, представленных своими идентификаторами, с помощью конструкторов множеств, кортежей и списков. Элементы структурных значений доступны с помощью предопределенных операций (примитивов). Возможны два вида организации данных: классы, экземплярами которых являются объекты, инкапсулирующие данные и поведение, и типы, экземплярами которых являются значения. Каждому классу сопоставляется тип, описывающий структуру экземпляров класса. Типы определяются рекурсивно на основе атомарных типов и ранее определенных типов и классов с применением конструкторов. Поведенческая сторона класса определяется набором методов. Объекты и значения могут быть именованными. С именованием объекта или значения связана долговременность его хранения (persistency): любые именованные объекты или значения долговременны; любые объект или значение, входящие как часть в другой именованный объект или значение, долговременны. С помощью специального указания, задаваемого при определении класса, можно добиться долговременности хранения любого объекта этого класса. В этом случае система автоматически порождает значение-множество, имя которого совпадает с именем класса. В этом множестве гарантированно содержатся все объекты данного класса. Метод - программный код, привязанный к конкретному классу и применимый к объектам этого класса. Определение метода в O2 производится в два этапа. Сначала объявляется сигнатура метода, т.е. его имя, класс, типы или классы аргументов и тип или класс результата. Методы могут быть публичными (доступными из объектов других классов) или приватными (доступными только внутри данного класса). На втором этапе определяется реализация класса на одном из языков программирования O2 (подробнее языки обсуждаются в следующем разделе нашего обзора). В модели O2 поддерживается множественное наследование классов на основе отношения супертип/подтип. В подклассе допускается добавление и/или переопределение атрибутов и методов. Возможные при множественном наследовании двусмысленности (по именованию атрибутов и методов) разрешаются либо путем переименования, либо путем явного указания источника наследования. Объект подкласса является объектом каждого суперкласса, на основе которого порожден данный подкласс. Поддерживается предопределенный класс "Оbject", являющийся корнем решетки классов; любой другой класс является неявным наследником класса "Object" и наследует предопределенные методы ("is_same", "is_value_equal" и т.д.). Специфической особенностью модели O2 является возможность объявления дополнительных "исключительных" атрибутов и методов для именованных объектов. Это означает, что конкретный именованный объект-представитель класса может обладать типом, являющимся подтипом типа класса. Конечно, с такими атрибутами не работают стандартные методы класса, но специально для именованного объекта могут быть определены дополнительные (или переопределены стандартные) методы, для которых дополнительные атрибуты уже доступны. Подчеркивается, что дополнительные атрибуты и методы привязываются не к конкретному объекту, а к имени, за которым в разные моменты времени могут стоять вообще говоря разные объекты. Для реализации исключительных атрибутов и методов требуется развитие техники позднего связывания. 2.3. Логическое проектирование Для логического проектирования выбрана реляционная модель данных, т.к. она наиболее полно соответствует требованиям, предъявленным к разрабатываемой информационной системе: отсутствие дублируемой информации; поддержание целостности данных при вставке, удалении или изменении записей; возможность организации всех видов связи между отношениями 1:1, 1:N и M:N. В реляционной базе данных даталогическое проектирование приводит к разработке корректной схемы базы данных, т.е. такой схемы, в которой отсутствуют нежелательные зависимости между атрибутами. При этом можно использовать процесс проектирования с помощью декомпозиции, т.е. последовательно нормализовывать схему отношений, тем самым накладывая ограничения и избавляясь от нежелательных зависимостей между атрибутами. Чтобы перейти к реляционной модели и построить даталогическую модель ИС, каждой сущности из инфологической модели данных поставим в соответствие отношение реляционной модели. В таком случае, каждый атрибут сущности становится атрибутом соответствующего ему отношения. Также укажем каждому атрибуту тип данных и признак обязательности. Обозначим первичные и внешние ключи. После всего проведем нормализацию получившейся модели данных. Приведем список атрибутов для каждого отношения в схеме базы данных: Преподаватель ФИО – varchar(70) NOT NULL (первичный ключ, PK) Адрес – varchar(100) NOT NULL Телефон – int NOT NULL Дата рождения – date NOT NULL Должность – varchar(20) NOT NULL Оклад – int NOT NULL Стаж – int NOT NULL Направление ФИО преподавателя – varchar(70) NOT NULL (внешний ключ, FK) Номер группы – int NOT NULL (внешний ключ, FK) Название предмета – varchar(40) NOT NULL Время начала – int NULL День недели – varchar(15) NULL Студент ФИО – varchar(70) NOT NULL Адрес – varchar(100) NOT NULL Дата рождения – date NULL Телефон – int NOT NULL Номер группы – int NOT NULL (внешний ключ, FK) Срок зачисления – date NOT NULL Срок выпуска – date NULL Группа Номер группы – int NOT NULL (первичный ключ, PK) Кол-во учащихся – int NOT NULL Аудитория ФИО преподавателя – varchar(70) NOT NULL (внешний ключ, FK) Номер аудитории – int NOT NULL Кол-во мест – int NULL Кол-во оборудования – int NULL Рис. 4 Схема базы данных до нормализации 2.4. Нормализация схемы базы данных Нормальная форма — свойство отношения в реляционной модели данных, характеризующее его с точки зрения избыточности, которая потенциально может привести к логически ошибочным результатам выборки или изменения данных. Нормальная форма определяется как совокупность требований, которым должно удовлетворять отношение. Нормализация – это процесс преобразования базы данных к виду, отвечающему нормальным формам. Нормализация предназначена для приведения структуры базы данных к виду, обеспечивающему минимальную избыточность, то есть нормализация не имеет целью уменьшение или увеличение производительности работы или же уменьшение или увеличение объёма БД. Конечной целью нормализации является уменьшение потенциальной противоречивости хранимой в БД информации. Устранение избыточности производится, как правило, за счёт декомпозиции отношений таким образом, чтобы в каждом отношении хранились только первичные факты (то есть факты, не выводимые из других хранимых фактов). Таблица находится в первой нормальной форме, если каждый её атрибут атомарен, то есть может содержать только одно значение. Таким образом, не существует 1NF таблицы, в полях которых могут храниться списки значений. Для приведения таблицы к 1NF обычно требуется разбить таблицу на несколько отдельных таблиц. Отношение находится во второй нормальной форме (2NF), если она находится в первой нормальной форме, и при этом любой её атрибут, не входящий в состав первичного ключа, функционально полно зависит от первичного ключа. Функционально полная зависимость означает, что атрибут функционально зависит от всего первичного составного ключа, но при этом не находится в функциональной зависимости от какой-либо из входящих в него атрибутов (частей). Или другими словами: в 2NF нет неключевых атрибутов, зависящих от части составного ключа. Для исходной схемы базы данных, полученной в предыдущем разделе и находящейся в первой нормальной форме, нормализация ко второй нормальной форме не требуется, т.к. в схеме отсутствуют отношения, имеющие составной первичный ключ. Т.е. исходная схема базы данных уже находится во второй нормальной форме. Отношение находится в третьей нормальной форме (3NF), если она находится во второй нормальной форме 2NF и при этом любой ее неключевой атрибут зависит только от первичного ключа (Primary key, PK). Таким образом, отношение находится в 3NF тогда и только тогда, когда оно находится во 2NF и отсутствуют транзитивные зависимости неключевых атрибутов от ключевых. В схеме базы данных разрабатываемой ИС, приведенной ко второй нормальной форме, присутствует транзитивная зависимость между атрибутами в отношении Аудитория: атрибут Номер аудитории зависит от внешнего ключа ФИО преподавателя, а атрибуты Кол-во мест и кол-во оборудования зависят от неключевого атрибута Номер аудитории. Таким образом, нормализацией к третьей нормальной форме в данном случае представляет собой вынесение атрибутов Номер аудитории, кол-во мест и кол-во оборудования в отдельное отношение Аудитория. Отсюда получаем следующие изменения в списке атрибутов: Аудитория Номер аудитории – int NOT NULL (внешний ключ, FK) Кол-во мест – int NULL Кол-во оборудования – int NULL Преп_Ауд ФИО преподавателя – varchar(70) NOT NULL (внешний ключ, FK) Номер аудитория – int NOT NULL (первичный ключ, PK) Результирующее отношение, находящееся в третьей нормальной форме, приведено на рисунке 5. Рис. 5 Нормализованная база данных Выводы Во второй главе курсовой работы приведена разработка информационно-логической модели. Выделены сущности, дано их описание и построена инфологическая модель предметной области. Далее в ходе обоснования выбора модели данных описаны существующие модели данных (иерархическая, сетевая, реляционная, объектно-ориентированная), указаны их достоинства и недостатки, и сделан выбор в пользу реляционной модели. Затем на основании инфологической модели построена даталогическая модель данных, дан список атрибутов ее отношений и проведена нормализация до третьей нормальной формы. Таким образом, завершено проектирование базы данных и получена вся информация, необходимая для реализации проектируемой инфомационной системы в одной из реляционных СУБД. |