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

Лабораторные работы / Методические указания к ЛР по ОАИП (09.02.07)

.pdf
Скачиваний:
60
Добавлен:
08.05.2022
Размер:
3.68 Mб
Скачать

ER-диаграммы удобны тем, что процесс выделения сущностей,

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

являются сами ER-диаграммы.

Ранее, во втором параграфе, мы выделили все требования к разрабатываемой информационной системе.

Выделим все существительные в этих предложениях - это будут потенциальные кандидаты на сущности и атрибуты:

Пользователь - явный кандидат на сущность.

Студент - явный кандидат на сущность.

Преподаватель - явный кандидат на сущность.

Дипломная работа - явный кандидат на сущность.

Сразу возникает очевидная связь между сущностями – «Студент является Пользователем», «Преподаватель является Пользователем», «Преподаватель является дипломным руководителем студентом» и «Преподаватель предлагает темы дипломных работ». Первый вариант диаграммы выглядит так:

Рисунок 14.6 – Диаграмма сущностей

Определим набор атрибутов сущностей. Анализируя предметную область, мы выяснили следующее:

Каждый пользователь информационной системы имеет логин,

пароль и роль для авторизации.

201

Каждый студент имеет фамилию, имя, отчество, номер группы,

персональные данные о себе, личную фотографию.

Каждая преподаватель имеет фамилию, имя, отчество, должность,

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

Каждая дипломная работа имеет тему и аннотацию.

Снова выпишем все существительные, которые будут потенциальными атрибутами, и проанализируем их:

Фамилия/имя/отчество – можно объединить в единый атрибут ФИО, который будет являться явной характеристикой студента и преподавателя.

Логин – явная характеристика пользователя.

Пароль – явная характеристика пользователя.

Роль – явная характеристика пользователя.

Авторизация – процесс предоставление определённому лицу или группе лиц прав на использование возможностей системы. Не является характеристикой.

Номер группы – явная характеристика студента.

Персональные данные о себе – явная характеристика студента и преподавателя.

Личная фотография – явная характеристика студента и преподавателя.

Предлагаемые темы дипломных работ – явная характеристика преподавателя.

Тема дипломной работы – явная характеристика дипломной

работы.

Аннотация к дипломной работе – явная характеристика дипломной работы.

Теперь можно внести все это в диаграмму:

202

Рисунок 14.7 - ER-диаграмма

Данный пример ER-диаграммы является примером концептуальной диаграммы. Это означает, что диаграмма не учитывает особенности конкретной СУБД.

Построение физической модели базы данных

Для создания базы данных, которая будет взаимодействовать с нашим приложением, используем подход Model First. Суть данного подхода состоит в том, что сначала делается модель, а потом по ней создается база данных.

Итак, создадим новый проект по типу Приложение Windows Forms. И

затем добавим в проект новый элемент. Нажмем правой кнопкой мыши на проект в окне Обозреватель решений и в появившемся списке выберем

Добавить → Создать элемент. И затем в окне добавления нового элемента выберем Модель ADO.NET EDM:

203

Рисунок 14.8 – Добавление нового элемента Модель ADO.NET EDM

Модель назовем EntityModel. Нажмем Добавить и нам откроется мастер создания модели.

Рисунок 14.9 – Мастер создания моделей

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

Нажмем кнопку Готово, и перед нами откроется пустое окно создания модели.

204

Перетащим на это поле с панели Панель Инструментов в левой части элемент Сущность. Теперь у нас на поле создания модели имеется небольшая схема будущей модели, в которой сейчас по умолчанию указано лишь одно поле - Id. Во-первых, переименуем сущность. По умолчанию она называется

Entity1.

Рисунок 14.10 – Схема модели и панель элементов

Выделим схему и перейдем к окну свойств в правом нижнем углу:

Рисунок 14.11 – Свойства сущности

Здесь изменим значение свойства Имя на User. Это у нас будет имя сущности. И также изменим значение свойства Имя набора сущностей на

Users. Это у нас будет название набора объектов User.

Далее создадим несколько свойств. Сущность у нас будет простая и будет содержать всего два свойства для логина и пароля пользователя. Итак,

выделим схему сущности и нажмем на правую кнопку мыши. В выпадающем списке выберем Добавить новый → Скалярное свойство. После этого будет добавлено новое свойство. Скалярное свойство подразумевают свойства на

205

основе простейших типов int, float, string и т.д. Добавим три свойства –

Login, Password и Role. По умолчанию все добавляемые свойства имеют тип string. Однако мы можем изменить тип в окне свойств.

Таким образом, у нас должна получиться следующая схема сущности:

Рисунок 14.12 – Схема сущности «Пользователь»

Составим соответствующие схемы для остальных трех сущностей:

студента преподавателя и дипломной работы.

Рисунок 14.13 – Схемы сущностей «Преподаватель», «Студент» и «Дипломная работа»

Далее добавим связи между сущностями. Выберем из панели элементов объект «Ассоциация» и выберем в поле две сущности, между которыми будет установлена связь.

206

Рисунок 14.14 – Объект «Ассоциация» для установления связей»

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

Рисунок 14.15 – Свойства связи

Для связи между сущностями User и Student установим вид связи «ноль-

или-один-к-одному», так как необходимо допустить возможность отсутствия

(равенство NULL) привязанной сущности Student при создании User и

наоборот. Для изменения вида связи необходимо изменить свойство

Кратность элемента на 0 (ноль из Student/ User) в обоих случаях.

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

207

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

Рисунок 14.16 – Общий вид модели данных

Теперь по модели мы можем сгенерировать код и базу данных. Вначале сгенерируем код модели. Для этого нажмем на диаграмму модели правой кнопкой мыши и выберем пункт Добавить элемент создания кода:

Далее нам будет предложено выбрать версию EF. Выберем шестую версию:

208

Рисунок 14.17 – Добавление элемента создания кода

После этого в структуре проекта мы можем увидеть узел EntityModel.tt,

который в качестве подузлов будет содержать сгенерированные классы модели в файлах User.cs, Professor.cs, Thesis.cs и Student.cs:

Рисунок 14.18 – Узел с классами модели

Также здесь мы можем найти файл контекста данных

EntityModel.Context.cs, который выглядит в моем случае следующим образом:

 

Листинг 14.1 – Сгенерированный контекст данных

 

 

 

1

using System;

 

2

using System.Data.Entity;

 

3

using System.Data.Entity.Infrastructure;

 

4

public partial class EntityModelContainer : DbContext

 

5

{

 

6

public EntityModelContainer()

 

209

7

: base("name=EntityModelContainer"){}

8

protected override void OnModelCreating(DbModelBuilder

modelBuilder)

 

9

{

10

throw new UnintentionalCodeFirstException();

11

}

12

public virtual DbSet<User> UserSet { get; set; }

13

public virtual DbSet<Student> StudentSet { get; set; }

14

public virtual DbSet<Professor> ProfessorSet { get;

set; }

15

public virtual DbSet<Thesis> ThesisSet { get; set; }

16

}

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

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

Рисунок 14.19 – Мастер создания базы данных

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

210

Соседние файлы в папке Лабораторные работы