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

Курсовые работы / Разработка приложения на ЯВУ для доступа к базе данных

.pdf
Скачиваний:
68
Добавлен:
28.06.2014
Размер:
1.09 Mб
Скачать

CASE-средство ERWin позволяет эффективно выполнять переход от логической модели к физической, так как обладает широким набором встроенных средств для так называемого «forward engineering». Используем пункт меню «Derive new model», указав в соответствующем меню СУБД SQL Server. Полученный результат:

Все типы данных приведены к соответствующим в MSSQL Server 2008.

Определим правила поддержания ссылочной целостности для связанных таблиц.

Отношение

Покупатель – Покупка

Parent Insert

 

Parent Update

Parent Delete

 

Restrict

 

Cascade

Set Null

 

Сотрудник – Покупка

 

 

 

Parent Insert

 

Parent Update

Parent Delete

 

Restrict

 

Cascade

Restrict

 

Лекарство – Поставка

 

 

 

Parent Insert

 

Parent Update

Parent Delete

 

Restrict

 

Cascade

Restrict

 

Поставщик – Поставка

 

 

 

Parent Insert

 

Parent Update

Parent Delete

 

Restrict

 

Cascade

Restrict

 

Поставка – Покупка

 

 

 

Parent Insert

 

Parent Update

Parent Delete

 

Restrict

 

Cascade

Restrict

 

Склад – Поставщик

 

 

 

Parent Insert

 

Parent Update

Parent Delete

 

Restrict

 

Cascade

Restrict

 

11

Приведем информацию о созданных нами правилах валидации данных

и о таблице в целом, перед тем, как приступить к автоматической генерации

кода:

Table

Name

Customer

Employee

Medicine

Purchase

Supplier

Supply

Warehouse

Column(s) of "Customer" Table

Name

 

Datatype

Null Option

Comment

Customer_ID

 

int

NOT NULL

 

FIO

 

varchar(255)

NOT NULL

ФИО покупателя

ContactPhone

 

varchar(13)

NOT NULL

Контактный

 

 

 

 

телефон

Validation(s) of "ContactPhone" Column

Constraint Name

Rule

 

ValidPhone

@phone LIKE '[0-9][0-9][0-9]-

 

 

[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]'

 

Column(s) of "Employee" Table

Name

 

Datatype

Null Option

Comment

Employee_ID

 

integer

NOT NULL

 

 

FIO

 

varchar(255)

NOT NULL

ФИО работника

Salary

 

money

NOT NULL

Зарплата

DateOfDismissal

 

datetime

NULL

Дата увольнения

DateOfAcceptance

 

datetime

NOT NULL

Дата

приема на

 

 

 

 

работу

 

PassportNumber

 

varchar(10)

NOT NULL

Номер паспорта

EmploymentHistoryN

 

varchar(255)

NOT NULL

Номер

трудовой

umber

 

 

 

книжки

 

Validation(s) of "Salary" Column

Constraint Name

Rule

 

ValidSalary

@salary>0

 

Validation(s) of "PassportNumber" Column

Constraint Name

Rule

 

ValidPassport

@passport LIKE '[0-9][0-9][0-

 

 

9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

 

Column(s) of "Medicine" Table

Name

 

Datatype

Null Option

Comment

 

Medicine_ID

 

int

NOT NULL

 

 

Dose

 

integer

NOT NULL

Дозировка

 

WayOfUse

 

varchar(255)

NOT NULL

Способ применения

 

Name

 

varchar(255)

NOT NULL

Наименование

 

 

 

 

 

лекарства

 

Validation(s) of "Dose" Column

Constraint Name

Rule

 

ValidDose

@col BETWEEN 0 AND 1000

 

Column(s) of "Purchase" Table

Name

 

Datatype

Null Option

Comment

12

Column(s) of "Purchase" Table

Name

 

Datatype

Null Option

Comment

Purchase_ID

 

int

NOT NULL

 

Employee_ID

 

int

NOT NULL

 

MedicineAmount

 

integer

NOT NULL

Количество

 

 

 

 

лекарства

Customer_ID

 

int

NULL

 

Medicine_ID

 

int

NOT NULL

 

Supplier_ID

 

int

NOT NULL

 

Validation(s) of "MedicineAmount" Column

Constraint Name

Rule

 

Positive

@value > 0

 

Column(s) of "Supplier" Table

Name

 

Datatype

Null Option

Comment

Supplier_ID

 

int

NOT NULL

 

 

OrganiztionName

 

varchar(255)

NOT NULL

Название

 

 

 

 

организации

 

ContactPhone

 

varchar(13)

NOT NULL

Контактный

 

 

 

 

телефон

 

DateOfConclusion

 

datetime

NOT NULL

Дата

подписания

 

 

 

 

договора

 

DateOfTermination

 

datetime

NULL

Дата

расторжения

 

 

 

 

договора

 

Warehouse_ID

 

int

NOT NULL

 

 

Validation(s) of "ContactPhone" Column

Constraint Name

Rule

 

ValidPhone

@phone LIKE '[0-9][0-9][0-9]-

 

 

[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]'

 

Column(s) of "Supply" Table

Name

 

Datatype

Null Option

Comment

Supplier_ID

 

int

NOT NULL

 

Medicine_ID

 

int

NOT NULL

 

Price

 

money

NOT NULL

Цена лекарства

Validation(s) of "Price" Column

Constraint Name

Rule

 

Positive

@value > 0

 

Column(s) of "Warehouse" Table

Name

 

Datatype

Null Option

Comment

 

Warehouse_ID

 

int

NOT NULL

 

 

Address

 

varchar(255)

NOT NULL

Адрес склада

ContactPhone

 

varchar(13)

NOT NULL

Контактный

 

 

 

 

телефон

 

DateOfOpening

 

datetime

NOT NULL

Дата открытия

DateOfClosing

 

datetime

NULL

Дата

закрытия

 

 

 

 

склада

 

Validation(s) of "ContactPhone" Column

Constraint Name

Rule

 

ValidPhone

@phone LIKE '[0-9][0-9][0-9]-

 

 

[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]'

 

Мы готовы сгенерировать код для автоматического создания базы данных при помощи встроенных средств программы ERWin – финального

этапа проектирования БД. Сделаем это:

13

Наблюдаем результат выполненной генерации БД. Закончив работу над проектированием и созданием БД, мы готовы приступить к ее заполнению.

Для этих целей используем встроенные средства программного продукта

SQL Server Management Studio:

14

Разработка программного продукта

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

Описание используемых технологий

В качестве ЯВУ для реализации продукта был выбран язык программирования C#, активно использовалась технология ADO .NET, при выборе СУБД, как уже было отмечено выше, я остановился на СУБД

Microsoft SQL Server 2008.

Дадим краткий обзор каждой из использованных технологий.

СУБД MSSQL Server 2008

 

 

Microsoft SQL

Server — система

управления реляционными базами

данных (СУБД),

разработанная

корпорацией Microsoft.

Основной

используемый язык

запросов —Transact-SQL, создан совместно

Microsoft

и Sybase. Язык T-SQL является реализацией SQL-92 (стандарт ISO для языка

15

SQL) с множественными расширениями. T-SQL позволяет использовать дополнительный синтаксис для хранимых процедур и обеспечивает поддержку транзакций (взаимодействие базы данных с управляющим приложением).

В SQL Server 2005 встроена поддержка .NET Framework. Благодаря этому хранимые процедуры БД могут быть написаны на любом языке платформы .NET, используя полный набор библиотек, доступных для .NET Framework, включая Common Type System (система обращения с типами данных в Microsoft .NET Framework). Однако, в отличие от других процессов,

.NET Framework, будучи базисной системой для SQL Server 2005, выделяет дополнительную память и выстраивает средства управления SQL Server

вместо того, чтобы использовать встроенные средства Windows. Это повышает производительность в сравнении с общими алгоритмами Windows,

так как алгоритмы распределения ресурсов специально настроены для использования в структурах SQL Server.

Язык программирования C#

C# (произносится си шарп) — объектно-ориентированный язык

программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework. Впоследствии для языка были определены стандарты ISO и ECMA.

C# относится к семье языков с C-подобным синтаксисом, из них его

синтаксис наиболее близок к C++ и Java. Язык имеет статическую

типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе

операторов

явного и неявного приведения

типа), делегаты,

атрибуты, события, свойства, обобщѐнные типы

и

методы, итераторы,

анонимные

 

 

функции с

поддержкой замыканий, LINQ, исключения, комментарии в формате XML. 16

Переняв многое от

своих

предшественников —

языков

C++,

Java, Delphi, Модула и

Smalltalk —

С#, опираясь на

практику

их

использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# не поддерживает множественное наследование классов (в отличие от C++).

ADO .NET

ADO .NET (ActiveX Data Objects .NET) является набором классов,

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

частности, в распределенной среде (клиент-серверное приложение) на стороне сервера.

ADO .NET широко используется совместно с технологией web-

программирования с использованием объектов ASP .NET для доступа к расположенным на сервере базам данных со стороны клиента.

Решение даже самой простой задачи, связанной с данными,

предполагает использование множества разнообразных объектов – представителей классов ADO .NET, которые находятся между собой в достаточно сложных взаимоотношениях.

Описание процесса реализации

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

Встроенные средства среды разработки MS Visual Studio 2010 позволили крайне эффективно и быстро выполнить эту задачу.

Достаточно выделить на полоске меню пункт «Данные», затем подпункт «Добавить новый источник данных», после этого указать все

17

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

Затем средой создается строка подключения (изменить которую можно в параметрах проекта), сгенерирован объект aptekaDataSet для представления данных в оперативной памяти и набор адаптеров для таблиц базы данных:

После этого я приступил к реализации самой первой функции приложения – просмотра и редактирования таблиц в приложении. Для этого понадобилось отредактировать автоматически сгенерированные адаптеры для таблиц, а именно создать полный набор необходимых команд. Добавив в каждом адаптере UpdateCommand, InsertCommand и DeleteCommand к

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

Приведем скриншот окна и опишем процесс взаимодействия пользователя с ним:

18

При помощи выпадающего списка пользователь выбирает таблицу, с

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

Компонент для отображения данных на экране является активным, т.е.

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

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

private void TableChoice_SelectedIndexChanged(object sender, EventArgs e) { try {

switch (TableChoice.SelectedIndex) { case 0:

medicineAdapter.Fill(aptekaDataSet.Medicine); TableView.DataSource = aptekaDataSet.Medicine;

break; case 1:

customerAdapter.Fill(aptekaDataSet.Customer); TableView.DataSource = aptekaDataSet.Customer;

break; case 2:

purchaseAdapter.Fill(aptekaDataSet.Purchase);

19

TableView.DataSource = aptekaDataSet.Purchase;

break; case 3:

supplyAdapter.Fill(aptekaDataSet.Supply); TableView.DataSource = aptekaDataSet.Supply;

break; case 4:

supplierAdapter.Fill(aptekaDataSet.Supplier); TableView.DataSource = aptekaDataSet.Supplier; break;

case 5: employeeAdapter.Fill(aptekaDataSet.Employee); TableView.DataSource = aptekaDataSet.Employee; break;

case 6: warehouseAdapter.Fill(aptekaDataSet.Warehouse); TableView.DataSource = aptekaDataSet.Warehouse; break;

}

}

catch (SqlException s) { MessageBox.Show(s.Message); }

}

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

В случае некорректной работы одного или более адаптеров возбуждается исключение типа SqlException, которое успешно отлавливается последующей инструкцией catch.

После того, как я закончил реализацию этой части курсового, я

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

Приведем его скриншот:

20