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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    1,09 Мб
  • Опубликовано:
    2013-01-30
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

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

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

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

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








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

з дисципліни "Організація баз даних та знань - 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

Реєстраційний номер

Number

P

Власник

String


Фізична адреса

String


Web-сайт

String



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

АтрибутТипPrimary/Foreign



Номер складу

Number

P

Власник

String

F

Реєстраційний номер

String

F

Адреса

String


Ємність

Number


В наявності товарів

Number


Вартість оренди

Number



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

Атрибут

Тип

Primary/Foreign

Артикул

String

P

Власник

String

F

Номер складу

Number

F

Категорія

String


Гарантія

String


Виробник

String


Модель

String


Вартість

Number


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

АтрибутТипPrimary/Foreign



Артикул

String

F

Гарантія

String

F

Виробник

String

F

Модель

String

F

Інші характеристики

String

F

Вартість

Number

F

Тип медіаплеєра

String


Наявність дисплею

String



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

АтрибутТипPrimary/Foreign



Артикул

String

F

Гарантія

String

F

Виробник

String

F

Модель

String

F

Інші характеристики

String

F

Вартість

Number

F

Діагональ

Number


Вид

String


Тип матриці

String


Роздільна здатність

String



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

АтрибутТипPrimary/Foreign



Артикул

String

F

Гарантія

String

F

Виробник

String

F

Модель

String

F

Інші характеристики

String

F

Вартість

Number

F

Тип відеокамери

String


Тип носія

String


Тип матриці

String



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

Атрибут

Тип

Primary/Foreign

Артикул

F

Гарантія

String

F

Виробник

String

F

Модель

String

F

Інші характеристики

String

F

Вартість

Number

F

Тип проектора

String


Фізична роздільна здатність

String



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

Атрибут

Тип

Primary/Foreign

Назва компанії

String

P

Власник компанії

String


Адреса компанії

String


Телефон

String



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

Атрибут

Тип

Primary/Foreign

Номер договору

String

P

Власник компанії

String

F

Власник

String

F

Дата підписання

Date


Дата поставки

Date


Кількість товару

Number



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

Атрибут

Тип

Primary/Foreign

Номер замовлення

String

P

Сума замовлення

Number


П. І. Б.

String

F

Контактний телефон

String

F

Артикул

Number

F

Місце доставки

String



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

Атрибут

Тип

Primary/Foreign

П. І. Б.

String

P

Дата народження

String


Адреса місця проживання

String


Контактний телефон

String


Примітки

String



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

Атрибут

Тип

Primary/Foreign

Номер замовлення

String

F

Сума замовлення

Number

F

П. І. Б.

String

F

Контактний телефон

String

F

Місце доставки

String

F

П. І. Б. кур’єра

String


Телефон

String


Табельний номер

String



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

Атрибут

Тип

Primary/Foreign

П. І. Б. кур’єра

String


Табельний номер

String

P

Зарплата

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)

Web

Web-сайт

VARCHAR2 (40)

Physical_adress

Фізична адреса

VARCHAR2 (50)

Owner

Власник

VARCHAR2 (35)


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

Фізична назва

Опис поля

Тип

ID_warehouse

Номер складу

VARCHAR2 (10)

MAX

Ємність

INTEGER

Real

В наявності товарів

INTEGER

Adress_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

Дата підписання

DATE

Date_get

Дата поставки

DATE

How_many

Кількість товару

INTEGER


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

Фізична назва

Опис поля

Тип

ID_ordering

Номер замовлення

VARCHAR2 (10)

Summ

Сума замовлення

NUMBER (10.2)

Delivery

Місце доставки

VARCHAR2 (35)


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

Фізична назва

Опис поля

Тип

N_S_ord

П. І. Б.

VARCHAR2 (35)

Birthday

Дата народження

DATE

Adr_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-моделі в CASE <http://ru.wikipedia.org/wiki/CASE>-засобі для проектування і документування <http://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F> баз даних <http://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%B7%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85> AllFusionERwinDataModeler, та представлення в даній курсовій роботі скриншотів вже побудованої, готової для використання, бази даних.

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

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

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

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

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


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;

/ 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;

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!