Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методическое пособие 100

.pdf
Скачиваний:
2
Добавлен:
30.04.2022
Размер:
399.12 Кб
Скачать

класса уже входит в отношение с каким-то объектом из первого класса, то он уже не может входить в такое же отношение с другим объектом первого класса.

Такой характер носит связь между классами Группа и Студент. В группе может быть несколько студентов, но каждый студент может быть только в одной группе. Или отношение между классами Факультет и Кафедра. Факультет может иметь несколько кафедр, но каждая кафедра принадлежит только одному факультету.

На схеме связь изображается одной одинарной и одной двойной стрелками. Двойная стрелка направлена к тому классу, объекты которого могут входить в отношение в любом количестве (рис. 6).

Студент

состоит

Группа

Рис. 6. Связь 1:М

3. Связь M:N, «многие-ко-многим». Эта связь означает, что одному объекту первого класса соответствует несколько объектов второго класса и каждому объекту второго класса соответствует несколько объектов первого класса. В отношение входит несколько объектов от одного и от другого класса.

Например, связь между классами Преподаватель и Предмет. Преподаватель может читать несколько предметов, и каждый предмет могут читать несколько преподавателей.

На схеме такая связь изображается двумя двойными стрелками (рис. 7).

Преподаватель

читает

Предмет

 

Рис. 7. Связь М:N

9

2.3.2. Характеристика полноты связи

Характеристика полноты отражает зависимость класса от связи, в которую он входит.

1.Необязательная по отношению к классу связь означает, что существование объектов класса не зависит от наличия связи.

2.Обязательная по отношению к классу связь означает, что существование объектов класса зависит от наличия связи.

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

Например:

1. Связь между классами Факультет и Компьютерный класс. В университете есть факультеты, не имеющие компьютерных классов, и есть компьютерные классы, не приписанные ни к одному из факультетов, т. е. и компьютерные классы, и факультеты существуют вне зависимости от того, относится ли компьютерный класс к факультету и имеет ли факультет хотя бы один компьютерный класс (рис. 8). Такая связь является необязательной и по отношению к классу Факультет, и по отношению к классу Компьютерный класс.

Факультет

имеет

Компьютерный

класс

 

 

Рис. 8. Связь между классами Факультет

иКомпьютерный класс

2.Связь между классами Служащий и Должность. Каждый сотрудник в организации должен иметь какую-либо должность, т. е. нет сотрудника без должности. Это означает, что не существует объекта класса Служащий, не связанного с

10

каким-либо объектом класса Должность. Но должность может быть и вакантной, т. е. быть не связанной ни с одним объектом класса Служащий (рис. 9). Такая связь является обязательной по отношению к классу Служащий и необязательной по отношению к классу Должность.

3.

Служащий

занимает

Должность

Рис. 9. Связь между классами Служащий и Должность

4. Связь между классами Студент и Группа. Не может быть студента, не принадлежащего ни к одной группе, так же как не может быть группы без студентов (рис. 10). Такая связь является обязательной и по отношению к классу Студент, и по отношению к классу Группа.

Студент

состоит

Группа

Рис. 10. Связь между классами Студент и Группа

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

После того как построена инфологическая модель предметной области, можно переходить к построению модели данных.

11

3. ФИЗИЧЕСКАЯ МОДЕЛЬ ДАННЫХ

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

12

4. ПРИМЕР ПРОЕКТИРОВАНИЯ БАЗЫ ДАННЫХ

Рассмотрим пример проектирования базы данных от начала и до конца. В качестве предметной области выберем знакомую вам сферу – вступительные экзамены.

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

Сначала словесно опишем предметную область для того, чтобы точнее определить классы объектов и отношения между ними.

Университет ведет прием на 14 факультетов по 30 специальностям. По каждой специальности определены размер приема и перечень вступительных экзаменов с указанием формы проведения (устно или письменно). Абитуриент подает заявление на один или несколько факультетов на определенные специальности и затем сдает соответствующие экзамены. Абитуриенты для проведения экзаменов разбиваются на группы по 25 человек. Все группы, относящиеся к одной специальности, сдают экзамен по предмету в один день. На экзамене абитуриент получает оценку: 2, 3, 4, 5, 6. По результатам экзаменов проводится зачисление абитуриентов на специальность.

Выделим классы объектов – Абитуриент, Факультет, Специальность, Экзамен – и определим свойства этих классов

(рис. 11).

Класс Абитуриент имеет свойства: ФИО, дата рождения, паспортные данные (серия, номер, кем и когда выдан), наличие медали (нет, сереб., зол.).

Класс Экзамен имеет свойства: дата проведения экзамена, название предмета, форма экзамена (устно или письменно).

Класс Факультет имеет свойства: название факультета. Класс Специальность имеет свойства: название

специальности, количество мест.

13

 

Абитуриент

 

 

Факультет

 

Медаль

 

 

 

 

 

 

 

ФИО

 

Дата

Паспорт

 

Название

 

рождения

 

 

 

 

 

 

 

 

 

Экзамен

Форма

 

Специальность

 

 

 

 

 

Дата

 

Предмет

Название

Набор

 

 

 

 

 

 

Рис. 11. Классы объектов университета

Определим связи между классами объектов:

1. Абитуриент подает заявление на специальность (рис. 12). Это связь между классами Абитуриент и Специальность. Абитуриент может подать заявление на одну или несколько специальностей. На каждую специальность может быть подано несколько заявлений. Это означает, что связь имеет тип «многие-ко-многим». Абитуриент существует, только если он подал заявление на какую-либо специальность, существование же специальности не зависит от того, есть ли хотя бы одно заявление на эту специальность. Следовательно, связь является обязательной по отношению к классу Абитуриент и необязательной по отношению к классу Специальность. После подачи заявления абитуриент получает экзаменационный лист и приписывается к одной из групп, формируемых по этой специальности, для сдачи вступительных экзаменов. Поэтому связь будет иметь свойства: номер экзаменационного листа и номер группы.

14

Абитуриент

Заявление

Специальность

Лист Группа

Рис. 12. Абитуриент подает заявление на специальность

2. Каждый факультет предлагает одну или несколько специальностей, разные факультеты не могут предлагать одинаковые специальности. Эта связь имеет тип «один-ко- многим». Не может быть специальности, не принадлежащей ни к одному факультету, так же как факультета без хотя бы одной специальности (рис. 13). Поэтому связь является обязательной по отношению к обоим классам.

Факультет

Предлагает

Специальность

Рис. 13. Факультет предлагает специальности

3. По каждой специальности проводится несколько экзаменов. Даже если два экзамена проводятся по одному и тому же предмету в один и тот же день, но на разные специальности, экзамены считаются различными. Связь имеет тип «один-ко-многим». Экзамен существует, только если он проводится по какой-либо специальности. Однако возможна ситуация, когда прием ведется без экзаменов (рис. 14). Поэтому связь является обязательной по отношению к классу Экзамен и необязательной по отношению к классу Специальность.

Экзамен

Проводится

Специальность

Рис. 14. Проведение экзаменов

15

4. Абитуриент сдает несколько экзаменов. Каждый экзамен сдают несколько абитуриентов. Связь имеет тип «многие-ко-многим». Абитуриент может не сдавать ни одного экзамена (зачислен без сдачи экзаменов). Экзамен может не сдавать ни один абитуриент (все уже зачислены по итогам предыдущих экзаменов) (рис. 15). Поэтому связь является необязательной по отношению к обоим классам. При сдаче экзамена абитуриент получает оценку. Оценка будет свойством связи.

Абитуриент

Сдает

Экзамен

Оценка

Рис. 15. Сдача экзаменов

После построения концептуальной модели предметной области переходим к проектированию реляционной модели данных. Для каждого класса объектов и для каждой связи между классами сформируем отдельные отношения. Названия отношений будут соответствовать названиям классов и связей. Атрибутами отношений будут свойства классов и связей.

Первый класс объектов – Абитуриент. Дадим такое же название и отношению. Атрибутами отношения станут свойства этого класса:

Абитуриент (ФИО, Паспорт, Дата_рождения, Медаль).

Отношение не находится в 1НФ, так как атрибуты ФИО и Паспорт являются составными. Атрибут ФИО разобьем на три атрибута: Фамилия, Имя, Отчество. Атрибут Паспорт

разобьем на два атрибута: Серия, Номер (информацию о том, кем и когда был выдан паспорт, хранить в базе данных не будем).

Ключом отношения будет совокупность атрибутов {Серия, Номер}, так как они являются уникальными для каждого человека.

16

Абитуриент(Фамилия, Имя, Отчество, Серия, Номер, Дата_рождения, Медаль).

Домены:

dom(Фамилия) = {строка символов длиной 25}; dom(Имя) = {строка символов длиной 25}; dom(Отчество) = {строка символов длиной 30}; dom(Серия) = {строка символов длиной 5}; dom(Номер) = {целое шестизначное число}; dom(Дата_рождения) = {дата};

dom(Медаль) = {множество {золотая, серебряная, нет}}.

Следующий класс – Факультет. Этот класс имеет только один атрибут – Название, поэтому отношение Факультет будет состоять из одного атрибута, который и будет ключом отношения:

Факультет(Название) .

Домены:

dom(Название) = {строка символов длиной 100}.

Для класса Специальность сформируем отношение Специальность с двумя атрибутами:

Специальность(Название, Набор).

Специальности имеют неповторяющиеся названия, следовательно, атрибут Название можно сделать ключом отношения.

Специальность(Название, Набор).

Домены:

dom(Название) = {строка символов длиной 200}; dom(Набор) = {целое трехзначное число}.

Ключом отношения является атрибут Название. Домен этого атрибута представляет собой строку символов длиной 200. Атрибут с таким доменом лучше не использовать в

17

качестве ключа, так как значения его слишком велики. В данной ситуации рациональнее будет ввести дополнительный атрибут Номер_специальности и сделать его ключом отношения (суррогатный ключ):

Специальность(Номер_специальности, Название, Набор).

Домены:

dom(Номер_специальности) = {целое число}; dom(Название) = {строка символов длиной 200}; dom(Набор) = {целое трехзначное число}.

Для класса Экзамен сформируем отношение, состоящее из трех атрибутов:

Экзамен(Предмет, Дата, Форма).

Так как в один и тот же день могут проводиться экзамены по одному предмету, но на разные специальности, то чтобы отличать разные экзамены, включим в схему отношения Экзамен дополнительный атрибут Номер, который и будет ключом отношения (суррогатный ключ):

Экзамен(Номер, Предмет, Дата, Форма).

Домены:

dom(Номер) = {целое трехзначное число}; dom(Предмет) = {строка символов длинной 30}; dom(Дата) = {дата};

dom(Форма) = {множество {устно, письменно}}.

Теперь сформируем отношения для связей между классами.

Отношение, соответствующее связи между классами Абитуриент и Специальность, назовем Заявление. Схема этого отношения будет включать в себя ключ отношения Абитуриент (атрибуты {Серия, Номер}) и ключ отношения

18