- •Создание базы данных ________________________
- •Содержание
- •Глава 1. Основные понятия бд и субд ……………………..…………4
- •Глава 2. Реализация проекта ……………………..…….…..……………21
- •Введение
- •Глава 1.Основные понятия бд и субд
- •1.1 Данные и эвм
- •1.2 Архитектура субд
- •1.3 Модели данных.
- •1.4 Инфологическая модель данных "Сущность-связь"
- •1.4.1 Основные понятия.
- •1.4.2 Характеристика связей и язык моделирования.
- •1.4.3 Ограничения целостности.
- •1.5 Реляционный подход.
- •1.5.1 Реляционная структура данных.
- •1.5.2 Реляционная база данных.
- •1.5.3 Манипулирование реляционными данными.
- •2. Реализация проекта
- •2.1 База данных
- •2.2 Написание сервера наJava
- •2.3 Написание приложения-клиента наActionScript3.0
- •Список Литературы
2.1 База данных
После анализа нескольких систем электронных пропусков была создана база данных с таблицами:
sotr:
Поле |
Описание |
ID |
Идентификатор сотрудника |
First_name |
Имя сотрудника |
Second_name |
Фамилия |
Dad_name |
Отчество |
Position |
Должность |
Phone |
Контактный телефон |
LVL_ID |
Уровень доступа |
room:
Поле |
Описание |
ID |
Идентификатор комнаты |
Name |
Название комнаты |
Description |
Описание комнаты |
Phone_corp |
Внутренний телефон |
tether:
Поле |
Описание |
LVL_ID |
Уровень доступа |
Room_ID |
Идентификатор комнаты |
LVL_name |
Название уровня доступа |
bigbro:
Поле |
Описание |
Sotr_ID |
Идентификатор сотрудника |
Time_in |
Время прихода в комнату |
Time_out |
Время выхода из комнаты |
Room_ID |
Идентификатор комнаты |
room_area:
Поле |
Описание |
ID |
Идентификатор зоны |
Description |
Описание зоны |
Room_ID |
Идентификатор комнаты |
2.2 Написание сервера наJava
Сначала были написаны классы: sort, room, area и т.д. То есть, для каждой таблицы написан класс, объекты которого имеют свойства эквивалентные полям таблиц. Также были написаны методы get/set для каждого свойства, при этом set-методы также изменяют и значение в БД.
Стоит уделить внимание инициализации сервера. Для каждого класса написана функция, которая получает идентификаторы всех записей для своего типа и создает объекты для каждой имеющейся записи в БД. Для наглядности код конструктора класса sotr:
public Sotr (int id)
{
ID = id;
First_name = SecurityApp.dataBase.getSotrFirst_NameByID(id);
Second_name = SecurityApp.dataBase.getSotrSecond_NameByID(id);
Dad_name = SecurityApp.dataBase.getSotrDad_NameByID(id);
Position = SecurityApp.dataBase.getSotrPositionByID(id);
phone = SecurityApp.dataBase.getSotrPhoneByID(id);
LVL_ID = SecurityApp.dataBase.getSotrLVL_IDByID(id);
}
Т.е., на вход подается только идентификатор записи в БД, а сам конструктор уже получает данные из БД через класс DataBase.
Теперь немного о классе DataBase, объекты которого работают непосредственно с БД. В этом классе описана масса методов для работы с БД (например, методы для выборки, изменения записей и т.д.). Т.е., весь класс это набор методов для всех полей в БД и все манипуляции с записями на сервере проходят через этот класс. Каждый из методов заключен в конструкцию исключений, что делает сервер более устойчивым к отказам из-за некорректных данных или недопустимых операций. Пример одного из методов класса, который получает должность сотрудника по идентификатору:
public String getSotrPositionByID(int id)
{
String name ="";
try {
String query = "Select Position FROM sotr WHERE ID = '" + id+"'";
ResultSet rs = stmt.executeQuery(query);
if (rs.next())
{
String dbtime = rs.getString(1);
position = dbtime;
}
return position;
}
catch (SQLException e) {e.printStackTrace();}
return "none";
}
Теперь о главном классе сервера SecurityApp. В нем хранятся массивы объектов зон, сотрудников, комнат и т.д.. Также этот класс принимает входящие подключения от приложения-клиента (интерфейса), создает новые объекты класса «MySec» (который наследует класс «Runnable», что позволяет каждому приложению-клиенту работать в своём потоке), и передает это подключение созданному объекту класса «MySec». В последнем и происходит непосредственный обмен данными и командами между сервером и клиентом.