В данной главе проведем анализ и выбор СУБД. База данных АСУ «Оборудование компьютерных классов учебного заведения» содержит 10 таблиц, которые будут спроектированы в разделе Физическое проектирование БД. Также будут показаны скриншоты готовых таблиц. В конце главы буду написаны 3 триггера и показана их реализация.
3.1. Анализ и выбор СУБД
Для проектирования базы данных была выбрана СУБД PostgreSQL исходя из следующих особенностей:
Позволяет работать с удаленной базой данных, что дает возможность осуществлять доступ к одной базе с разных компьютеров в учебном заведении;
Поддерживает одновременную работу сразу нескольких пользователей с базой данных;
Предоставляет высокий уровень защиты данных;
Обладает невысокими требованиями к аппаратной части серверов;
Является бесплатной СУБД на рынке;
Требует минимальной начальной настройки и дальнейшего администрирования;
Является развивающейся СУБД (частые релизы, усовершенствование базы, исправление ошибок).
3.2. Физическое проектирование БД
На основе реляционной модели произведена программная реализация. База данных содержит 10 таблиц:
Аудитория
Оснащение аудитории
Рабочее место
Оснащение рабочего места
Оборудование
Характеристики
Комплектующие
Тип оборудования
Тип комплектующих
Авторизация
Таблица Аудитория (room)
Таблица Рабочее место (workPlace)
Таблица Оснащение аудитории (osnRoom)
Таблица Тип оборудования (TypeOfObor)
Таблица Характеристики (character)
Таблица Тип комплектующих (TypeOfCompl)
Таблица Оборудование (Obor)
Таблица Комплектующие (Complect)
Таблица Оснащение рабочего места (osnWorkplace)
Таблица Авторизация (autorisation)
3.3. Реализация ограничений
С базой данных могут работать 2 типа пользователей: администратор и обычный пользователь.
Администраторы организуют работу всей базы данных. Они могут изменять структуры таблиц и данные в них.
Пользователь может только просматривать необходимую ему информацию.
Триггер, предусматривающий ограничение нумерации аудиторий.
CREATE OR REPLACE FUNCTION roomz()
RETURNS TRIGGER
AS $$
BEGIN
if new.num > 500 Then
RAISE EXCEPTION 'error';
else
RETURN NEW;
END if;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER On_Room_Insert
AFTER INSERT ON room
FOR EACH ROW
EXECUTE PROCEDURE roomz();
Триггер, предусматривающий ограничение нумерации серийного номера
CREATE OR REPLACE FUNCTION obordah()
RETURNS TRIGGER
AS $$
BEGIN
if new.SerNum > 25000000 Then
RAISE EXCEPTION 'error';
else
RETURN NEW;
END if;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER On_Obor_Insert
AFTER INSERT ON Obor
FOR EACH ROW
EXECUTE PROCEDURE obordah();
Триггер предусматривающий автоматическое заполнение оборудования аудиторий
CREATE OR REPLACE FUNCTION working()
RETURNS TRIGGER
AS $$
BEGIN
insert into osnRoom(osnRoomID,roomID, workID) VALUES (nextVal('idOsnRom'), new.roomID, new.workID);
RETURN new;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER On_work_Insert
AFTER INSERT ON WorkPlace
FOR EACH ROW
EXECUTE PROCEDURE working();
3.4. Безопасность и контроль
Средства безопасности в postgresql можно разделить на две категории:
Безопасность доступа.
Безопасность данных.
Безопасность доступа.
В postgresql имеется целый ряд механизмов для идентификации и верификации пользователей. Самый простой из них – обязательное указание пользователем своих имени и пароля при каждом подключении. Эта верификация должна выполняться независимо от того, какое внешнее интерфейсное средство используется для доступа к базе данных. Идея состоит в том, чтобы допустить пользователей к работе со средствами базы данных только после того, как он установит санкционированное соединение с ней. Имя пользователя и пароль сверяются с указанными в таблице SYS.USERS, куда пароль заносится в зашифрованной форме.
В большинстве приложений баз данных существуют разные категории пользователей, которые работают с разными частями системы и имеют разные права на просмотр и изменение данных. В простом случае может быть всего два класса пользователей: те, кто вводит данные, и менеджеры, выполняющие запросы к данным. Но в большинстве случаев существует несколько категорий пользователей, и функциональные возможности, к которым они должны иметь доступ, пересекаются. В таких ситуациях можно избежать дублирования работы, создав одно приложение с меню или панелью инструментов, вид и содержимое которой зависят от задач конкретного пользователя.
Безопасность данных.
Если подключаться к базе данных могут лишь уполномоченные пользователи, и они могут запускать только те модули, на выполнение которых им явно предоставлено право, то нужно подумать о следующем уровне безопасности – ограничении доступа этих пользователей к данным.
Для добавления пользователя в базу данных администратор базы данных создает учетную запись с именем пользователя и паролем. Каждому пользователю присваивается профиль — характеристика предельных объемов системных ресурсов, которые могут быть выделены данному пользователю.
Выводы
В данной главе произведено физическое проектирование базы данных АСУ “Оборудование компьютерных классов учебного заведения”. Создано три триггера. Определены ограничения. Произведен анализ безопасности в СУБД PostgreSQL.
Курсовая работа посвящена разработке базы данных АСУ “Оборудование компьютерных классов учебного заведения”.
Решены следующие задачи:
Произведен системный анализ предметной области;
Построена инфологическая модель;
Построена реляционная модель;
Реализация базы данных в СУБД PostgrSQL.
Разработана реляционная база данных, содержащая элементы автоматизации и обработки данных. В ее составе: 10 таблиц, 3 триггера и 3 функции, необходимые для работы триггеров.
Воронова Л.И. «Лабораторный практикум по дисциплине “базы данных”» - Москва 2010г.
ГОСТ 2.105-95 Единая система конструкторской документации. Общие требования к текстовым документам
Гуриков С.Р. Введение в программирование на языке Visual C#: учебное пособие / С.Р. Гуриков. – М.: ФОРУМ: ИНФРА-М, 2013. – 448 с. – (Высшее образование. Бакалавриат).
Карпова Т.С. «Базы Данных» - Питер, 2002г. – Режим доступа:http://biblioteka.cc/index.php?newsid=74396
Компактная встраиваемая реляционная база данных SQLite: sqlite.org
Крёнке Д. «Теория и практика построения баз данных» - Питер, 2003г.-800с.
Левченко Ольга: [Электронный ресурс] Статья «Microsoft SQL Server» - режим доступа:http://bourabai.kz/dbt/servers/MicrosoftSQLServer.htm
Работа с MS Word в C# [Электронный ресурс]. – Режим доступа:http://wladm.narod.ru/C_Sharp/comword.html.
Свободная реляционная СУБД MySQL: mysql.com
Система управления реляционными базами данных разработанная корпорацией Microsoft: https://www.microsoft.com/en-us/server-cloud/products/sql-server/#fbid=JQk2DSKWQLz
СУБД PostgreSQL
Microsoft Access – реляционная СУБД: https://products.office.com/ru-RU/access
Программный код
#TABLES
create table room(
roomID int primary key,
num int NOT NULL,
otvetst varchar(30) NOT NULL);
create table workPlace(
workID int primary key,
name varchar(20) NOT NULL,
roomID int references room(roomID));
create table osnRoom(
osnRoomID int primary key,
roomID int references room(roomID),
workID int references workPlace(workID));
create table TypeOfObor(
TypeID int primary key,
Name varchar(30) NOT NULL);
create table character(
charID int primary key,
TypeID int references TypeOfObor(TypeID),
model varchar(20) NOT NULL,
about varchar(100) NOT NULL);
create table typeOfCompl(
TypeID int primary key,
Name varchar(20) NOT NULL,
Compat varchar(20) NOT NULL);
create table Obor(
OborID int primary key,
invertNum int NOT NULL,
SerNum int not null,
Sostoyan varchar(30) not null,
TypeID int references TypeOfObor(TypeID),
charID int references character(charID));
create table Complect(
ComplID int primary key,
Model varchar(20) NOT NULL,
TypeID int references typeOfCompl(TypeID),
OborID int references Obor(OborID));
create table osnWorkPlace(
osnWorkID int primary key,
WorkId int references workPlace(WorkID),
OborID int references Obor(OborID));
create table autorisation(
username varchar(30) NOT NULL,
hesh text NOT NULL);
#SEQUNSES
create sequence idRoom start 1;
create sequence idObor start 1;
create sequence idCompl start 1;
create sequence idTypeCompl start 1;
create sequence idTypeObor start 1;
create sequence idChar start 1;
create sequence idWork start 1;
create sequence idOsnRom start 1;
create sequence idOsnWork start 1;
# INSERTING
##Autorisation
insert into autorisation(username, hesh)
values('balashov', md5('pas12Anon33'));
##ROOM
insert into room(roomID,num,otvetst)
values(nextVal('idRoom'), 1, 'Баринов');
insert into room(roomID,num,otvetst)
values(nextVal('idRoom'), 2, 'Вострикова');
insert into room(roomID,num,otvetst)
values(nextVal('idRoom'), 3, 'Алибабаев');
##WorkPlace
insert into workPlace(workID, name,roomID)
values(nextVal('idWork'), 'Компьютер', '1');
insert into workPlace(workID, name,roomID)
values(nextVal('idWork'), 'Пректор', '1');
insert into workPlace(workID, name,roomID)
values(nextVal('idWork'), 'Компьютер', '2');
insert into workPlace(workID, name,roomID)
values(nextVal('idWork'), 'Сервер', '2');
insert into workPlace(workID, name,roomID)
values(nextVal('idWork'), 'Проектор', '3');
insert into workPlace(workID, name,roomID)
values(nextVal('idWork'), 'Ноутбук', '3');
##OsnRoom
insert into osnRoom(osnRoomID,roomID, workID)
values(nextVal('idOsnRom'), '1', '7');
insert into osnRoom(osnRoomID,roomID, workID)
values(nextVal('idOsnRom'), '1', '8');
insert into osnRoom(osnRoomID,roomID, workID)
values(nextVal('idOsnRom'), '2', '9');
insert into osnRoom(osnRoomID,roomID, workID)
values(nextVal('idOsnRom'), '2', '10');
insert into osnRoom(osnRoomID,roomID, workID)
values(nextVal('idOsnRom'), '3', '11');
insert into osnRoom(osnRoomID,roomID, workID)