Розробка бази даних та застосування для Інтернет-магазину відеотехніки

 

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ

ІНСТИТУТ СПЕЦІАЛЬНОГО ЗВЯЗКУ ТА ЗАХИСТУ ІНФОРМАЦІЇ НАЦІОНАЛЬНОГО ТЕХНІЧНОГО УНІВЕРСИТЕТУ УКРАЇНИ

«КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ»

КАФЕДРА КІБЕРБЕЗПЕКИ ТА ЗАСТ










Пояснювальна записка до курсової роботи

з дисципліни "Організація баз даних та знань - 1"

РОЗРОБКА БАЗИ ДАНИХ ТА ЗАСТОСУВАННЯ ДЛЯ ІНТЕРНЕТ-МАГАЗИНУ ВІДЕОТЕХНІКИ



Керівник курсової роботи доцент каф Я. Ю. Дорогий

Розробив курсант гр. С16 О. А. Федорченко




КИЇВ 2013


ЗМІСТ


АНОТАЦІЯ

ВСТУП

. АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ

1.1 Опис системи

.1.1 Підсистема створення облікової анкети на сайті

.1.2 Підсистема контролю платіжної системи

.1.3 Підсистема обробки замовлення

2. КОНЦЕПТУАЛЬНЕ ПРОЕКТУВАННЯ

2.1 Інформаційні потоки, які присутні в системі

.2 Побудова ER-діаграми

.3 Реляційна модель даних

.4 Діаграма «сутність-зв'язок»

3. ЛОГІЧНА МОДЕЛЬ ДАНИХ

. ФІЗИЧНЕ ПРОЕКТУВАННЯ БД

. ГЕНЕРАЦІЯ МОДЕЛІ ДО СКБД

ВИСНОВОК

СПИСОК ЛІТЕРАТУРИ

ДОДАТОК


АНОТАЦІЯ


Темою даної курсової роботи, була розробка бази даних та застосування для інтернет-магазину відеотехніки. Тому метою даної роботи є підвищення ефективності роботи магазину, а саме підвищення рівня захисту інформації, компактності представлення ключової інформації.

Основними засобами для виконання цього завдання були програми Erwin Data Modeler та Oracle 11G XE.

Робота виконана на друкованих аркушах, містить рисунки, схеми, таблиці, які представляють дану базу даних та SQL-код бази даних, за допомогою якого можна згенерувати дану базу даних в Oracle.


ВСТУП


Метою виконання даної роботи є розробка бази даних за допомогою програм Erwin Data Modeler та Oracle 11G XE.

Основним завданням інтернет-магазину відеотехніки є розробка нових пропозицій для покупців, з метою економії їх часу та коштів.

Свої основні завдання інтернет-магазин виконує через виконання наступних функцій:

чітка і безперебійна робота сайту магазину;

постійне оновлення списку товарів;

чіткий контроль наявності товару на складах магазину;

чіткий контроль платіжної системи;

підтримка високої кваліфікації співробітників магазину.

Керівництво інтернет-магазином

Власник інтернет-магазину:

здійснює загальне керівництво інтернет-магазином, спрямовує і координує його роботу та підрозділів щодо виконання покладених на інтернет-магазин завдань та функцій;

вирішує питання з поставкою товарів;

здійснює контроль за дотриманням нормативно-правових актів, якими користується інтернет-магазин.

Посадові обовязки

Власник інтернет-магазину:

керує діяльністю автобусного парку.

несе відповідальність за вчасне отримання платежів, якість товару, дотримання законодавчих актів і нормативних документів.

встановлює обов'язки працівників.

затверджує графік роботи офісу магазину.

Відділ обслуговування замовлень:

Забезпечує прийом замовлень на товари, а також звязок з клієнтами:

приймає скарги та пропозиції;

приймає замовлення на товари;

Відділ програмного забезпечення:

збір, зберігання даних магазину;

підтримання працездатності сайту;

підтримання захисту та безперебійному роботи платіжної системи;

Кадровий відділ:

організовує роботу з персоналом.

Мета та завдання системи

Метою даної роботи є підвищення ефективності роботи в інтернет-магазині відеотехніки. Ця мета досягається оптимізацією отримання, зберігання та обробки інформації. Призначена дана система для працівників структурних підрозділів інтернет-магазину.

Перелік функцій системи, що забезпечують досягнення цілей

Повинні бути автоматизовані наступні функції

ведення журналу обліку товарів, їх наявність на складах;

ведення журналу обліку замовлень;

ведення журналу обліку платіжних операцій;

запис інформації;

зберігання інформації;

зміна і відображення даних;

сортування за різними параметрами.

Під час виконання курсової роботи:

виконати аналіз предметної області;

ідентифікувати всі обєкти, їх атрибути та звязки між ними;

розробити концептуальну модель БД;

розробити застосування з використанням спроектованої БД в СКБД Oracle 11G XE.

1. АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ


Інтернет-магазин відеотехніки є приватним підприємством, що забезпечує продаж відеотехніки: телевізорів, моніторів і т.п.

Потрібно розглянути першу сутність - інтернет-магазин. Кожний інтернет-магазин характеризується наступним набором параметрів:

Реєстраційний номер. Реєстраційний номер приватного підприємства в базі даних державної податкової служби. Приклад: «123012»;

WEB-сайт. Адреса магазину у мережі Internet. Приклад: «rozetka.com.ua»;

Фізична адреса. Адреса місцезнаходження офісу інтернет-магазину у місті. Приклад: «м. Київ, вул. Гетьмана, 6»;

Власник. Власник інтернет-магазину. Приклад: «Кітов К. Ю.».

Потім у кожного інтернет-магазину є склад, який він орендує.

Номер складу. Номер складського приміщення, яке орендується інтернет-магазином. Приклад: «№ 78»;

Ємність. Кількість товарів, які одночасно можуть зберігатися на складі. Приклад: «700»;

В наявності. Кількість товарів, які на даний момент зберігаються на складі. Приклад: «400»;

Адреса. Адреса місцезнаходження складського приміщення. Приклад: «м. Київ, вул. Теодора Драйзера, 4»;

Вартість оренди. Вартість оренди складського приміщення. Приклад: «896,35».

На складі зберігаються товари. Так як це відеотехніка, то є певний набір параметрів, які є загальними для них всіх:

Артикул. Обліковий номер товару. Приклад: «1488»;

Виробник. Компанія-виробник товару. Приклад: «Samsung»;

Модель. Модель товару. Приклад: «ST456»;

Вартість. Вартість товару у гривнях. Приклад: «2500,36»

Інші характеристики. Інші характеристики товару - вага, колір і т.п.

Для того щоб ми могли продати товар, ми повинні його замовити та доставити на свої склади. Для цього користуємося послугами компанії-постачальника, з якою підписуємо договір на постачання.

Постачальник:

Назва компанії. Назва компанії-постачальника. Приклад: «Виноградов і партнери»;

Власник компанії. Власник компанії-постачальника. Приклад: «Виноградов В. Ю.»;

Адреса. Адреса місцезнаходження офісу компанії-постачальника. Приклад: «вул. Овруцька, 3В»;

Телефон компанії. Телефон за яким можна звязатися з адміністрацією компанії. Приклад: «044-566-69-33».

Постачання:

-Номер договору. Номер договору на постачання. Приклад: «789365»;

-Дата підписання. Дата підписання договору. Приклад: «21.12.12»;

-Дата постачання. Дата, до якої замовлений товар має бути на складах, орендованих інтернет-магазином. Приклад: «25.01.13»;

-Кількість товару. Кількість замовленого товару. Приклад: «450».

Отже у нас є товар і тепер його можна замовити. Замовник подає замовлення, ключова інформація якого передається курєрові, який виконує доставку.

Замовник:

-П. І. Б. Прізвище, імя та по-батькові замовника. Приклад: «Магомедов М. І.»;

-Дата народження. Дата народження замовника. Приклад: «23.03.1989»

-Місце проживання. Адреса місця проживання замовника. Приклад: «м. Київ, вул. Радунська, 5»;

-Контактний телефон. Контактний телефон замовника. Приклад: «063-865-14-88»;

-Примітки. Інша інформація, яку замовник вказує за власним бажанням. Приклад: «Закінчив ЗОШ № 35 та Національний педагогічний університет ім.. Драгоманова. Неодружений.»ю

Замовлення:

-Номер замовлення. Приклад: «78»;

-Сума замовлення. Сума на яку зроблено замовлення. Приклад: «8056,00»;

-Місце доставки. Місце, куди потрібно доставити замовлення. Приклад: «м. Київ, вул.. Радунська, 5»;

Курєр:

-П. І. Б. курєра. Прізвище, імя та по-батькові курєра. Приклад: «Валенштейн А. Й.»;

-Табельний номер. Табельний номер курєра. Приклад: «887566»;

-Зарплата. Зарплата курєра. Приклад: «1488,00»;

-Телефон. Контактний телефон курєра. Приклад: «063-899-78-45».

Далі формується форма доставки до якої передаються дані про замовника (П. І. Б., контактний телефон), замовлення (номер замовлення, сума замовлення, місце доставки) та курєра (П. І. Б., табельний номер. телефон).


1.1Опис системи


Предметна область - інтернет-магазин відеотехніки. Система створена для того,щоб допомогти Інтернет користувачам знайти потрібний товар в області відео техніки . Пройшовши реєстрацію на Інтернет сайті, користувач становиться частиною цього сайту і має можливість віртуально не покидаючи своєї домівки замовити зацікавлений товар. Сайт пропонує свої послуги попередньо запропонувавши пройти реєстрацію.

Система дозволяє змінювати, доповнювати, вести пошук і перегляд інформації про відео товари, накладати обмеження доступу до системи, зберігати списки користувачів у вигляді архіву.

Також сайт збільшить увагу на коментарі користувачів сайту, для того,щоб інші користувачі могли більше дізнатися інформації про вибраний товар, та для себе зробити зрівняльну характеристику та зробити висновки.

Схема складається з 3-х підсистем:

-створення облікової анкети на сайті;

-контроль платіжної системи;

-обробка замовлень.


1.1.1 Підсистема створення облікової анкети на сайті

Облікова анкета є частиною системи, яка відповідає за облік користувачів на сайті, і не дає можливості помилкового пересилання товару іншим людям . Користувач при потраплянні на сайт може реєструватися для того, щоб мати повний доступ до всіх послуг, які надає сайт.

Вхідними даними підсистеми є: прізвище, імя та по-батькові користувача, дата народження користувача, адреса його місця проживання та контактний телефон та інша інформація, яку користувач надає за власним бажанням. На виході підсистема відає оброблену коротку характеристику користувача, і дає можливість редагувати ці дані,в разі невірного введення. Після цього користувач може замовити, порівняти товари або прокоментувати роботу курєрів, якість товарів та надати свої пропозиції по підвищенню ефективності роботи інтернет-магазину.

Ця система має можливість існувати без сайту, але тільки як для збирання інформації про користувачів системи, але ця інформація нікуди не пересилається та не зберігається як архів.

Підсистема «Створення облікової анкети» виконує наступні функції:

-введення даних та редагування на сайті;

-зберігання інформації та отримання від системи контролю за обліком користувачів;

-формування корзини для товарів;

-перевірки правильності введених даних.


1.1.2 Підсистема контролю платіжної системи

Ця підсистема дає можливість для адміністраторів контролювати валютний потік, якщо користувач передає кошти через Інтернет (Web money і т.п.), або якщо користувач передає кошти користуючись платіжним рахунком інтернет-магазину в банку.

Вхідними даними цієї підсистеми є сума, на яку зроблено замовлення та сума коштів, яка поступила на рахунок магазину. Вихідними даними є висновок про успішне виконання транзакції, а у разі помилки або збою системи збір та виведення даних про помилку, методи її рішення та інформація про те, чи поступили кошти на рахунок магазину.

Підсистема контролю платіжної системи виконує наступні функції:

контроль валютних потоків;

контроль захищеності системи оплати;

контроль помилок системи, та їх вирішення.


1.1.3 Підсистема обробки замовлення

Ця підсистема обробляє замовлення та формує звіт на доставку.

Вхідними даними цієї підсистеми є:

контактні дані користувача (П. І. Б., контактний телефон);

ключові дані замовлення (місце доставки, номер замовлення, сума замовлення)

Вихідними даними цієї підсистеми є вхідні дані, які доповнюються контактними даними курєра - П. І. Б., табельний номер та телефон.

Основними функціями даної підсистеми є:

ведення обліку доставок;

контроль діяльності курєрів.


2. КОНЦЕПТУАЛЬНЕ ПРОЕКТУВАННЯ


Даний розділ присвячений детальному опису проектування концептуальної моделі даних.

Розглянемо виділення інформаційних об'єктів предметної області "Автобусний парк".

У результаті аналізу предметної області виявляються документи-джерела даних для створення бази даних.

Довідкова інформація зберігається в документі «Список користувачів сайту» (рисунок 2.1) та «Список курєрів магазину» (рисунок 2.2).


Рисунок 2.1 - приклад довідкового документу «Список користувачів сайту»


Рисунок 2.2 - приклад довідкового документу «Список курєрів магазину»


Облікова інформація міститься в документах «Список товарів, які є на складі» (рисунок 2.3), «Список виконаних замовлень» (рисунок 2.4), «Список товарів, які мають надійти» (рисунок 2.5).

Рисунок 2.3 - приклад облікового документу «Список товарів, які є на складі»


Рисунок 2.4 - приклад облікового документу «Список виконаних замовлень»


Рисунок 2.5 - приклад облікового документу «Список товарів, що мають надійти»


2.1 Інформаційні потоки, які присутні в системі


Рисунок 2.6 - інформаційні потоки в системі

інтернет-магазин замовляє у постачальника певну кількість товарів, які до певної дати повинні бути на складі (рисунок 2.6-1);

постачальник доставляє товари на склад (рисунок 2.6-2);

замовник замовляє товар (рисунок 2.6-3);

курєр доставляє товар замовнику (2.6-4)


2.2 Побудова ER-діаграми


Тепер перейдемо до опису звязків між сутностями (рисунки ).


Рисунок 2.7 - діаграма звязків між інтернет-магазином та складом


Для того щоб у нас могли щось замовити ми повинні закупити товар та розмістити на складі (рисунок 2.8).


Рисунок 2.8 - діаграма звязків між магазином, товаром, поставником, поставкою та складом


Тепер коли в нас є товар його можуть замовити і курєр доставить за місце призначенням клієнту (рисунок 2.9).


Рисунок 2.9 - звязки між замовником, товаром, замовленням, доставкою та курєром


Рисунок 2.10 - повна ER-модель


2.3 Реляційна модель даних


Інтернет-магазин (Реєстраційний номер, Власник, Web-сайт, Фізична адреса);

Склад (Номер складу, Адреса, Ємність складу, Товару в наявності);

Поставник (Назва компанії, Власник компанії, Адреса компанії, Телефон компанії)

Поставка (Номер договору, Дата підписання, Дата поставки, Кількість товарів)

Товар (Артикул, Категорія, Вартість, Гарантія, Виробник, Модель, Інші характеристики);

Замовник (П. І. Б. замовника, Дата народження, Адреса, Контактний телефон, Додаткова інформація);

Замовлення (Номер замовлення, Сума замовлення, Місце доставки);

Курєр (П. І. Б. курєра, Табельний номер, Контактний телефон, Зарплата)

Далі наведена структура таблиць (рисунок 2.11).


Рисунок 2.11 - структура сутностей


2.4 Діаграма «сутність-зв'язок»


Всі зв'язки у роботі визначенні як "One to One or More " (рисунок 2.12).



Рисунок 2.12 - створення звязків


Далі наведені представлення звязків області в програмі Erwin.

інтернет-магазин орендує склад






Рисунок 2.13 - зв'язок між інтернет-магазином та складом


-інтернет магазин замовляє у поставника товари, підписуючи договір на поставку та розміщує товари на складі




Рисунок 2.14 - зв'язок між інтернет-магазином, складом, товаром, поставником та поставкою


замовник замовляє в інтернет-магазині товар та курєр виконує доставку




Рисунок 2.15 - зв'язок між товаром, замовленням, замовником, доставкою та товаром

-також у нас є категорії товару (рисунок 2.16)




Рисунок 2.16 - категорії товару


3. ЛОГІЧНА МОДЕЛЬ ДАНИХ


Даний розділ присвячений детальному опису проектування логічної моделі даних за допомогою CASE-засобу Erwin. На наступному етапі СУБД-орієнтованої схеми даних. В залежності від СУБД необхідно визначити для кожного атрибуту : назву поля, типа поля и розмір поля. Дивись таблиці 3.1, 3.2, 3.3 , 3.4, 3.5, 3.6, 3.7.


Таблиця 3.1 - атрибути сутності «Інтернет-магазин»

АтрибутТипPrimary/ForeignРеєстраційний номерNumberPВласникStringФізична адресаStringWeb-сайтString

Таблиця 3.2 - атрибути сутності «Склад»

АтрибутТипPrimary/ForeignНомер складуNumberPВласникStringFРеєстраційний номерStringFАдресаStringЄмністьNumberВ наявності товарівNumberВартість орендиNumber

Таблиця 3.3 - атрибути сутності «Товар»

АтрибутТипPrimary/ForeignАртикулStringPВласникStringFНомер складуNumberFКатегоріяStringГарантіяStringВиробникStringМодельStringВартістьNumberТаблиця 3.4 - атрибути сутності «Медіаплеєри»

АтрибутТипPrimary/ForeignАртикулStringFГарантіяStringFВиробникStringFМодельStringFІнші характеристикиStringFВартістьNumberFТип медіаплеєраStringНаявність дисплеюString

Таблиця 3.5 - атрибути сутності «Телевізори та монітори»

АтрибутТипPrimary/ForeignАртикулStringFГарантіяStringFВиробникStringFМодельStringFІнші характеристикиStringFВартістьNumberFДіагональNumberВидStringТип матриціStringРоздільна здатністьString

Таблиця 3.6 - атрибути сутності «Відеокамери»

АтрибутТипPrimary/ForeignАртикулStringFГарантіяStringFВиробникStringFМодельStringFІнші характеристикиStringFВартістьNumberFТип відеокамериStringТип носіяStringТип матриціString

Таблиця 3.7 - атрибути сутності «Проектори»

АтрибутТипPrimary/ForeignАртикулStringFГарантіяStringFВиробникStringFМодельStringFІнші характеристикиStringFВартістьNumberFТип проектораStringФізична роздільна здатністьString

Таблиця 3.8 - атрибути сутності «Поставник»

АтрибутТипPrimary/ForeignНазва компаніїStringPВласник компаніїStringАдреса компаніїStringТелефонString

Таблиця 3.9 - атрибути сутності «Поставка»

АтрибутТипPrimary/ForeignНомер договоруStringPВласник компаніїStringFВласникStringFДата підписанняDateДата поставкиDateКількість товаруNumber

Таблиця 3.10 - атрибути сутності «Замовлення»

АтрибутТипPrimary/ForeignНомер замовленняStringPСума замовленняNumberП. І. Б.StringFКонтактний телефонStringFАртикулNumberFМісце доставкиString

Таблиця 3.11 - атрибути сутності «Замовник»

АтрибутТипPrimary/ForeignП. І. Б.StringPДата народженняStringАдреса місця проживанняStringКонтактний телефонStringПриміткиString

Таблиця 3.12 - атрибути сутності «Доставка»

АтрибутТипPrimary/ForeignНомер замовленняStringFСума замовленняNumberFП. І. Б.StringFКонтактний телефонStringFМісце доставкиStringFП. І. Б. курєраStringТелефонStringТабельний номерString

Таблиця 3.13 - атрибути сутності «Курєр»

АтрибутТипPrimary/ForeignП. І. Б. курєраStringТабельний номерStringPЗарплатаNumberТелефонString



Рисунок 3.1 - схема даних в Erwin


4. ФІЗИЧНЕ ПРОЕКТУВАННЯ БД


Даний розділ присвячений детальному опису проектування фізичної моделі даних за допомогою CASE-засобу Erwin ( рисунок 4.1, таблиці 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7).


Таблиця 4.1 - сутність «Інтернет-магазин»

Назва поляОпис поляТипID_storeРеєстраційний номерVARCHAR2 (10)WebWeb-сайтVARCHAR2 (40)Physical_adressФізична адресаVARCHAR2 (50)OwnerВласникVARCHAR2 (35)

Таблиця 4.1 - сутність «Склад»

Фізична назваОпис поляТипID_warehouseНомер складуVARCHAR2 (10)MAXЄмністьINTEGERRealВ наявності товарівINTEGERAdress_warehouseАдресаVARCHAR2 (50)RentВартість орендиNUMBER (10.2)

Таблиця 4.3 - сутність «Товар»

Фізична назваОпис поляТипID_goodАртикулVARCHAR2 (10)TypeКатегоріяVARCHAR2 (30)GaranteeГарантіяVARCHAR2 (20)ProducerВиробникVARCHAR2 (35)ModelМодельVARCHAR2 (35)OthersІнші характеристикиVARCHAR2 (200)PriceВартістьNUMBER (10.2)

Таблиця 4.4 - сутність «Медіаплеєри»

Фізична назваОпис поляТипCat_playerТип медіаплеєраVARCHAR2 (20)DiplayНаявність дисплеюVARCHAR2 (20)Таблиця 4.5 - сутність «Телевізори та монітори»

Фізична назваОпис поляТипDiagДіагональNUMBER (10.1)CategoryВидVARCHAR2 (20)MatrixТип матриціVARCHAR2 (20)DefinitionРоздільна здатністьVARCHAR2 (20)

Таблиця 4.6 - сутність «Відеокамери»

Фізична назваОпис поляТипCat_videoТип відеокамериVARCHAR2 (20)Matrix_videoТип матриціVARCHAR2 (20)Cat_nosТип носіяVARCHAR2 (20)

Таблиця 4.7 - сутність «Проектори»

Фізична назваОпис поляТипCat_proТип проектораVARCHAR2 (20)Phys_defФізична роздільна здатністьVARCHAR2 (20)

Таблиця 4.8 - сутність «Поставник»

Фізична назваОпис поляТипCompanyНазва компаніїVARCHAR2 (30)Ow_compВласник компаніїVARCHAR2 35)Adr_compАдреса компаніїVARCHAR2 (50)Phone_compТелефонVARCHAR2 (15)

Таблиця 4.9 - сутність «Поставка»

Фізична назваОпис поляТипID_getНомер договоруVARCHAR2 (10)Date_signДата підписанняDATEDate_getДата поставкиDATEHow_manyКількість товаруINTEGER

Таблиця 4.10 - сутність «Замовлення»

Фізична назваОпис поляТипID_orderingНомер замовленняVARCHAR2 (10)SummСума замовленняNUMBER (10.2)DeliveryМісце доставкиVARCHAR2 (35)

Таблиця 4.11 - сутність «Замовник»

Фізична назваОпис поляТипN_S_ordП. І. Б.VARCHAR2 (35)BirthdayДата народженняDATEAdr_ordАдреса місця проживанняVARCHAR2 (50)PhoneКонтактний телефонVARCHAR2 (20)Add_infoПриміткиVARCHAR2 (200)

Таблиця 4.12 - сутність «Курєр»

Фізична назваОпис поляТипN_S_courП. І. Б. курєраVARCHAR2 (35)ID_courierТабельний номерVARCHAR2 (10)SalaryЗарплатаNUMBER (10.2)Phone_courТелефонVARCHAR2 (20)

Рисунок 4.1 - схема даних в Erwin, фізичний рівень


5. ГЕНЕРАЦІЯ МОДЕЛІ ДО СКБД


Таким чином, проробивши всі вищеописані дії, була одержана модель БД, яка є готовою до переміщення в СКБД. Для генерації коду створення БД необхідно вибрати пункт меню Tools/ForwardEngineer/SchemaGeneration, після чого відкриється вікно налаштування властивостей схеми даних, що генерується.(рис. 5.1)












Рис 5.1 Генерація моделі у СКБД


Для попереднього перегляду SQL-скрипта служить кнопка Preview, для генерації схеми - Generate. У процесі генерації Erwin з'єднується з БД, виконуючи SQL-скрипт. Якщо в процесі генерації виникають які-небудь помилки, вона припиняється, відкривається вікно з повідомленнями про помилки.

Далі наведені рисунки наших таблиць згенеровані до СКБД (рисунок 5.2 - 5.14).




Рисунок 5.2 - таблиця «Інтернет-магазин»




Рисунок 5.3 - таблиця «Склад»









Рисунок 5.4 - таблиця «Товар»








Рисунок 5.5 - таблиця «Поставник»









Рисунок 5.6 - таблиця «Поставка»









Рисунок 5.7 - таблиця «Замовник»









Рисунок 5.8 - таблиця «Замовлення»











Рисунок 5.9 - таблиця «Доставка»








Рисунок 5.10 - таблиця «Курєр»










Рисунок 5.11 - таблиця «Відеокамери»


Рисунок 5.12 - таблиця «Телевізори та монітори»


Рисунок 5.13 - таблиця «Проектори»


Рисунок 5.14 - таблиця «Медіаплеєри»


ВИСНОВОК


Таким чином, дана курсова робота дала змогу побудувати ER-модель для заданої тематики «Інтернет-магазин відео техніки», і побачити як повинна виглядати БД для різних закладів і підприємств.

Для вірної побудови бази даних ми на першому етапи зробили аналіз предметної області, в я кому було описано система в цілому та його підсистеми, та для вірного розуміння самої системи було описано модулі роботи підсистем.

Наступним етапом було створення проектування концептуальної моделі даних, в якому створюємо додаткову інформацію в вигляді списків. Ця інформація розроблена для моніторингу системи в цілому.

Третій етап є створення інфологічної моделі,яка відображає предметну область, а точніше опис предметної області й відображає погляди й потреби всіх користувачів системи. Метою побудови цієї структури є виявлення й об'єднання інформаційних вимог користувача, зв'язків між елементами даних без врахування їх змісту й середовища їх зберігання.

Центральним компонентом інфологічної моделі є опис об'єктів предметної області й зв'язків між ними (ER-модель). Інфологічна модель представляє інформаційні потоки, сутності й зв'язку даної предметної області. Вона може бути представлена у вигляді ER-моделі й реляційної схеми. Також в ній класифікуються сутності та визначаються первинні й зовнішні ключі,які використаються в даній роботі.

Четвертий етап - побудова даталогічної моделі. Ця модель є моделлю логічного рівня і являє собою відображення логічних зв'язків між елементами даних безвідносно до їхнього змісту й середовищу зберігання.

Пятий етап - це побудова фізичної моделі. Модель являє собою таблицю, кожний рядок якої (запис) містить деякі відомості про описуваний об'єкт. Всі записи бази даних мають ідентичну, задану користувачем структуру й розміри. Модель фізичного рівня також будується з урахуванням можливостей, що представляються СКБД.

Наступний шостий етап являє собою проектування логічної і фізичної моделі, визначення в них атрибутів сутностей, тип та розмір.

Сьомий етап безпосередньо побудова ER-моделі в CASE <#"justify">СПИСОК ЛІТЕРАТУРИ


1.Методичні вказівки до виконання курсової роботи з дисципліни "Організація баз даних та знань - 1"/ Я.Ю.Дорогий.

.Савчук Т.О. Організація баз даних і знань. Вінниця: ВДТУ, 2000 р.

.Степанов Ю.Л. Разработка приложений баз данных для СУБД.

.Вінер Н. Бази даних, М.: Наука, 1993

. Дейт, К.Дж. Введение в системы баз данных, 8-е издание.: Пер. с англ. /К. Дж. Дейт. - М.: Издательский дом «Вильямс», 2005. - 1328 с.: ил. - Парал. тит. англ.

. Конноли Т. Базы данных: проектирование и сопровождение. Теория и практика. /Т. Конноли, К. Бегг, А. Страчан.

. ЛуниК. Oracle Database 10G. Полный справочник в 2 томах. / К. Луни. - М.: Издательство «Лори», 2004. .

. Дорогий Я.Ю. Методична розробка до виконання лабораторної роботи «Створення застосувань в Oracle 11G XE» [Електронне видання]. / Я.Ю.Дорогий. - К.: ІССЗІ НТУУ «КПІ», 2012.

обліковий концептуальний модель атрибут сутність

Додаток

кодБДTABLE Camera_video VARCHAR2(20) NULL ,_video VARCHAR2(20) NULL ,_nos VARCHAR2(20) NULL ,_good VARCHAR2(10) NOT NULL , VARCHAR2(35) NOT NULL , VARCHAR2(35) NOT NULL , NUMBER(10,2) NOT NULL , VARCHAR2(200) NOT NULL

);UNIQUE INDEX XPKÂèäåîêàìåðû ON Camera

(ID_good ASC,Producer ASC,Model ASC,Price ASC,Others ASC);TABLE CameraCONSTRAINT XPKÂèäåîêàìåðû PRIMARY KEY (ID_good,Producer,Model,Price,Others);TABLE Courier

(_courier VARCHAR2(10) NOT NULL ,_S_cour VARCHAR2(35) NULL , NUMBER(10,2) NULL ,_cour VARCHAR2(20) NULL

);UNIQUE INDEX XPKÊóðüåð ON Courier

(ID_courier ASC);TABLE CourierCONSTRAINT XPKÊóðüåð PRIMARY KEY (ID_courier);UNIQUE INDEX XAK1Êóðüåð ON Courier

(N_S_cour ASC,Phone_cour ASC,ID_courier ASC);TABLE CourierCONSTRAINT XAK1Êóðüåð UNIQUE (N_S_cour,Phone_cour,ID_courier);TABLE Deliverer

( VARCHAR2(30) NOT NULL ,_comp VARCHAR2(35) NULL ,_copmp VARCHAR2(50) NULL ,_comp VARCHAR2(15) NULL

);UNIQUE INDEX XPKÏîñòàâùèê ON Deliverer

(Company ASC);TABLE DelivererCONSTRAINT XPKÏîñòàâùèê PRIMARY KEY (Company);UNIQUE INDEX XAK1Ïîñòàâùèê ON Deliverer

(Ow_comp ASC);TABLE DelivererCONSTRAINT XAK1Ïîñòàâùèê UNIQUE (Ow_comp);TABLE Delivery

(_get VARCHAR2(10) NOT NULL ,_sign DATE NULL ,_get DATE NULL ,_many INTEGER NULL ,_good VARCHAR2(10) NOT NULL , VARCHAR2(35) NOT NULL ,_comp VARCHAR2(35) NOT NULL

);UNIQUE INDEX XPKÏîñòàâêà ON Delivery

(ID_get ASC);TABLE DeliveryCONSTRAINT XPKÏîñòàâêà PRIMARY KEY (ID_get);TABLE Good

(_good VARCHAR2(10) NOT NULL , VARCHAR2(30) NULL , NUMBER(10,2) NULL , VARCHAR2(20) NULL ,_warehouse VARCHAR2(10) NOT NULL , VARCHAR2(35) NULL , VARCHAR2(35) NULL , VARCHAR2(200) NULL

);UNIQUE INDEX XPKÒîâàð ON Good

(ID_good ASC);TABLE GoodCONSTRAINT XPKÒîâàð PRIMARY KEY (ID_good);TABLE GoodCONSTRAINT XAK1Òîâàð UNIQUE (ID_good);UNIQUE INDEX XAK2Òîâàð ON Good

(ID_good ASC,Producer ASC,Model ASC,Price ASC,Others ASC);TABLE GoodCONSTRAINT XAK2Òîâàð UNIQUE (ID_good,Producer,Model,Price,Others);TABLE Internet_store

(_store VARCHAR2(10) NOT NULL , VARCHAR2(40) NULL ,_adress VARCHAR2(50) NULL , VARCHAR2(35) NULL

);UNIQUE INDEX XPKÈíòåðíåò_ìàãàçèí ON Internet_store

(ID_store ASC);TABLE Internet_storeCONSTRAINT XPKÈíòåðíåò_ìàãàçèí PRIMARY KEY (ID_store);UNIQUE INDEX XAK1Èíòåðíåò_ìàãàçèí ON Internet_store

(ID_store ASC,Owner ASC);TABLE Internet_storeCONSTRAINT XAK1Èíòåðíåò_ìàãàçèí UNIQUE (ID_store,Owner);TABLE Ord

(_ordering VARCHAR2(10) NOT NULL , NUMBER(10,2) NULL ,_good VARCHAR2(10) NOT NULL ,_S_ord VARCHAR2(35) NOT NULL , VARCHAR2(35) NULL

);UNIQUE INDEX XPKÇàêàç ON Ord

(ID_ordering ASC);TABLE OrdCONSTRAINT XPKÇàêàç PRIMARY KEY (ID_ordering);UNIQUE INDEX XAK1Çàêàç ON Ord

(ID_ordering ASC,Summ ASC,N_S_ord ASC,Delivery ASC);TABLE OrdCONSTRAINT XAK1Çàêàç UNIQUE (ID_ordering,Summ,N_S_ord,Delivery);TABLE Ord_del

(_ordering VARCHAR2(10) NOT NULL , NUMBER(10,2) NOT NULL ,_S_ord VARCHAR2(35) NOT NULL , VARCHAR2(35) NOT NULL ,_S_cour VARCHAR2(35) NOT NULL ,_cour VARCHAR2(20) NOT NULL ,_courier VARCHAR2(10) NOT NULL , VARCHAR2(20) NOT NULL

);TABLE Orderer

(_S_ord VARCHAR2(35) NOT NULL ,_ord VARCHAR2(50) NULL , VARCHAR2(20) NULL , DATE NULL ,_info VARCHAR2(200) NULL

);UNIQUE INDEX XPKÇàêàç÷èê ON Orderer

(N_S_ord ASC);TABLE OrdererCONSTRAINT XPKÇàêàç÷èê PRIMARY KEY (N_S_ord);UNIQUE INDEX XAK1Çàêàç÷èê ON Orderer

(Phone ASC,N_S_ord ASC);TABLE OrdererCONSTRAINT XAK1Çàêàç÷èê UNIQUE (Phone,N_S_ord);TABLE Players

(_player VARCHAR2(20) NULL , VARCHAR2(20) NULL ,_good VARCHAR2(10) NOT NULL , VARCHAR2(35) NOT NULL , VARCHAR2(35) NOT NULL , NUMBER(10,2) NOT NULL , VARCHAR2(200) NOT NULL

);UNIQUE INDEX XPKÌåäèàïëååðû ON Players

(ID_good ASC,Producer ASC,Model ASC,Price ASC,Others ASC);TABLE PlayersCONSTRAINT XPKÌåäèàïëååðû PRIMARY KEY (ID_good,Producer,Model,Price,Others);TABLE Proectors

(_pro VARCHAR2(20) NULL ,_def VARCHAR2(20) NULL ,_good VARCHAR2(10) NOT NULL , VARCHAR2(35) NOT NULL , VARCHAR2(35) NOT NULL , NUMBER(10,2) NOT NULL , VARCHAR2(200) NOT NULL

);UNIQUE INDEX XPKÏðîåêòîðû ON Proectors

(ID_good ASC,Producer ASC,Model ASC,Price ASC,Others ASC);TABLE ProectorsCONSTRAINT XPKÏðîåêòîðû PRIMARY KEY (ID_good,Producer,Model,Price,Others);TABLE TV_monit

( NUMBER(10,1) NULL , VARCHAR2(20) NULL , VARCHAR2(20) NULL , VARCHAR2(20) NULL ,_good VARCHAR2(10) NOT NULL , VARCHAR2(35) NOT NULL , VARCHAR2(35) NOT NULL , NUMBER(10,2) NOT NULL , VARCHAR2(200) NOT NULL

);UNIQUE INDEX XPKÒåëåâèçîðû_è_ìîíèòîðû ON TV_monit

(ID_good ASC,Producer ASC,Model ASC,Price ASC,Others ASC);TABLE TV_monitCONSTRAINT XPKÒåëåâèçîðû_è_ìîíèòîðû PRIMARY KEY (ID_good,Producer,Model,Price,Others);TABLE Warehouse

(_warehouse VARCHAR2(10) NOT NULL , INTEGER NULL , INTEGER NULL ,_warehouse VARCHAR2(50) NULL , NUMBER(10,2) NOT NULL ,_store VARCHAR2(10) NOT NULL

);UNIQUE INDEX XPKÑêëàä ON Warehouse

(ID_warehouse ASC);TABLE WarehouseCONSTRAINT XPKÑêëàä PRIMARY KEY (ID_warehouse);TABLE WarehouseCONSTRAINT XAK1Ñêëàä UNIQUE (ID_warehouse);TABLE Camera(FOREIGN KEY (ID_good, Producer, Model, Price, Others) REFERENCES Good(ID_good, Producer, Model, Price, Others) ON DELETE CASCADE);TABLE Delivery(CONSTRAINT R_3 FOREIGN KEY (ID_good) REFERENCES Good (ID_good));TABLE Delivery(CONSTRAINT R_6 FOREIGN KEY (Ow_comp) REFERENCES Deliverer (Ow_comp));TABLE Good(CONSTRAINT R_2 FOREIGN KEY (ID_warehouse) REFERENCES Warehouse (ID_warehouse));TABLE Ord(CONSTRAINT R_4 FOREIGN KEY (ID_good) REFERENCES Good (ID_good));TABLE Ord(CONSTRAINT R_5 FOREIGN KEY (N_S_ord) REFERENCES Orderer (N_S_ord));TABLE Ord_del(CONSTRAINT R_7 FOREIGN KEY (ID_ordering, Summ, N_S_ord, Delivery) REFERENCES Ord (ID_ordering, Summ, N_S_ord, Delivery));TABLE Ord_del(CONSTRAINT R_8 FOREIGN KEY (N_S_cour, Phone_cour, ID_courier) REFERENCES Courier (N_S_cour, Phone_cour, ID_courier));TABLE Players(FOREIGN KEY (ID_good, Producer, Model, Price, Others) REFERENCES Good(ID_good, Producer, Model, Price, Others) ON DELETE CASCADE);TABLE Proectors(FOREIGN KEY (ID_good, Producer, Model, Price, Others) REFERENCES Good(ID_good, Producer, Model, Price, Others) ON DELETE CASCADE);TABLE TV_monit(FOREIGN KEY (ID_good, Producer, Model, Price, Others) REFERENCES Good(ID_good, Producer, Model, Price, Others) ON DELETE CASCADE);TABLE Warehouse(CONSTRAINT R_1 FOREIGN KEY (ID_store) REFERENCES Internet_store (ID_store)); TRIGGER tI_Camera BEFORE INSERT ON Camera for each row

- ERwin Builtin Trigger

- INSERT trigger on CameraNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Good Camera on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="00011fd9", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="Camera"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */count(*) INTO NUMROWSGood

/* %JoinFKPK(:%New,Good," = "," AND") */

:new.ID_good = Good.ID_good AND

:new.Price = Good.Price AND

:new.Producer = Good.Producer AND

:new.Model = Good.Model AND

:new.Others = Good.Others;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot insert Camera because Good does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tU_Camera AFTER UPDATE ON Camera for each row

- ERwin Builtin Trigger

- UPDATE trigger on CameraNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Good Camera on child update restrict */

/* ERWIN_RELATION:CHECKSUM="000122c9", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="Camera"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */count(*) INTO NUMROWSGood

/* %JoinFKPK(:%New,Good," = "," AND") */

:new.ID_good = Good.ID_good AND

:new.Price = Good.Price AND

:new.Producer = Good.Producer AND

:new.Model = Good.Model AND

:new.Others = Good.Others;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot update Camera because Good does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tD_Courier AFTER DELETE ON Courier for each row

- ERwin Builtin Trigger

- DELETE trigger on CourierNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Courier Ord_del on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="000102b6", PARENT_OWNER="", PARENT_TABLE="Courier"_OWNER="", CHILD_TABLE="Ord_del"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_8", FK_COLUMNS="N_S_cour""Phone_cour""ID_courier" */count(*) INTO NUMROWSOrd_del

/* %JoinFKPK(Ord_del,:%Old," = "," AND") */_del.ID_courier = :old.ID_courier AND_del.N_S_cour = :old.N_S_cour AND_del.Phone_cour = :old.Phone_cour;(NUMROWS > 0)_application_error(

,

'Cannot delete Courier because Ord_del exists.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tU_Courier AFTER UPDATE ON Courier for each row

- ERwin Builtin Trigger

- UPDATE trigger on CourierNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Courier Ord_del on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="00012249", PARENT_OWNER="", PARENT_TABLE="Courier"_OWNER="", CHILD_TABLE="Ord_del"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_8", FK_COLUMNS="N_S_cour""Phone_cour""ID_courier" */

/* %JoinPKPK(:%Old,:%New," <> "," OR ") */

:old.ID_courier <> :new.ID_couriercount(*) INTO NUMROWSOrd_del

/* %JoinFKPK(Ord_del,:%Old," = "," AND") */_del.ID_courier = :old.ID_courier AND_del.N_S_cour = :old.N_S_cour AND_del.Phone_cour = :old.Phone_cour;(NUMROWS > 0)_application_error(

,

'Cannot update Courier because Ord_del exists.'

);IF;IF;

- ERwin Builtin Trigger;

/ TRIGGER tD_Deliverer AFTER DELETE ON Deliverer for each row

- ERwin Builtin Trigger

- DELETE trigger on DelivererNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Deliverer Delivery on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="0000d933", PARENT_OWNER="", PARENT_TABLE="Deliverer"_OWNER="", CHILD_TABLE="Delivery"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_6", FK_COLUMNS="Ow_comp" */count(*) INTO NUMROWSDelivery

/* %JoinFKPK(Delivery,:%Old," = "," AND") */.Ow_comp = :old.Ow_comp;(NUMROWS > 0)_application_error(

,

'Cannot delete Deliverer because Delivery exists.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tU_Deliverer AFTER UPDATE ON Deliverer for each row

- ERwin Builtin Trigger

- UPDATE trigger on DelivererNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Deliverer Delivery on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="0000fde4", PARENT_OWNER="", PARENT_TABLE="Deliverer"_OWNER="", CHILD_TABLE="Delivery"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_6", FK_COLUMNS="Ow_comp" */

/* %JoinPKPK(:%Old,:%New," <> "," OR ") */

:old.Company <> :new.Companycount(*) INTO NUMROWSDelivery

/* %JoinFKPK(Delivery,:%Old," = "," AND") */.Ow_comp = :old.Ow_comp;(NUMROWS > 0)_application_error(

,

'Cannot update Deliverer because Delivery exists.'

);IF;IF;

- ERwin Builtin Trigger;

/ TRIGGER tI_Delivery BEFORE INSERT ON Delivery for each row

- ERwin Builtin Trigger

- INSERT trigger on DeliveryNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Good Delivery on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="0001d879", PARENT_OWNER="", PARENT_TABLE="Good"_OWNER="", CHILD_TABLE="Delivery"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_3", FK_COLUMNS="ID_good" */count(*) INTO NUMROWSGood

/* %JoinFKPK(:%New,Good," = "," AND") */

:new.ID_good = Good.ID_good;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot insert Delivery because Good does not exist.'

);IF;

/* ERwin Builtin Trigger */

/* Deliverer Delivery on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Deliverer"_OWNER="", CHILD_TABLE="Delivery"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_6", FK_COLUMNS="Ow_comp" */count(*) INTO NUMROWSDeliverer

/* %JoinFKPK(:%New,Deliverer," = "," AND") */

:new.Ow_comp = Deliverer.Ow_comp;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot insert Delivery because Deliverer does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tU_Delivery AFTER UPDATE ON Delivery for each row

- ERwin Builtin Trigger

- UPDATE trigger on DeliveryNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Good Delivery on child update restrict */

/* ERWIN_RELATION:CHECKSUM="0001d0a0", PARENT_OWNER="", PARENT_TABLE="Good"_OWNER="", CHILD_TABLE="Delivery"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_3", FK_COLUMNS="ID_good" */count(*) INTO NUMROWSGood

/* %JoinFKPK(:%New,Good," = "," AND") */

:new.ID_good = Good.ID_good;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot update Delivery because Good does not exist.'

);IF;

/* ERwin Builtin Trigger */

/* Deliverer Delivery on child update restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Deliverer"_OWNER="", CHILD_TABLE="Delivery"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_6", FK_COLUMNS="Ow_comp" */count(*) INTO NUMROWSDeliverer

/* %JoinFKPK(:%New,Deliverer," = "," AND") */

:new.Ow_comp = Deliverer.Ow_comp;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot update Delivery because Deliverer does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tI_Good BEFORE INSERT ON Good for each row

- ERwin Builtin Trigger

- INSERT trigger on GoodNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Warehouse Good on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="0000ef47", PARENT_OWNER="", PARENT_TABLE="Warehouse"_OWNER="", CHILD_TABLE="Good"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_2", FK_COLUMNS="ID_warehouse" */count(*) INTO NUMROWSWarehouse

/* %JoinFKPK(:%New,Warehouse," = "," AND") */

:new.ID_warehouse = Warehouse.ID_warehouse;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot insert Good because Warehouse does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tD_Good AFTER DELETE ON Good for each row

- ERwin Builtin Trigger

- DELETE trigger on GoodNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Good Delivery on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="00056dc4", PARENT_OWNER="", PARENT_TABLE="Good"_OWNER="", CHILD_TABLE="Delivery"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_3", FK_COLUMNS="ID_good" */count(*) INTO NUMROWSDelivery

/* %JoinFKPK(Delivery,:%Old," = "," AND") */.ID_good = :old.ID_good;(NUMROWS > 0)_application_error(

,

'Cannot delete Good because Delivery exists.'

);IF;

/* ERwin Builtin Trigger */

/* Good Ord on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Good"_OWNER="", CHILD_TABLE="Ord"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_4", FK_COLUMNS="ID_good" */count(*) INTO NUMROWSOrd

/* %JoinFKPK(Ord,:%Old," = "," AND") */.ID_good = :old.ID_good;(NUMROWS > 0)_application_error(

,

'Cannot delete Good because Ord exists.'

);IF;

/* ERwin Builtin Trigger */

/* Good TV_monit on parent delete cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="TV_monit"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */FROM TV_monit

/* %JoinFKPK(TV_monit,:%Old," = "," AND") */_monit.ID_good = :old.ID_good AND_monit.Price = :old.Price AND_monit.Producer = :old.Producer AND_monit.Model = :old.Model AND_monit.Others = :old.Others;

/* ERwin Builtin Trigger */

/* Good Players on parent delete cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="Players"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */FROM Players

/* %JoinFKPK(Players,:%Old," = "," AND") */.ID_good = :old.ID_good AND.Price = :old.Price AND.Producer = :old.Producer AND.Model = :old.Model AND.Others = :old.Others;

/* ERwin Builtin Trigger */

/* Good Camera on parent delete cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="Camera"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */FROM Camera

/* %JoinFKPK(Camera,:%Old," = "," AND") */.ID_good = :old.ID_good AND.Price = :old.Price AND.Producer = :old.Producer AND.Model = :old.Model AND.Others = :old.Others;

/* ERwin Builtin Trigger */

/* Good Proectors on parent delete cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="Proectors"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */FROM Proectors

/* %JoinFKPK(Proectors,:%Old," = "," AND") */.ID_good = :old.ID_good AND.Price = :old.Price AND.Producer = :old.Producer AND.Model = :old.Model AND.Others = :old.Others;

- ERwin Builtin Trigger;

/ TRIGGER tU_Good AFTER UPDATE ON Good for each row

- ERwin Builtin Trigger

- UPDATE trigger on GoodNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Good Delivery on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="0008c572", PARENT_OWNER="", PARENT_TABLE="Good"_OWNER="", CHILD_TABLE="Delivery"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_3", FK_COLUMNS="ID_good" */

/* %JoinPKPK(:%Old,:%New," <> "," OR ") */

:old.ID_good <> :new.ID_goodcount(*) INTO NUMROWSDelivery

/* %JoinFKPK(Delivery,:%Old," = "," AND") */.ID_good = :old.ID_good;(NUMROWS > 0)_application_error(

,

'Cannot update Good because Delivery exists.'

);IF;IF;

/* ERwin Builtin Trigger */

/* Good Ord on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Good"_OWNER="", CHILD_TABLE="Ord"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_4", FK_COLUMNS="ID_good" */

/* %JoinPKPK(:%Old,:%New," <> "," OR ") */

:old.ID_good <> :new.ID_goodcount(*) INTO NUMROWSOrd

/* %JoinFKPK(Ord,:%Old," = "," AND") */.ID_good = :old.ID_good;(NUMROWS > 0)_application_error(

,

'Cannot update Good because Ord exists.'

);IF;IF;

/* ERwin Builtin Trigger */

/* Good TV_monit on parent update cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="TV_monit"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */

/* %JoinPKPK(:%Old,:%New," <> "," OR ") */

:old.ID_good <> :new.ID_goodTV_monit

/* %JoinFKPK(TV_monit,:%New," = ",",") */_monit.ID_good = :new.ID_good,_monit.Price = :new.Price,_monit.Producer = :new.Producer,_monit.Model = :new.Model,_monit.Others = :new.Others

/* %JoinFKPK(TV_monit,:%Old," = "," AND") */_monit.ID_good = :old.ID_good AND_monit.Price = :old.Price AND_monit.Producer = :old.Producer AND_monit.Model = :old.Model AND_monit.Others = :old.Others;IF;

/* ERwin Builtin Trigger */

/* Good Players on parent update cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="Players"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */

/* %JoinPKPK(:%Old,:%New," <> "," OR ") */

:old.ID_good <> :new.ID_goodPlayers

/* %JoinFKPK(Players,:%New," = ",",") */.ID_good = :new.ID_good,.Price = :new.Price,.Producer = :new.Producer,.Model = :new.Model,.Others = :new.Others

/* %JoinFKPK(Players,:%Old," = "," AND") */.ID_good = :old.ID_good AND.Price = :old.Price AND.Producer = :old.Producer AND.Model = :old.Model AND.Others = :old.Others;IF;

/* ERwin Builtin Trigger */

/* Good Camera on parent update cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="Camera"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */

/* %JoinPKPK(:%Old,:%New," <> "," OR ") */

:old.ID_good <> :new.ID_goodCamera

/* %JoinFKPK(Camera,:%New," = ",",") */.ID_good = :new.ID_good,.Price = :new.Price,.Producer = :new.Producer,.Model = :new.Model,.Others = :new.Others

/* %JoinFKPK(Camera,:%Old," = "," AND") */.ID_good = :old.ID_good AND.Price = :old.Price AND.Producer = :old.Producer AND.Model = :old.Model AND.Others = :old.Others;IF;

/* ERwin Builtin Trigger */

/* Good Proectors on parent update cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="Proectors"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */

/* %JoinPKPK(:%Old,:%New," <> "," OR ") */

:old.ID_good <> :new.ID_goodProectors

/* %JoinFKPK(Proectors,:%New," = ",",") */.ID_good = :new.ID_good,.Price = :new.Price,.Producer = :new.Producer,.Model = :new.Model,.Others = :new.Others

/* %JoinFKPK(Proectors,:%Old," = "," AND") */.ID_good = :old.ID_good AND.Price = :old.Price AND.Producer = :old.Producer AND.Model = :old.Model AND.Others = :old.Others;IF;

/* ERwin Builtin Trigger */

/* Warehouse Good on child update restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Warehouse"_OWNER="", CHILD_TABLE="Good"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_2", FK_COLUMNS="ID_warehouse" */count(*) INTO NUMROWSWarehouse

/* %JoinFKPK(:%New,Warehouse," = "," AND") */

:new.ID_warehouse = Warehouse.ID_warehouse;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot update Good because Warehouse does not exist.'

);IF;

- ERwin Builtin Trigger; TRIGGER tD_Internet_store AFTER DELETE ON Internet_store for each row

- ERwin Builtin Trigger

- DELETE trigger on Internet_storeNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Internet_store Warehouse on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="0000d752", PARENT_OWNER="", PARENT_TABLE="Internet_store"_OWNER="", CHILD_TABLE="Warehouse"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_1", FK_COLUMNS="ID_store" */count(*) INTO NUMROWSWarehouse

/* %JoinFKPK(Warehouse,:%Old," = "," AND") */.ID_store = :old.ID_store;(NUMROWS > 0)_application_error(

,

'Cannot delete Internet_store because Warehouse exists.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tU_Internet_store AFTER UPDATE ON Internet_store for each row

- ERwin Builtin Trigger

- UPDATE trigger on Internet_storeNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Internet_store Warehouse on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="0001039e", PARENT_OWNER="", PARENT_TABLE="Internet_store"_OWNER="", CHILD_TABLE="Warehouse"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_1", FK_COLUMNS="ID_store" */

/* %JoinPKPK(:%Old,:%New," <> "," OR ") */

:old.ID_store <> :new.ID_storecount(*) INTO NUMROWSWarehouse

/* %JoinFKPK(Warehouse,:%Old," = "," AND") */.ID_store = :old.ID_store;(NUMROWS > 0)_application_error(

,

'Cannot update Internet_store because Warehouse exists.'

);IF;IF;

- ERwin Builtin Trigger; TRIGGER tI_Ord BEFORE INSERT ON Ord for each row

- ERwin Builtin Trigger

- INSERT trigger on OrdNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Good Ord on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="0001cbab", PARENT_OWNER="", PARENT_TABLE="Good"_OWNER="", CHILD_TABLE="Ord"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_4", FK_COLUMNS="ID_good" */count(*) INTO NUMROWSGood

/* %JoinFKPK(:%New,Good," = "," AND") */

:new.ID_good = Good.ID_good;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot insert Ord because Good does not exist.'

);IF;

/* ERwin Builtin Trigger */

/* Orderer Ord on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Orderer"_OWNER="", CHILD_TABLE="Ord"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_5", FK_COLUMNS="N_S_ord" */count(*) INTO NUMROWSOrderer

/* %JoinFKPK(:%New,Orderer," = "," AND") */

:new.N_S_ord = Orderer.N_S_ord;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot insert Ord because Orderer does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tD_Ord AFTER DELETE ON Ord for each row

- ERwin Builtin Trigger

- DELETE trigger on OrdNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Ord Ord_del on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="00010cd1", PARENT_OWNER="", PARENT_TABLE="Ord"_OWNER="", CHILD_TABLE="Ord_del"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_7", FK_COLUMNS="ID_ordering""Summ""N_S_ord""Delivery" */count(*) INTO NUMROWSOrd_del

/* %JoinFKPK(Ord_del,:%Old," = "," AND") */_del.ID_ordering = :old.ID_ordering AND_del.Summ = :old.Summ AND_del.N_S_ord = :old.N_S_ord AND_del.Delivery = :old.Delivery;(NUMROWS > 0)_application_error(

,

'Cannot delete Ord because Ord_del exists.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tU_Ord AFTER UPDATE ON Ord for each row

- ERwin Builtin Trigger

- UPDATE trigger on OrdNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Ord Ord_del on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="00030f78", PARENT_OWNER="", PARENT_TABLE="Ord"_OWNER="", CHILD_TABLE="Ord_del"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_7", FK_COLUMNS="ID_ordering""Summ""N_S_ord""Delivery" */

/* %JoinPKPK(:%Old,:%New," <> "," OR ") */

:old.ID_ordering <> :new.ID_orderingcount(*) INTO NUMROWSOrd_del

/* %JoinFKPK(Ord_del,:%Old," = "," AND") */_del.ID_ordering = :old.ID_ordering AND_del.Summ = :old.Summ AND_del.N_S_ord = :old.N_S_ord AND_del.Delivery = :old.Delivery;(NUMROWS > 0)_application_error(

,

'Cannot update Ord because Ord_del exists.'

);IF;IF;

/* ERwin Builtin Trigger */

/* Good Ord on child update restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Good"_OWNER="", CHILD_TABLE="Ord"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_4", FK_COLUMNS="ID_good" */count(*) INTO NUMROWSGood

/* %JoinFKPK(:%New,Good," = "," AND") */

:new.ID_good = Good.ID_good;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot update Ord because Good does not exist.'

);IF;

/* ERwin Builtin Trigger */

/* Orderer Ord on child update restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Orderer"_OWNER="", CHILD_TABLE="Ord"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_5", FK_COLUMNS="N_S_ord" */count(*) INTO NUMROWSOrderer

/* %JoinFKPK(:%New,Orderer," = "," AND") */

:new.N_S_ord = Orderer.N_S_ord;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot update Ord because Orderer does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tI_Ord_del BEFORE INSERT ON Ord_del for each row

- ERwin Builtin Trigger

- INSERT trigger on Ord_delNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Ord Ord_del on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="000246d2", PARENT_OWNER="", PARENT_TABLE="Ord"_OWNER="", CHILD_TABLE="Ord_del"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_7", FK_COLUMNS="ID_ordering""Summ""N_S_ord""Delivery" */count(*) INTO NUMROWSOrd

/* %JoinFKPK(:%New,Ord," = "," AND") */

:new.ID_ordering = Ord.ID_ordering AND

:new.Summ = Ord.Summ AND

:new.N_S_ord = Ord.N_S_ord AND

:new.Delivery = Ord.Delivery;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot insert Ord_del because Ord does not exist.'

);IF;

/* ERwin Builtin Trigger */

/* Courier Ord_del on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Courier"_OWNER="", CHILD_TABLE="Ord_del"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_8", FK_COLUMNS="N_S_cour""Phone_cour""ID_courier" */count(*) INTO NUMROWSCourier

/* %JoinFKPK(:%New,Courier," = "," AND") */

:new.ID_courier = Courier.ID_courier AND

:new.N_S_cour = Courier.N_S_cour AND

:new.Phone_cour = Courier.Phone_cour;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot insert Ord_del because Courier does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tU_Ord_del AFTER UPDATE ON Ord_del for each row

- ERwin Builtin Trigger

- UPDATE trigger on Ord_delNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Ord Ord_del on child update restrict */

/* ERWIN_RELATION:CHECKSUM="000239d1", PARENT_OWNER="", PARENT_TABLE="Ord"_OWNER="", CHILD_TABLE="Ord_del"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_7", FK_COLUMNS="ID_ordering""Summ""N_S_ord""Delivery" */count(*) INTO NUMROWSOrd

/* %JoinFKPK(:%New,Ord," = "," AND") */

:new.ID_ordering = Ord.ID_ordering AND

:new.Summ = Ord.Summ AND

:new.N_S_ord = Ord.N_S_ord AND

:new.Delivery = Ord.Delivery;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot update Ord_del because Ord does not exist.'

);IF;

/* ERwin Builtin Trigger */

/* Courier Ord_del on child update restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Courier"_OWNER="", CHILD_TABLE="Ord_del"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_8", FK_COLUMNS="N_S_cour""Phone_cour""ID_courier" */count(*) INTO NUMROWSCourier

/* %JoinFKPK(:%New,Courier," = "," AND") */

:new.ID_courier = Courier.ID_courier AND

:new.N_S_cour = Courier.N_S_cour AND

:new.Phone_cour = Courier.Phone_cour;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot update Ord_del because Courier does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tD_Orderer AFTER DELETE ON Orderer for each row

- ERwin Builtin Trigger

- DELETE trigger on OrdererNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Orderer Ord on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="0000c238", PARENT_OWNER="", PARENT_TABLE="Orderer"_OWNER="", CHILD_TABLE="Ord"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_5", FK_COLUMNS="N_S_ord" */count(*) INTO NUMROWSOrd

/* %JoinFKPK(Ord,:%Old," = "," AND") */.N_S_ord = :old.N_S_ord;(NUMROWS > 0)_application_error(

,

'Cannot delete Orderer because Ord exists.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tU_Orderer AFTER UPDATE ON Orderer for each row

- ERwin Builtin Trigger

- UPDATE trigger on OrdererNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Orderer Ord on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="0000ebc7", PARENT_OWNER="", PARENT_TABLE="Orderer"_OWNER="", CHILD_TABLE="Ord"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_5", FK_COLUMNS="N_S_ord" */

/* %JoinPKPK(:%Old,:%New," <> "," OR ") */

:old.N_S_ord <> :new.N_S_ordcount(*) INTO NUMROWSOrd

/* %JoinFKPK(Ord,:%Old," = "," AND") */.N_S_ord = :old.N_S_ord;(NUMROWS > 0)_application_error(

,

'Cannot update Orderer because Ord exists.'

);IF;IF;

- ERwin Builtin Trigger;

/ TRIGGER tI_Players BEFORE INSERT ON Players for each row

- ERwin Builtin Trigger

- INSERT trigger on PlayersNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Good Players on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="0001219d", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="Players"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */count(*) INTO NUMROWSGood

/* %JoinFKPK(:%New,Good," = "," AND") */

:new.ID_good = Good.ID_good AND

:new.Price = Good.Price AND

:new.Producer = Good.Producer AND

:new.Model = Good.Model AND

:new.Others = Good.Others;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot insert Players because Good does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tU_Players AFTER UPDATE ON Players for each row

- ERwin Builtin Trigger

- UPDATE trigger on PlayersNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Good Players on child update restrict */

/* ERWIN_RELATION:CHECKSUM="0001232a", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="Players"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */count(*) INTO NUMROWSGood

/* %JoinFKPK(:%New,Good," = "," AND") */

:new.ID_good = Good.ID_good AND

:new.Price = Good.Price AND

:new.Producer = Good.Producer AND

:new.Model = Good.Model AND

:new.Others = Good.Others;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot update Players because Good does not exist.'

);IF;

- ERwin Builtin Trigger; TRIGGER tI_Proectors BEFORE INSERT ON Proectors for each row

- ERwin Builtin Trigger

- INSERT trigger on ProectorsNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Good Proectors on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="00011a67", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="Proectors"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */count(*) INTO NUMROWSGood

/* %JoinFKPK(:%New,Good," = "," AND") */

:new.ID_good = Good.ID_good AND

:new.Price = Good.Price AND

:new.Producer = Good.Producer AND

:new.Model = Good.Model AND

:new.Others = Good.Others;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot insert Proectors because Good does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tU_Proectors AFTER UPDATE ON Proectors for each row

- ERwin Builtin Trigger

- UPDATE trigger on ProectorsNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Good Proectors on child update restrict */

/* ERWIN_RELATION:CHECKSUM="00011d9b", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="Proectors"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */count(*) INTO NUMROWSGood

/* %JoinFKPK(:%New,Good," = "," AND") */

:new.ID_good = Good.ID_good AND

:new.Price = Good.Price AND

:new.Producer = Good.Producer AND

:new.Model = Good.Model AND

:new.Others = Good.Others;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot update Proectors because Good does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tI_TV_monit BEFORE INSERT ON TV_monit for each row

- ERwin Builtin Trigger

- INSERT trigger on TV_monitNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Good TV_monit on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="00012519", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="TV_monit"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */count(*) INTO NUMROWSGood

/* %JoinFKPK(:%New,Good," = "," AND") */

:new.ID_good = Good.ID_good AND

:new.Price = Good.Price AND

:new.Producer = Good.Producer AND

:new.Model = Good.Model AND

:new.Others = Good.Others;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot insert TV_monit because Good does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tU_TV_monit AFTER UPDATE ON TV_monit for each row

- ERwin Builtin Trigger

- UPDATE trigger on TV_monitNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Good TV_monit on child update restrict */

/* ERWIN_RELATION:CHECKSUM="00012c81", PARENT_OWNER="", PARENT_TABLE="Òîâàð"_OWNER="", CHILD_TABLE="TV_monit"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */count(*) INTO NUMROWSGood

/* %JoinFKPK(:%New,Good," = "," AND") */

:new.ID_good = Good.ID_good AND

:new.Price = Good.Price AND

:new.Producer = Good.Producer AND

:new.Model = Good.Model AND

:new.Others = Good.Others;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot update TV_monit because Good does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tI_Warehouse BEFORE INSERT ON Warehouse for each row

- ERwin Builtin Trigger

- INSERT trigger on WarehouseNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Internet_store Warehouse on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="0000f534", PARENT_OWNER="", PARENT_TABLE="Internet_store"_OWNER="", CHILD_TABLE="Warehouse"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_1", FK_COLUMNS="ID_store" */count(*) INTO NUMROWSInternet_store

/* %JoinFKPK(:%New,Internet_store," = "," AND") */

:new.ID_store = Internet_store.ID_store;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot insert Warehouse because Internet_store does not exist.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tD_Warehouse AFTER DELETE ON Warehouse for each row

- ERwin Builtin Trigger

- DELETE trigger on WarehouseNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Warehouse Good on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="0000ca01", PARENT_OWNER="", PARENT_TABLE="Warehouse"_OWNER="", CHILD_TABLE="Good"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_2", FK_COLUMNS="ID_warehouse" */count(*) INTO NUMROWSGood

/* %JoinFKPK(Good,:%Old," = "," AND") */.ID_warehouse = :old.ID_warehouse;(NUMROWS > 0)_application_error(

,

'Cannot delete Warehouse because Good exists.'

);IF;

- ERwin Builtin Trigger;

/ TRIGGER tU_Warehouse AFTER UPDATE ON Warehouse for each row

- ERwin Builtin Trigger

- UPDATE trigger on WarehouseNUMROWS INTEGER;

/* ERwin Builtin Trigger */

/* Warehouse Good on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="00020a7b", PARENT_OWNER="", PARENT_TABLE="Warehouse"_OWNER="", CHILD_TABLE="Good"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_2", FK_COLUMNS="ID_warehouse" */

/* %JoinPKPK(:%Old,:%New," <> "," OR ") */

:old.ID_warehouse <> :new.ID_warehousecount(*) INTO NUMROWSGood

/* %JoinFKPK(Good,:%Old," = "," AND") */.ID_warehouse = :old.ID_warehouse;(NUMROWS > 0)_application_error(

,

'Cannot update Warehouse because Good exists.'

);IF;IF;

/* ERwin Builtin Trigger */

/* Internet_store Warehouse on child update restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Internet_store"_OWNER="", CHILD_TABLE="Warehouse"C_VERB_PHRASE="", C2P_VERB_PHRASE="",_CONSTRAINT="R_1", FK_COLUMNS="ID_store" */count(*) INTO NUMROWSInternet_store

/* %JoinFKPK(:%New,Internet_store," = "," AND") */

:new.ID_store = Internet_store.ID_store;(

/* %NotnullFK(:%New," IS NOT NULL AND") */= 0

)_application_error(

,

'Cannot update Warehouse because Internet_store does not exist.'

);IF;

- ERwin Builtin Trigger;


МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ ІНСТИТУТ СПЕЦІАЛЬНОГО ЗВЯЗКУ ТА ЗАХИСТУ ІНФОРМАЦІЇ НАЦІОНАЛЬНОГО ТЕХНІЧНОГО УНІВЕРСИТЕТУ УКРАЇНИ 

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ