p align="left">Изображенная на рисунке схема отображает вырожденное дерево, у которого каждый объект имеет не более одного ребенка. Основным недостатком иерархической модели для данного программного продукта являются громоздкая форма записи реляционной модели, что, в свою очередь, приводит к осложнению понимания пользователем базы. 3.2.3 Сетевая модель данных Сетевая модель позволяет отображать разнообразные взаимосвязи элементов данных в виде произвольного графа, обобщая тем самым иерархическую модель данных. Основной структурой в сетевых моделях данных является «сеть». При таком представлении существует несколько входов в сеть - неоднозначность доступа к данным. Особенности такого представления: один или несколько узлов могут иметь больше одного родителя; время доступа изменяется в зависимости от исходного входа. Время доступа в сетевой структуре может быть больше, чем в иерархической структуре. Схема сетевой модели данных для данной БД показана на рисунке 3.3. Рис. 3.3 - Схема сетевой модели данных К достоинствам СМД относят: - возможность создания произвольных связей (например, растения произрастают на закрепительном участке, и закрепительный участок имеет растения); - эффективную реализацию с точки зрения затрат времени и памяти. Недостатки такие: - сложность и жесткость схемы; - сложность в установлении и проверке целостности данных. Недостатком обеих этих структур является то, что при добавлении новых вершин или установлении новых связей возникают проблемы выгрузки данных из базы, перегенерации полностью структуры, загрузка данных обратно в базу. При этом возникает вероятность потерять данные при обратной загрузке. 3.2.4 Реляционная модель данных Предпочтение было отдано реляционной модели по следующим причинам: - реляционная модель является более простой моделью, чем сетевая; - схема данных позволяет представить структуру в виде таблиц (после некоторых преобразований); - в настоящее время реляционные базы данных являются более распространенными, чем сетевые; - использование реляционных баз данных удобнее, чем сетевых; - сетевая модель данных сложна для изучения пользователем, проще разобраться с реляционной МД; - реляционная МД нагляднее представляет структуру данных. В отличие от ИМД и СМД, РМД обеспечивает логический доступ к данным, не зависящий от физической реализации. Недостатками реляционных моделей являются сложность в описании иерархических, сетевых связей и отсутствие стандартных средств идентификации отдельных записей. Для проектируемой БД реляционная модель представлена на рисунке 3.4. 3.3 Нормализация таблиц 3.3.1 Выделение функциональных зависимостей Функциональная связь - связь вида один ко многим в одной таблице. Пусть R - отношение, в котором существуют подмножества множества атрибутов х и у. Тогда х>у (у функционально зависит от х) тогда и только тогда, когда для каждого допустимого значения R каждое значение х связано только с одним у. Если совпадение по х, то и по у.Если х - потенциальный ключ, то все атрибуты этого отношения всегда функционально от него зависят. На рисунке 3.5 изображена схема функциональных зависимостей. Рис.3.5 - Схема функциональных зависимостей таблиц 3.3.2 Описание нормальных форм Докажем, что спроектированная БД нормализована до третей нормальной формы. Так как, по определению, если БД находится в третьей нормальной форме, то она находится и в первой и во второй нормальных формах, то докажем сперва, что данная БД находится в первой нормальной форме. Первая нормальная форма требует, чтобы каждое поле таблицы БД было неделимым и не содержало повторяющихся групп. Неделимость поля означает, что содержащиеся в нем значения должны быть атомарные, то есть невозможно выделить из неделимого поля какую либо структуру или запись. А также невозможно разбиение поля на два и более при условии, что у получающихся в результате разбиения атрибутов полей будет свой смысл. Повторяющимися являются поля, содержащие одинаковые по смыслу значения. Так как разрабатываемая БД удовлетворяет этим ограничениям, то она находится в первой нормальной форме. Вторая нормальная форма требует, чтобы все поля таблицы зависели от первичного ключа, то есть, чтобы первичный ключ однозначно определял запись и не был избыточен. Итак, ограничениям, накладываемым второй нормальной формой, разрабатываемая БД удовлетворяет. Третья нормальная форма требует, чтобы в таблице не имелось транзитивных зависимостей между не ключевыми полями, то есть, чтобы значение любого поля, не входящего в первичный ключ, не зависело от значения другого поля, также не входящего в первичный ключ. Все таблицы данной БД удовлетворяют этому условию, следовательно, БД находится в третьей нормальной форме. 3.3.3 Описание РМД Объекты данной предметной области предоставляются в виде таблиц, свойства становятся атрибутами либо полями. Таблиц и полей с одинаковыми названиями быть не может. В каждой таблице выделяется свойство, которое является ключевым. В каждой таблице первичным ключом будет первичное поле (#). По правилу построения РМД, ключевое поле из таблицы, объект которой связан с другим объектом отношением , добавляется в таблицу, которое соответствует отношению «много» (). Таких связей получается 5. «Студент» связан с объектом «Группа» отношением , значит, первичным ключом у нас является код группы (# КГр) и подсоединяем его к таблице «Студент», где записываем внешний ключ (КГр #). Аналогичным образом мы проделываем остальные таблички: · таблицу «Специальность», где первичный ключ (счетчик) (#КСп), соединяем стрелочкой с таблицей «Группа» (КСп # ); · «Факультет» (#КФ) соединяем с таблицей «Специальность», где внешним ключом будет (КФ#); · таблицу «Общежитие» (первичный ключ(#КО)) соединяем с «Комната» (КО#); · «Студент» (#КСт) соединяем с «Проживает» (КСт #). Отношение преобразуется по следующему принципу: вводится дополнительная таблица, в которую ключевые поля таблиц, связанных отношением , также включаются поля, которые являются свойствами отношений между этими объектами. В нашей схеме присутствует только одна такая связь, т.е. к таблице отношения «Проживает», где счетчиком является (#КПр), присоединяется внешний ключ (#КК(код комнаты)), внешний ключ (Ст#) и свойства отношения: дата заселения и дата выселения. На рис. 2 показана схема РМД. Таким образом, после рассмотрения приведенных выше моделей данных для разработанной в пункте 3 схемы «объект-отношение» была выбрана реляционная модель, которая проста и понятна для пользователя и отвечает требованиям изучаемого курса. 4 Программная реализация СУБД 4.1 Описание таблиц Таблица «Студент» - справочник студентов. Код студента - код студента, тип счетчик, первичный ключ, содержит уникальное значения без повторений. ФИО - фамилия, имя и отчество студента, тип текстовый, размер 50 символов, поле обязательное, индексированное, допускаются совпадения. № зачетки - содержит номер зачетки, тип текстовый, размер 10 символов, содержит маску ввода: 00\/000, условие на значение:>0, если вводится неправильное значение, выводится сообщение об ошибке ”Некорректный ввод”; поле обязательное, индексированное, совпадения не допускаются. Дата рождения - содержит дату рождения, тип дата/время, имеет краткий формат даты, маска ввода 00.00.0000;0;_, условие на вводимое значение <Now()-365*16 (т.е. студенту должно быть не меньше 16 лет), если вводится неправильное значение, выводится сообщение об ошибке, обязательное поле, индексированное, допускаются повторения. Домашний адрес - содержит адрес проживания студента, тип текстовый, размер 50 символов, поле обязательное, индексированное, допускаются совпадения. Контактный телефон - содержит номер телефона, тип текстовый, размер 20 символов, содержит маску ввода: 0\-000\-000\-00\-00;;_ . Поле необязательное, индексированное, не допускаются совпадения. Пол - содержит пол студента, тип текстовый, размер-10 символов, обязательное поле, индексированное поле, совпадения допускаются, поле со списком, тип источника строк- список значений, источник строк - мужской; женский. Форма обучения- содержит информацию о форме обучения студента, тип текстовый, размер- 10 символов, обязательное поле, индексированное поле, совпадения допускается, поле со списком, тип источника строк- список значений, источник строк- очная; заочная. ФИО матери - фамилия, имя, отчество матери студента, тип текстовый, размер 50 символов, поле обязательное, индексированное, допускаются совпадения. ФИО отца - фамилия, имя, отчество отца студента, тип текстовый, размер 50 символов, поле обязательное, индексированное, допускаются совпадения. Контактная информация отца - содержит место работы, должность и контактный телефон, тип текстовый, размер 100 символов, обязательное поле, индексированное поле, совпадения допускаются. Контактная информация матери - содержит место работы, должность и контактный телефон, тип текстовый, размер 100 символов, обязательное поле, индексированное поле, совпадения допускаются. Группа- код группы, тип числовой, размер поля - длинное целое, обязательное поле, поле со списком, тип источника - таблица или запрос: SELECT Группа.[Код группы], Группа.[Название группы] FROM Группа ORDER BY [Название группы];. Таблица «Группа» содержит информацию о группах, в которых учатся студенты. Код группы - тип счетчик, первичный ключ, содержит уникальные значения без повторений. Название группы - тип текстовый, размер-10 символов, обязательное и индексированное поле, совпадения не допускаются. Год набора - тип дата/время, размер 20 символов, маска ввода- 00.00.0000;0;_, обязательное и индексированное поле, совпадения допускаются, условие назначения: >Date()-(5*365). Если вводится неправильное значение, то выводится сообщение об ошибке. Буква - тип текстовый, размер 5 символов, обязательное и индексированное поле, совпадения допускаются. Если вводится неправильное значение, то выводится сообщение об ошибке. Поле со списком, тип источника строк - список значений, источник строк - а; б; в; г; -;. Специальность- код специальности, тип числовой, обязательное поле, размер поля - длинное целое. Тип источника строк -таблица или запрос, источник строк- SELECT Специальность.[Код специальности], Специальность.[Краткое название] FROM Специальность ORDER BY [Краткое название]. Таблица «Специальность» справочник специальностей факультетов. Код специальности - тип счетчик, первичный ключ, содержит уникальные значения без повторений. Полное название - тип текстовый, размер 50 символов, обязательное и индексированное поле, совпадения не допускаются. Краткое название - тип текстовый, размер 10 символов, необязательное поле, без повторений. Шифр - тип текстовый, размер 20 символов, содержит маску ввода: 0000000.0.00;. Обязательное и индексированное поле, без повторений. Факультет - код факультета, тип числовой, обязательное поле, размер поля - длинное целое. Тип источника строк - таблица или запрос, источник строк- SELECT Факультет.[Код факультета], Факультет.[Краткое название] FROM Факультет ORDER BY [Краткое название]; Таблица «Факультет» содержит информацию о всех факультетах ВУЗа. Код факультет - тип счетчик, первичный ключ, содержит уникальные значения без повторений. Полное название - тип текстовый, размер 50 символов, обязательное и индексированное поле, совпадения не допускаются. Краткое название - тип текстовый, размер 10 символов, необязательное поле, без повторений. ФИО декана - тип текстовый, размер 50 символов, поле обязательное, индексированное, не допускаются совпадения. № телефона деканата - тип текстовый, размер 20 символов, маска ввода: 000\-00\-00; поле обязательное, индексированное, совпадения не допускаются. Таблица «Комната» содержит информацию о комнатах общежития. Код комнаты - тип счетчик, первичный ключ, содержит уникальные значения без повторений. Количество мест - тип числовой, размер 5 символов, обязательное и индексированное поле, совпадения допускаются. Значение по умолчанию: 0, условие на значение: >0, если вводится неправильное значение, то выдается ошибка. Тип - тип текстовый, размер 10 символов, обязательное и индексированное поле, совпадения допускаются. Поле со списком, тип источника строк - список значений, источник строк - мужская; женская; семейная. № комнаты - тип числовой, содержит маску ввода: 0”.”000, обязательное поле, индексированное, совпадения допускаются. Значение по умолчанию: 0, условие на значение: >0, если вводится неправильное значение, то выдается ошибка.
Страницы: 1, 2, 3, 4
|