
Структура бд
Структуру базы данных можно представить диаграммой «сущность-связь»
Свойства, которыми обладают сущности:
Персонал: отделение, ФИО, адрес, дата рождения, телефон, должность, оклад.
Пациент: отделение, диагноз, ФИО, адрес, дата рождения, дата прибытия, дата выписывания.
Диагноз: имя, отделение, врач, описание.
Отдел: имя.
Лекарства: имя, количество в день, раз в день, цена, описание.
Физическая модель базы данных:
Описание полей таблиц базы данных
Типы данных для таблицы Personnel:
Name: строка – имя работника
Address: строка – адрес проживания
Birthday: дата – дата рождения
Phone: целое – номер телефона
Post: строка – должность
Salary: decimal – оклад
Id_depart: целое – идентификатор отделения
Типы данных для таблицы Pacienty:
Id_depart: целое – идентификатор отделения
Id_diagnos: целое – идентификатор диагноза
Name: строка – имя
Address: строка – адрес проживания
Birthday: дата – дата рождения пациента
Data_arrival: дата – дата прибытия пациента в больницу
Data_depart: дата – дата выписки из больницы
Типы данных для таблицы Diagnosis:
Id_depart: целое – идентификатор отделения
Id_doctor: целое – идентификатор врача
Name: строка – название диагноза
Типы данных для таблицы Medications:
Name: строка – наименование лекарства
Numb_per_day:целое – количество лекарства в день
Duration:целое – количество приёмов в день
Price: decimal – стоимость
Типы данных для таблицы Departament:
Id: целое – идентификатор отделения
Name: строка – имя отделения
Запросы
Рассмотрим по одному примеру для каждого запроса: запросы на выборку, удаления, добавления и изменения записей таблиц, остальные запросы представлены в тексте программы (см. приложение)
Примеры запросов для сущности Departament.
Выборка данных
public void Fill()
{
using (var session = parent.MySession.OpenSession())
{
try
{
DepartTable.Rows.Clear();
var deps = session.CreateCriteria(typeof (Departament)).List<Departament>();
foreach (var d in deps)
DepartTable.Rows.Add(d.Name);
}
catch (Exception exception)
{
MessageBox.Show(exception.Message, "Ошибка подключения к БД");
}
finally
{
session.Close();
}
}
}
Функция Fill заполняет таблицу DepartTable в приложении данными из таблицы Departament, находящейся в базе данных.
Добавление записи:
void Insert(string sName)
{
using (var session = parent.MySession.OpenSession())
using (var transaction = session.BeginTransaction())
{
try
{
session.Save(new Departament {Name = sName});
transaction.Commit();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message, "Ошибка подключения к БД");
transaction.Rollback();
}
finally
{
session.Close();
}
}
}
Функция Insert вставляет новую запись в таблицу Departament. Входные данные – имя отделения.
Обновление:
void Update(string sName)
{
using (var session = parent.MySession.OpenSession())
using (var transaction = session.BeginTransaction())
{
try
{
var newdep = GetDepByName(session, DepartTable.CurrentRow.Cells[0].Value.ToString());
newdep.Name = sName;
session.Update(newdep);
transaction.Commit();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message, "Ошибка подключения к БД");
transaction.Rollback();
}
}
}
Функция Update обновляет выделенную запись таблицы DepartTable. Входные данные – имя отделения.
Удаление записи:
public void Delete()
{
using (var session = parent.MySession.OpenSession())
using (var transaction = session.BeginTransaction())
{
try
{
var olddep = GetDepByName(session, DepartTable.CurrentRow.Cells[0].Value.ToString());
session.Delete(olddep);
transaction.Commit();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message, "Ошибка подключения к БД");
transaction.Rollback();
}
Функция Delete удаляет выделенную запись таблицы DepartTable из таблицы Departament.