1
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ
БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ»
В.Г. Рудалев, Ю.А.Крыжановская, Ю.С.Левицкая
РАЗРАБОТКА ПРИЛОЖЕНИЙ
БАЗ ДАННЫХ. ЧАСТЬ 3
Учебное пособие для вузов
Воронеж
Издательский дом ВГУ
2017
Стр.1
3
СОДЕРЖАНИЕ
1. ПРОЕКТИРОВАНИЕ ПРИЛОЖЕНИЯ.....................................................................4
1.1. Общие принципы.............................................................................................................................................4
1.2. Пример предметной области .........................................................................................................................6
1.3. Серверная часть приложения......................................................................................................................10
2. СОЗДАНИЕ БИЗНЕС-СЛОЯ..................................................................................12
2.1. Базовые классы...............................................................................................................................................12
2.2. Логика доступа к данным.............................................................................................................................18
3. ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС .................................................................22
3.1. Выборка данных.............................................................................................................................................22
3.2. Редактирование через вызов хранимых процедур..................................................................................25
3.3. Основные операции работы с данными.....................................................................................................29
4. НАСТРОЙКА БЕЗОПАСНОСТИ............................................................................37
5. УПРАВЛЕНИЕ ТРАНЗАКЦИЯМИ..........................................................................41
5.1. Общие принципы...........................................................................................................................................41
5.2. Создание бизнес-слоя.....................................................................................................................................44
5.3. Пользовательский интерфейс......................................................................................................................48
6. ПРИМЕРЫ ПРОГРАММИРОВАНИЯ....................................................................53
6.1. Отображение рекурсивных структур.........................................................................................................53
6.2. Связь многие-ко-многим..............................................................................................................................56
6.3. Выполнение запросов к нескольким сущностям.....................................................................................60
ЗАДАНИЯ.....................................................................................................................62
ЛИТЕРАТУРА..............................................................................................................64
Стр.3
6
автоматически. Подход ориентирован на программистов, хорошо
владеющих языком C#.
Вариант CFED, напротив, требует наличия базы данных, а
генерироваться автоматически будут необходимые классы. Подход
ориентирован на традиционных разработчиков БД, привыкших к языку
SQL.
Хотя вариант CF Microsoft считает приоритетным, но автор с этой
точкой зрения не согласен. Если человек не знает SQL и не умеет
проектировать БД, то можно ли ему поручать писать приложения для БД?
Вопрос риторический и в ответе не нуждается.
Однако компромисс в этом споре достигается легко. Когда классы
построены (любым способом — CF или CFED), дальнейший ход разработки
для двух подходов одинаков, чем автор сейчас и воспользуется.
Внимание! Перед дальнейшим изучением материала настоятельно
рекомендуется разобрать примеры «нулевого» уровня сложности,
приведенные на сайте [3].
1.2. Пример предметной области
В качестве учебного примера предметной области еще раз
рассмотрим распределение тем курсовых работ между студентами,
описанное в предыдущей части пособия [1].
В предметной области можно выделить, как минимум, три сущности:
преподаватель, студент, тема курсовой работы.
Перечислим основные бизнес-правила. Преподаватель может
предлагать множество тем на различных курсах, но тема может
принадлежать только одному преподавателю. Студент может захватывать
Стр.6
7
только по одной теме на каждом курсе, и одна тема может быть назначена
только одному студенту. Захват темы студентом на другом курсе не
допускаются. При захвате тема помечается как занятая. Каждый студент,
преподаватель и тема имеют уникальный суррогатный первичный ключ.
В соответствии с указанными бизнес-правилами в редакторе моделей
ERWin создадим логическую модель. Далее, как обычно, переводим ее к
физической модели (Derive new Model) для MS SQL Server и генерируем
скрипт (Forward Engineering) для создания БД. Проверяем правильность
ограничений IDENTITY, PRIMARY KEY, CHECK, NOT NULL, FOREIGN
KEY.
Далее создадим на сервере базу данных Themes и выполним для нее
разработанные ранее скрипты. Перед выполнением добавьте в начало
скрипта строчку use Themes;
use Themes;
CREATE TABLE KursWork(
WorkID int IDENTITY(1,1) NOT NULL,
WorkName varchar(Max) NOT NULL,
PrepID int NOT NULL,
StudID int NULL,
Kurs int NOT NULL,
CONSTRAINT PK_KursWork PRIMARY KEY (WorkID)
)
CREATE TABLE Students(
StudID int IDENTITY(1,1) NOT NULL,
FIO varchar(Max) NOT NULL,
kurs int NOT NULL,
CONSTRAINT PK_Students PRIMARY KEY (StudID)
Стр.7
8
)
CREATE TABLE Teachers(
PrepID int IDENTITY(1,1) NOT NULL,
PrepFIO varchar(Max) NOT NULL,
Post varchar(10) NOT NULL,
CONSTRAINT PK_Teachers PRIMARY KEY (PrepID)
)
ALTER TABLE KursWork ADD CONSTRAINT FK_KursWork_Students
FOREIGN KEY(StudID) REFERENCES Students (StudID)
ALTER TABLE KursWork ADD CONSTRAINT FK_KursWork_Teachers
FOREIGN KEY(PrepID) REFERENCES Teachers (PrepID)
Для создания базы данных запустим MS SQL Server Management
Studio и подключимся к серверу (рис.1). В поле «Server name» точка
означает данный компьютер, sqlexpess – имя экземпляра SQL сервера [1].
Рис. 1
Затем в окне Object Explorer выберите узел Databases, нажмите «New
Database» и введите имя новой БД Themes (рис.2).
Стр.8
9
Рис. 2
После этого нажмите кнопку New Query, загрузите в окно
заготовленный скрипт и выполните его.
Проверьте правильность создания, определив в узле Themes
диаграмму базы данных (рис.3).
Разумеется, пример предназначен только для учебных целей и
поэтому предельно упрощен. В него не включены многие особенности
реальной предметной области, например учебный год темы и студента,
необходимость ведения архивов курсовых работ с оценкой, более
подробная информация о преподавателе и студенте и т.д. Чтобы привести
пример в соответствие с реальностью, нужна серьезная переработка.
Стр.9
10
KursWork
WorkID
WorkName
PrepID
StudID
Kurs
Students
StudID
FIO
kurs
Teachers
PrepID
PrepFIO
Post
Рис.3
1.3. Серверная часть приложения
Напишем следующие объекты в БД Themes, составляющие серверную
часть приложения. Все нижеследующие скрипты удобнее выполнить в окне
запроса New Query для БД Themes.
Представления:
Показ студентов, не записавшихся на курсовые работы.
CREATE VIEW StudFree
AS
SELECT
StudID, FIO, kurs
FROM Students AS s
WHERE (StudID NOT IN (SELECT StudID FROM KursWork
WHERE (StudID IS NOT NULL)))
Показ свободных тем, для которых в таблице KursWork столбец StudID
имеет значение NULL.
Стр.10