- •Содержание
- •Введение
- •Техническое задание
- •1.4. Технические требования к программе или программному изделию
- •3. Выбор языка и среды разработки.
- •3.1. Выбор компонентной базы для доступа к субд FireBird 2.1
- •4. Структура базы данных
- •4.1. Таблица персональных данных пользователя
- •4.2. Таблица параметров авторизации пользователя на почтовом сервере
- •5. Архитектура программного обеспечения
- •6. Структура программного обеспечения
- •6.1. Подсистема администрирования
- •6.2. Подсистема просмотра данных
- •6.3. Подсистема редактирования данных
- •6.4. Подсистема работы с сообщениями
- •7. Описание интерфейса программного обеспечения
- •7.1. Интерфейс – «Галочки»
- •8. Результаты тестирования
- •9. Контрольный пример работы программного обеспечения
- •10. Безопасность и экологичность проектных решений
- •10.1. Цель и решаемые задачи
- •10.2. Опасные и вредные факторы при работе с пэвм
- •10.3. Характеристика объекта исследования
- •10.4. Мероприятия по безопасности труда и сохранению работоспособности
- •10.4.3 Создание рационального освещения
- •10.4.4 Защита от шума
- •10.4.5 Обеспечение режимов труда и отдыха
- •10.4.6 Обеспечение электробезопасности
- •10.4.7 Защита от статического электричества
- •10.4.8 Обеспечение допустимых уровней электромагнитных полей
- •10.4.9 Обеспечение пожарной безопасности
- •10.4.10. Мероприятия и средства по защите окружающей среды
- •10.5. Расчеты.
- •11. Организационно-экономическая часть
- •11.1 Технико-экономическое обоснование объекта проектирования.
- •Результаты
- •11.1.2 Состав конструкторской группы и их должностные оклады.
- •11.1.3 Экономическая часть.
- •Затраты на страховые взносы.
- •11.1.3. Вывод.
- •12. Заключение
- •13. Список литературы
- •Приложение 1. Листинг
- •Приложение 2. Руководство пользователя.
7.1. Интерфейс – «Галочки»
Для корректной работы Галочек на формах регистрации и создания сообщения в базе данных были реализованы представления. Представление (англ.View) — виртуальная (логическая) таблица, представляющая собой поименованный запрос (алиас к запросу), который будет подставлен как подзапрос при использовании представления. Типичным способом создания представлений дляСУБД, поддерживающих язык запросовSQL, является связывание представления с определённым SQL-запросом. Соответственно, содержимое представления — это результат выполнения этого запроса, а возможности построения представления ограничиваются только степенью сложности диалекта SQL, поддерживаемого конкретной СУБД.
Представления используются в запросах к БД тем же образом, как и обычные таблицы. В случае SQL-СУБД имя представления может находиться в SQL-запросе на месте имени таблицы (в предложении FROM). Запрос из представления обрабатывается СУБД точно так же, как запрос, в котором на месте имени представления находится подзапрос, определяющий это представление. При этом СУБД с развитыми возможностями оптимизации запросов перед выполнением запроса из представления могут проводить совместную оптимизацию запроса верхнего уровня и запроса, определяющего представление, с целью минимизации затрат на выборку данных.
Использование представлений не даёт каких-то совершенно новых возможностей в работе с БД, но может быть очень удобно:
Представления скрывают от прикладной программы сложность запросов и саму структуру таблиц БД. Когда прикладной программе требуется таблица с определённым набором данных, она делает простейший запрос из подготовленного представления. При этом даже если для получения этих данных требуется чрезвычайно сложный запрос, сама программа этого запроса не содержит.
Использование представлений позволяет отделить прикладную схему представления данных от схемы хранения. С точки зрения прикладной программы структура данных соответствует тем представлениям, из которых программа эти данные извлекает. В действительности данные могут храниться совершенно иным образом, достаточно лишь создать представления, отвечающие потребностям программы. Разделение позволяет независимо модифицировать прикладную программу и схему хранения данных: как при изменении структуры физических таблиц, так и при изменении программы достаточно изменить представления соответствующим образом. Изменение программы не затрагивает физические таблицы, а изменение физической структуры таблиц не требует корректировки программы.
С помощью представлений обеспечивается ещё один уровень защиты данных. Пользователю могут предоставляться права только на представление, благодаря чему он не будет иметь доступа к данным, находящимся в тех же таблицах, но не предназначенных для него.
Поскольку SQL-запрос, выбирающий данные представления, зафиксирован на момент его создания, СУБД получает возможность применить к этому запросу оптимизацию или предварительную компиляцию, что положительно сказывается на скорости обращения к представлению, по сравнению с прямым выполнением того же запроса из прикладной программы.
Первое представление ONE_VIEWотвечает за наличие связки между абитуриентом и выбранными им для поступления факультетами:
CREATE VIEW ONE_VIEW(
ID,
NAME,
CB,
FST_PD_ID)
AS
SELECT
s.id,
s.NAME,
case when pr.id is null then 0 else 1 end as cb,
per.id as pers_id
FROM STU_KL_FACULTY s
left join fst_pers_data per on (1=1)
left join fst_fprof pr on (pr.facult_id = s.id and
pr.fst_pd_id = per.id);
За проставление галочки в данном представлении отвечает параметр CB. По запросу проверяется если в таблице-связке абитуриента с факультетом отсутствует связка, от галочка не ставится, иначе галочка ставится. За создание связки между абитуриентом и факультетами при изменении состояния галочки на форме отвечает триггер базы данныхONE_VIEW_BU0:
AS
begin
if (old.cb != new.cb) then
if (new.cb = 1) then
INSERT INTO FST_FPROF(FST_PD_ID, FACULT_ID)
VALUES (old.fst_pd_id, old.id);
else
DELETE FROM FST_FPROF
WHERE (new.fst_pd_id = fst_fprof.fst_pd_id and
new.id = fst_fprof.facult_id);
end
Данный триггер проверяет, если старое значение параметра (значение галочки) не равно новому, то выполнить следующие действия:
если новое значение равно единице, то создать связь между абитуриентом и факультетом;
иначе удалить связь.
Второе представление TWO_VIEWотвечает за наличие связки между абитуриентом и выбранными им для поступления специальностями:
CREATE VIEW TWO_VIEW(
ID,
NAME,
CB,
PERS_ID)
AS
SELECT
s.id,
s.NAME,
case when pr.id is null then 0 else 1 end as cb,
per.id as pers_id
FROM stu_kl_specialization s
left join fst_pers_data per on (1=1)
left join fst_fprof pr on (pr.spec_id = s.id and
pr.fst_pd_id = per.id);
За проставление галочки в данном представлении отвечает параметр CB. По запросу проверяется, если в таблице-связке абитуриента со специальностью отсутствует связка, то галочка не ставится, иначе галочка ставится. За создание связки между абитуриентом и специальностью при изменении состояния галочки на форме отвечает триггер базы данныхTWO_VIEW_BU0:
AS
begin
if (new.cb != old.cb) then
if (new.cb = 1) then
INSERT INTO FST_FPROF(SPEC_ID, FST_PD_ID)
VALUES (old.id, old.pers_id);
else
DELETE FROM FST_FPROF
WHERE (old.id = fst_fprof.spec_id and old.pers_id =
fst_fprof.fst_pd_id);
end
Данный триггер проверяет, если старое значение параметра (значение галочки) не равно новому, то выполнить следующие действия:
если новое значение равно единице, то создать связь между абитуриентом и специальностью;
иначе удалить связь.
Третье представление MES_VIEWотвечает за наличие связки между абитуриентом и отправленным ему сообщением:
CREATE VIEW MES_VIEW(
ID,
THEME,
CB,
PERS_ID)
AS
SELECT
m.id,
m.theme,
case when pr.pers_data_id is null then 0 else 1 end
as cb,
per.id as pers_id
FROM FST_MESSAGE m
left join fst_pers_data per on (1=1)
left join fst_l_persdata_message pr on (pr.message_id =
m.id and pr.pers_data_id = per.id);
За проставление галочки в данном представлении отвечает параметр CB. По запросу проверяется, если в таблице-связке абитуриента с отправленным ему сообщением отсутствует связка, то галочка не ставится, иначе галочка ставится. За создание связки между абитуриентом и сообщением при изменении состояния галочки на форме отвечает триггер базы данныхMES:
AS
begin
if (old.cb != new.cb) then
if (new.cb = 1) then
INSERT INTO FST_L_PERSDATA_MESSAGE(PERS_DATA_ID,
MESSAGE_ID)
VALUES (old.PERS_ID, old.ID);
else
DELETE FROM FST_L_PERSDATA_MESSAGE
WHERE(new.PERS_ID =
fst_l_persdata_message.pers_data_id) AND (new.ID
= FST_L_PERSDATA_MESSAGE.message_id);
end
Данный триггер проверяет, если старое значение параметра (значение галочки) не равно новому, то выполнить следующие действия:
если новое значение равно единице, то создать связь между абитуриентом и сообщением;
иначе удалить связь.