- •1 Мета та задачі курсового проектування
- •2 Тематика курсових робіт
- •3 Порядок виконання курсової роботи
- •4 Порядок захисту курсової роботи
- •5 Критерії оцінювання курсової роботи
- •6 Структура курсової роботи
- •7 Зміст курсової роботи
- •8 Вимоги що до оформлення курсової роботи
- •Додаток а Орієнтовний перелік тем курсових робіт, в яких треба розробити фрагменти аіс
- •Зразок оформлення пояснювальної записки курсової роботи
- •Додаток в Форма № у 6.01
- •На курсовий проект (роботу) студента
- •(Прізвище, ім’я, по-батькові)
- •4. Зміст розрахунково-пояснювальної записки (перелік підлягаючих розробці питань)______________________________________________________________
- •5. Перелік графічного матеріалу (з точним в казанням обов’язкових креслень)____________________________________________________________
- •Календарний план
- •1 Характеристика предметної області
- •Вхідні дані інформаційної системи:
- •1.3 Вихідні дані інформаційної системи:
- •2 Проектування бази даних
- •2.1 Моделювання бази даних
- •2.2 Зв’язування таблиць
- •2.3 Встановлення умов цілостності даних.Створення тригерів.
- •3 Програмна частина
- •Створення збережених процедур
- •3.2 Розробка клієнтської частини додатку
- •Сервісні функції додатка
- •4 Організація запуску додатка
- •4.1 Інсталяція додатка
- •4.2 Запуск і закриття встановленого додатка
- •Висновки
- •Скрипт – файл створення бази даних та ії об’єктів
- •Програмний код форми модуля даних
- •Список літератури
2.2 Зв’язування таблиць
Для встановлення зв’язків між таблицями та визначення умов цілістності даних використовуються первинні та зовнішні ключі.
У базі даних “ABITYRIENT” були створені первинні ключі в усіх таблицях з ім’ям (PRKEY) для забеспечення унікальності кожного запису в таблиці. Зовнішні ключи явно не створювались, але поля для логічного зв’язку таблиць передбачені, ціліснісь даних контролюється за допомогою тригерів.
Тригер - це окрема програма, асоційована з таблицею або видом, що автоматично виконує дії при додавані, зміни та видаленні рядка в таблиці або виді.
2.3 Встановлення умов цілостності даних.Створення тригерів.
Таблиця FACULT містить довідник факультетів. На факультет може посилатися запис з таблиці SPECIALIT за допомогою зовнішнього ключа LFACULT. Очевидно, що не можна видаляти факультет, поки на нього посилається хоча б одна спеціальність. Для того, щоб проконтролювати видалення запису з таблиці FACULT, створений тригер FACULT_BD_01:
CREATE TRIGGER FACULT_BD_01 FOR FACULT BEFORE DELETE POSITION 1 AS
DECLARE VARIABLE LCNT INTEGER;
BEGIN
SELECT COUNT(S.PRKEY)
FROM SPECIALIT S
WHERE S.LFACULT=OLD.PRKEY
INTO :LCNT;
IF(LCNT>0)THEN EXCEPTION HASLINKS;
DELETE FROM FACULTREGID
WHERE LFACULT=OLD.PRKEY;
END
При наявності посилання з таблиці SPECIALIT на запис таблиці FACULT, що видаляється, буде викликана виняткова ситуація і видалення запису буде заборонено.
Таблиця SPECIALIT містить довідник спеціальностей. На цю таблицю за допомогою зовнішнього ключа посилаються записи таблиці ENTRANT. Тригер SPECIALIT_BD_01 заборонить видалення запису з таблиці SPECIALIT якщо є абітурієнти, що подали заяву на спеціальність, що видаляється.
CREATE TRIGGER SPECIALIT_BD_01 FOR SPECIALIT BEFORE DELETE POSITION 1 AS
DECLARE VARIABLE LCNT INTEGER;
BEGIN
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LSPECIALIT=OLD.PRKEY
INTO :LCNT;
IF(LCNT>0)THEN EXCEPTION HASLINKS;
END
Аналогічна перевірка необхідна при видаленні записів з таблиць TOWN, FORLANG і EDINST. Нижче описані тригери, що контролюють видалення записів з цих таблиць:
CREATE TRIGGER TOWN_BD_01 FOR TOWN BEFORE DELETE POSITION 1 AS
DECLARE VARIABLE LCNT INTEGER;
BEGIN
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LTOWN=OLD.PRKEY
INTO :LCNT;
IF(LCNT>0)THEN EXCEPTION HASLINKS;
END
CREATE TRIGGER FORLANG_BD_01 FOR FORLANG BEFORE DELETE POSITION 1 AS
DECLARE VARIABLE LCNT INTEGER;
BEGIN
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LFORLANG=OLD.PRKEY
INTO :LCNT;
IF(LCNT>0)THEN EXCEPTION HASLINKS;
END
CREATE TRIGGER EDINST_BD_01 FOR EDINST BEFORE DELETE POSITION 1 AS
DECLARE VARIABLE LCNT INTEGER;
BEGIN
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LEDINST=OLD.PRKEY
INTO :LCNT;
IF(LCNT>0)THEN EXCEPTION HASLINKS;
END
Зв'язок між таблицями ENTRANT і PRIVIL є найбільш складний. Тому що для зв'язку абітурієнтів з пільгами необхідний зв'язок “багато – до – багатьох”, створена додаткова таблиця ENTRANTPRIVIL. Ця таблиця містить два зовнішніх ключі LENTRANT і LPRIVIL, за допомогою яких вона посилається на таблиці ENTRANT і PRIVIL. Цим забезпечується можливість одному абітурієнту користатися декількома пільгами одночасно.
При видаленні запису з таблиці PRIVIL тригер PRIVIL_BD_01 перевіряє використання абітурієнтами пільги, що видаляється,. Якщо існують абітурієнти, що користаються цією пільгою, то видалення скасовується.
CREATE TRIGGER PRIVIL_BD_01 FOR PRIVIL BEFORE DELETE POSITION 1 AS
DECLARE VARIABLE LCNT INTEGER;
BEGIN
SELECT COUNT(E.PRKEY)
FROM ENTRANTPRIVIL E
WHERE E.LPRIVIL=OLD.PRKEY
INTO :LCNT;
IF(LCNT>0)THEN EXCEPTION HASLINKS;
END
При видаленні запису з таблиці ENTRANT необхідно видалити записи з таблиці ENTRANTPRIVIL, що відповідали за зв'язок пільг з абітурієнтом, що видаляється. Для цього використовується тригер ENTRANT_BD_01:
CREATE TRIGGER ENTRANT_BD_01 FOR ENTRANT BEFORE DELETE POSITION 1 AS
BEGIN
DELETE FROM ENTRANTPRIVIL
WHERE LENTRANT=OLD.PRKEY;
END