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

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 30.01.2013
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://allbest.ru/

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

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

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

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

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

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

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

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

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

КИЇВ 2013

ЗМІСТ

АНОТАЦІЯ

  • ВСТУП
  • 1. АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ
    • 1.1 Опис системи
      • 1.1.1 Підсистема створення облікової анкети на сайті
      • 1.1.2 Підсистема контролю платіжної системи
      • 1.1.3 Підсистема обробки замовлення
  • 2. КОНЦЕПТУАЛЬНЕ ПРОЕКТУВАННЯ
    • 2.1 Інформаційні потоки, які присутні в системі
    • 2.2 Побудова ER-діаграми
    • 2.3 Реляційна модель даних
    • 2.4 Діаграма «сутність-зв'язок»
  • 3. ЛОГІЧНА МОДЕЛЬ ДАНИХ
  • 4. ФІЗИЧНЕ ПРОЕКТУВАННЯ БД
  • 5. ГЕНЕРАЦІЯ МОДЕЛІ ДО СКБД
  • ВИСНОВОК
  • СПИСОК ЛІТЕРАТУРИ
  • ДОДАТОК
  • АНОТАЦІЯ

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

Основними засобами для виконання цього завдання були програми 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

Артикул

String

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-моделі й реляційної схеми. Також в ній класифікуються сутності та визначаються первинні й зовнішні ключі,які використаються в даній роботі.

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

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

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

Сьомий етап безпосередньо побудова ER-моделі в CASE-засобі для проектування і документування баз даних AllFusionERwinDataModeler, та представлення в даній курсовій роботі скриншотів вже побудованої, готової для використання, бази даних.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Додаток

SQL-кодБД

CREATE TABLE Camera

Cat_video VARCHAR2(20) NULL ,

Matrix_video VARCHAR2(20) NULL ,

Cat_nos VARCHAR2(20) NULL ,

ID_good VARCHAR2(10) NOT NULL ,

Producer VARCHAR2(35) NOT NULL ,

Model VARCHAR2(35) NOT NULL ,

Price NUMBER(10,2) NOT NULL ,

Others VARCHAR2(200) NOT NULL

);

CREATE UNIQUE INDEX XPKВидеокамеры ON Camera

(ID_good ASC,Producer ASC,Model ASC,Price ASC,Others ASC);

ALTER TABLE Camera

ADD CONSTRAINT XPKВидеокамеры PRIMARY KEY (ID_good,Producer,Model,Price,Others);

CREATE TABLE Courier

(

ID_courier VARCHAR2(10) NOT NULL ,

N_S_cour VARCHAR2(35) NULL ,

Salary NUMBER(10,2) NULL ,

Phone_cour VARCHAR2(20) NULL

);

CREATE UNIQUE INDEX XPKКурьер ON Courier

(ID_courier ASC);

ALTER TABLE Courier

ADD CONSTRAINT XPKКурьер PRIMARY KEY (ID_courier);

CREATE UNIQUE INDEX XAK1Курьер ON Courier

(N_S_cour ASC,Phone_cour ASC,ID_courier ASC);

ALTER TABLE Courier

ADD CONSTRAINT XAK1Курьер UNIQUE (N_S_cour,Phone_cour,ID_courier);

CREATE TABLE Deliverer

(

Company VARCHAR2(30) NOT NULL ,

Ow_comp VARCHAR2(35) NULL ,

Adr_copmp VARCHAR2(50) NULL ,

Phone_comp VARCHAR2(15) NULL

);

CREATE UNIQUE INDEX XPKПоставщик ON Deliverer

(Company ASC);

ALTER TABLE Deliverer

ADD CONSTRAINT XPKПоставщик PRIMARY KEY (Company);

CREATE UNIQUE INDEX XAK1Поставщик ON Deliverer

(Ow_comp ASC);

ALTER TABLE Deliverer

ADD CONSTRAINT XAK1Поставщик UNIQUE (Ow_comp);

CREATE TABLE Delivery

(

ID_get VARCHAR2(10) NOT NULL ,

Date_sign DATE NULL ,

Date_get DATE NULL ,

How_many INTEGER NULL ,

ID_good VARCHAR2(10) NOT NULL ,

Owner VARCHAR2(35) NOT NULL ,

Ow_comp VARCHAR2(35) NOT NULL

);

CREATE UNIQUE INDEX XPKПоставка ON Delivery

(ID_get ASC);

ALTER TABLE Delivery

ADD CONSTRAINT XPKПоставка PRIMARY KEY (ID_get);

CREATE TABLE Good

(

ID_good VARCHAR2(10) NOT NULL ,

Type VARCHAR2(30) NULL ,

Price NUMBER(10,2) NULL ,

Garantee VARCHAR2(20) NULL ,

ID_warehouse VARCHAR2(10) NOT NULL ,

Producer VARCHAR2(35) NULL ,

Model VARCHAR2(35) NULL ,

Others VARCHAR2(200) NULL

);

CREATE UNIQUE INDEX XPKТовар ON Good

(ID_good ASC);

ALTER TABLE Good

ADD CONSTRAINT XPKТовар PRIMARY KEY (ID_good);

ALTER TABLE Good

ADD CONSTRAINT XAK1Товар UNIQUE (ID_good);

CREATE UNIQUE INDEX XAK2Товар ON Good

(ID_good ASC,Producer ASC,Model ASC,Price ASC,Others ASC);

ALTER TABLE Good

ADD CONSTRAINT XAK2Товар UNIQUE (ID_good,Producer,Model,Price,Others);

CREATE TABLE Internet_store

(

ID_store VARCHAR2(10) NOT NULL ,

Web VARCHAR2(40) NULL ,

Physical_adress VARCHAR2(50) NULL ,

Owner VARCHAR2(35) NULL

);

CREATE UNIQUE INDEX XPKИнтернет_магазин ON Internet_store

(ID_store ASC);

ALTER TABLE Internet_store

ADD CONSTRAINT XPKИнтернет_магазин PRIMARY KEY (ID_store);

CREATE UNIQUE INDEX XAK1Интернет_магазин ON Internet_store

(ID_store ASC,Owner ASC);

ALTER TABLE Internet_store

ADD CONSTRAINT XAK1Интернет_магазин UNIQUE (ID_store,Owner);

CREATE TABLE Ord

(

ID_ordering VARCHAR2(10) NOT NULL ,

Summ NUMBER(10,2) NULL ,

ID_good VARCHAR2(10) NOT NULL ,

N_S_ord VARCHAR2(35) NOT NULL ,

Delivery VARCHAR2(35) NULL

);

CREATE UNIQUE INDEX XPKЗаказ ON Ord

(ID_ordering ASC);

ALTER TABLE Ord

ADD CONSTRAINT XPKЗаказ PRIMARY KEY (ID_ordering);

CREATE UNIQUE INDEX XAK1Заказ ON Ord

(ID_ordering ASC,Summ ASC,N_S_ord ASC,Delivery ASC);

ALTER TABLE Ord

ADD CONSTRAINT XAK1Заказ UNIQUE (ID_ordering,Summ,N_S_ord,Delivery);

CREATE TABLE Ord_del

(

ID_ordering VARCHAR2(10) NOT NULL ,

Summ NUMBER(10,2) NOT NULL ,

N_S_ord VARCHAR2(35) NOT NULL ,

Delivery VARCHAR2(35) NOT NULL ,

N_S_cour VARCHAR2(35) NOT NULL ,

Phone_cour VARCHAR2(20) NOT NULL ,

ID_courier VARCHAR2(10) NOT NULL ,

Phone VARCHAR2(20) NOT NULL

);

CREATE TABLE Orderer

(

N_S_ord VARCHAR2(35) NOT NULL ,

Adr_ord VARCHAR2(50) NULL ,

Phone VARCHAR2(20) NULL ,

Birthday DATE NULL ,

Add_info VARCHAR2(200) NULL

);

CREATE UNIQUE INDEX XPKЗаказчик ON Orderer

(N_S_ord ASC);

ALTER TABLE Orderer

ADD CONSTRAINT XPKЗаказчик PRIMARY KEY (N_S_ord);

CREATE UNIQUE INDEX XAK1Заказчик ON Orderer

(Phone ASC,N_S_ord ASC);

ALTER TABLE Orderer

ADD CONSTRAINT XAK1Заказчик UNIQUE (Phone,N_S_ord);

CREATE TABLE Players

(

Cat_player VARCHAR2(20) NULL ,

Display VARCHAR2(20) NULL ,

ID_good VARCHAR2(10) NOT NULL ,

Producer VARCHAR2(35) NOT NULL ,

Model VARCHAR2(35) NOT NULL ,

Price NUMBER(10,2) NOT NULL ,

Others VARCHAR2(200) NOT NULL

);

CREATE UNIQUE INDEX XPKМедиаплееры ON Players

(ID_good ASC,Producer ASC,Model ASC,Price ASC,Others ASC);

ALTER TABLE Players

ADD CONSTRAINT XPKМедиаплееры PRIMARY KEY (ID_good,Producer,Model,Price,Others);

CREATE TABLE Proectors

(

Cat_pro VARCHAR2(20) NULL ,

Phys_def VARCHAR2(20) NULL ,

ID_good VARCHAR2(10) NOT NULL ,

Producer VARCHAR2(35) NOT NULL ,

Model VARCHAR2(35) NOT NULL ,

Price NUMBER(10,2) NOT NULL ,

Others VARCHAR2(200) NOT NULL

);

CREATE UNIQUE INDEX XPKПроекторы ON Proectors

(ID_good ASC,Producer ASC,Model ASC,Price ASC,Others ASC);

ALTER TABLE Proectors

ADD CONSTRAINT XPKПроекторы PRIMARY KEY (ID_good,Producer,Model,Price,Others);

CREATE TABLE TV_monit

(

Diag NUMBER(10,1) NULL ,

Category VARCHAR2(20) NULL ,

Matrix VARCHAR2(20) NULL ,

Definition VARCHAR2(20) NULL ,

ID_good VARCHAR2(10) NOT NULL ,

Producer VARCHAR2(35) NOT NULL ,

Model VARCHAR2(35) NOT NULL ,

Price NUMBER(10,2) NOT NULL ,

Others VARCHAR2(200) NOT NULL

);

CREATE UNIQUE INDEX XPKТелевизоры_и_мониторы ON TV_monit

(ID_good ASC,Producer ASC,Model ASC,Price ASC,Others ASC);

ALTER TABLE TV_monit

ADD CONSTRAINT XPKТелевизоры_и_мониторы PRIMARY KEY (ID_good,Producer,Model,Price,Others);

CREATE TABLE Warehouse

(

ID_warehouse VARCHAR2(10) NOT NULL ,

MAX INTEGER NULL ,

Real INTEGER NULL ,

Adress_warehouse VARCHAR2(50) NULL ,

Rent NUMBER(10,2) NOT NULL ,

ID_store VARCHAR2(10) NOT NULL

);

CREATE UNIQUE INDEX XPKСклад ON Warehouse

(ID_warehouse ASC);

ALTER TABLE Warehouse

ADD CONSTRAINT XPKСклад PRIMARY KEY (ID_warehouse);

ALTER TABLE Warehouse

ADD CONSTRAINT XAK1Склад UNIQUE (ID_warehouse);

ALTER TABLE Camera

ADD (FOREIGN KEY (ID_good, Producer, Model, Price, Others) REFERENCES Good(ID_good, Producer, Model, Price, Others) ON DELETE CASCADE);

ALTER TABLE Delivery

ADD (CONSTRAINT R_3 FOREIGN KEY (ID_good) REFERENCES Good (ID_good));

ALTER TABLE Delivery

ADD (CONSTRAINT R_6 FOREIGN KEY (Ow_comp) REFERENCES Deliverer (Ow_comp));

ALTER TABLE Good

ADD (CONSTRAINT R_2 FOREIGN KEY (ID_warehouse) REFERENCES Warehouse (ID_warehouse));

ALTER TABLE Ord

ADD (CONSTRAINT R_4 FOREIGN KEY (ID_good) REFERENCES Good (ID_good));

ALTER TABLE Ord

ADD (CONSTRAINT R_5 FOREIGN KEY (N_S_ord) REFERENCES Orderer (N_S_ord));

ALTER TABLE Ord_del

ADD (CONSTRAINT R_7 FOREIGN KEY (ID_ordering, Summ, N_S_ord, Delivery) REFERENCES Ord (ID_ordering, Summ, N_S_ord, Delivery));

ALTER TABLE Ord_del

ADD (CONSTRAINT R_8 FOREIGN KEY (N_S_cour, Phone_cour, ID_courier) REFERENCES Courier (N_S_cour, Phone_cour, ID_courier));

ALTER TABLE Players

ADD (FOREIGN KEY (ID_good, Producer, Model, Price, Others) REFERENCES Good(ID_good, Producer, Model, Price, Others) ON DELETE CASCADE);

ALTER TABLE Proectors

ADD (FOREIGN KEY (ID_good, Producer, Model, Price, Others) REFERENCES Good(ID_good, Producer, Model, Price, Others) ON DELETE CASCADE);

ALTER TABLE TV_monit

ADD (FOREIGN KEY (ID_good, Producer, Model, Price, Others) REFERENCES Good(ID_good, Producer, Model, Price, Others) ON DELETE CASCADE);

ALTER TABLE Warehouse

ADD (CONSTRAINT R_1 FOREIGN KEY (ID_store) REFERENCES Internet_store (ID_store));

CREATE TRIGGER tI_Camera BEFORE INSERT ON Camera for each row

-- ERwin Builtin Trigger

-- INSERT trigger on Camera

DECLARE NUMROWS INTEGER;

BEGIN

/* ERwin Builtin Trigger */

/* Good Camera on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="00011fd9", PARENT_OWNER="", PARENT_TABLE="Товар"

CHILD_OWNER="", CHILD_TABLE="Camera"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */

SELECT count(*) INTO NUMROWS

FROM Good

WHERE

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

IF (

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

NUMROWS = 0

)

THEN

raise_application_error(

-20002,

'Cannot insert Camera because Good does not exist.'

);

END IF;

-- ERwin Builtin Trigger

END;

/

CREATE TRIGGER tU_Camera AFTER UPDATE ON Camera for each row

-- ERwin Builtin Trigger

-- UPDATE trigger on Camera

DECLARE NUMROWS INTEGER;

BEGIN

/* ERwin Builtin Trigger */

/* Good Camera on child update restrict */

/* ERWIN_RELATION:CHECKSUM="000122c9", PARENT_OWNER="", PARENT_TABLE="Товар"

CHILD_OWNER="", CHILD_TABLE="Camera"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */

SELECT count(*) INTO NUMROWS

FROM Good

WHERE

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

IF (

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

NUMROWS = 0

)

THEN

raise_application_error(

-20007,

'Cannot update Camera because Good does not exist.'

);

END IF;

-- ERwin Builtin Trigger

END;

/

CREATE TRIGGER tD_Courier AFTER DELETE ON Courier for each row

-- ERwin Builtin Trigger

-- DELETE trigger on Courier

DECLARE NUMROWS INTEGER;

BEGIN

/* ERwin Builtin Trigger */

/* Courier Ord_del on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="000102b6", PARENT_OWNER="", PARENT_TABLE="Courier"

CHILD_OWNER="", CHILD_TABLE="Ord_del"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_8", FK_COLUMNS="N_S_cour""Phone_cour""ID_courier" */

SELECT count(*) INTO NUMROWS

FROM Ord_del

WHERE

/* %JoinFKPK(Ord_del,:%Old," = "," AND") */

Ord_del.ID_courier = :old.ID_courier AND

Ord_del.N_S_cour = :old.N_S_cour AND

Ord_del.Phone_cour = :old.Phone_cour;

IF (NUMROWS > 0)

THEN

raise_application_error(

-20001,

'Cannot delete Courier because Ord_del exists.'

);

END IF;

-- ERwin Builtin Trigger

END;

/

CREATE TRIGGER tU_Courier AFTER UPDATE ON Courier for each row

-- ERwin Builtin Trigger

-- UPDATE trigger on Courier

DECLARE NUMROWS INTEGER;

BEGIN

/* ERwin Builtin Trigger */

/* Courier Ord_del on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="00012249", PARENT_OWNER="", PARENT_TABLE="Courier"

CHILD_OWNER="", CHILD_TABLE="Ord_del"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_8", FK_COLUMNS="N_S_cour""Phone_cour""ID_courier" */

IF

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

:old.ID_courier <> :new.ID_courier

THEN

SELECT count(*) INTO NUMROWS

FROM Ord_del

WHERE

/* %JoinFKPK(Ord_del,:%Old," = "," AND") */

Ord_del.ID_courier = :old.ID_courier AND

Ord_del.N_S_cour = :old.N_S_cour AND

Ord_del.Phone_cour = :old.Phone_cour;

IF (NUMROWS > 0)

THEN

raise_application_error(

-20005,

'Cannot update Courier because Ord_del exists.'

);

END IF;

END IF;

-- ERwin Builtin Trigger

END;

/

CREATE TRIGGER tD_Deliverer AFTER DELETE ON Deliverer for each row

-- ERwin Builtin Trigger

-- DELETE trigger on Deliverer

DECLARE NUMROWS INTEGER;

BEGIN

/* ERwin Builtin Trigger */

/* Deliverer Delivery on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="0000d933", PARENT_OWNER="", PARENT_TABLE="Deliverer"

CHILD_OWNER="", CHILD_TABLE="Delivery"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_6", FK_COLUMNS="Ow_comp" */

SELECT count(*) INTO NUMROWS

FROM Delivery

WHERE

/* %JoinFKPK(Delivery,:%Old," = "," AND") */

Delivery.Ow_comp = :old.Ow_comp;

IF (NUMROWS > 0)

THEN

raise_application_error(

-20001,

'Cannot delete Deliverer because Delivery exists.'

);

END IF;

-- ERwin Builtin Trigger

END;

/

CREATE TRIGGER tU_Deliverer AFTER UPDATE ON Deliverer for each row

-- ERwin Builtin Trigger

-- UPDATE trigger on Deliverer

DECLARE NUMROWS INTEGER;

BEGIN

/* ERwin Builtin Trigger */

/* Deliverer Delivery on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="0000fde4", PARENT_OWNER="", PARENT_TABLE="Deliverer"

CHILD_OWNER="", CHILD_TABLE="Delivery"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_6", FK_COLUMNS="Ow_comp" */

IF

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

:old.Company <> :new.Company

THEN

SELECT count(*) INTO NUMROWS

FROM Delivery

WHERE

/* %JoinFKPK(Delivery,:%Old," = "," AND") */

Delivery.Ow_comp = :old.Ow_comp;

IF (NUMROWS > 0)

THEN

raise_application_error(

-20005,

'Cannot update Deliverer because Delivery exists.'

);

END IF;

END IF;

-- ERwin Builtin Trigger

END;

/

CREATE TRIGGER tI_Delivery BEFORE INSERT ON Delivery for each row

-- ERwin Builtin Trigger

-- INSERT trigger on Delivery

DECLARE NUMROWS INTEGER;

BEGIN

/* ERwin Builtin Trigger */

/* Good Delivery on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="0001d879", PARENT_OWNER="", PARENT_TABLE="Good"

CHILD_OWNER="", CHILD_TABLE="Delivery"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_3", FK_COLUMNS="ID_good" */

SELECT count(*) INTO NUMROWS

FROM Good

WHERE

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

:new.ID_good = Good.ID_good;

IF (

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

NUMROWS = 0

)

THEN

raise_application_error(

-20002,

'Cannot insert Delivery because Good does not exist.'

);

END IF;

/* ERwin Builtin Trigger */

/* Deliverer Delivery on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Deliverer"

CHILD_OWNER="", CHILD_TABLE="Delivery"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_6", FK_COLUMNS="Ow_comp" */

SELECT count(*) INTO NUMROWS

FROM Deliverer

WHERE

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

:new.Ow_comp = Deliverer.Ow_comp;

IF (

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

NUMROWS = 0

)

THEN

raise_application_error(

-20002,

'Cannot insert Delivery because Deliverer does not exist.'

);

END IF;

-- ERwin Builtin Trigger

END;

/

CREATE TRIGGER tU_Delivery AFTER UPDATE ON Delivery for each row

-- ERwin Builtin Trigger

-- UPDATE trigger on Delivery

DECLARE NUMROWS INTEGER;

BEGIN

/* ERwin Builtin Trigger */

/* Good Delivery on child update restrict */

/* ERWIN_RELATION:CHECKSUM="0001d0a0", PARENT_OWNER="", PARENT_TABLE="Good"

CHILD_OWNER="", CHILD_TABLE="Delivery"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_3", FK_COLUMNS="ID_good" */

SELECT count(*) INTO NUMROWS

FROM Good

WHERE

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

:new.ID_good = Good.ID_good;

IF (

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

NUMROWS = 0

)

THEN

raise_application_error(

-20007,

'Cannot update Delivery because Good does not exist.'

);

END IF;

/* ERwin Builtin Trigger */

/* Deliverer Delivery on child update restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Deliverer"

CHILD_OWNER="", CHILD_TABLE="Delivery"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_6", FK_COLUMNS="Ow_comp" */

SELECT count(*) INTO NUMROWS

FROM Deliverer

WHERE

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

:new.Ow_comp = Deliverer.Ow_comp;

IF (

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

NUMROWS = 0

)

THEN

raise_application_error(

-20007,

'Cannot update Delivery because Deliverer does not exist.'

);

END IF;

-- ERwin Builtin Trigger

END;

/

CREATE TRIGGER tI_Good BEFORE INSERT ON Good for each row

-- ERwin Builtin Trigger

-- INSERT trigger on Good

DECLARE NUMROWS INTEGER;

BEGIN

/* ERwin Builtin Trigger */

/* Warehouse Good on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="0000ef47", PARENT_OWNER="", PARENT_TABLE="Warehouse"

CHILD_OWNER="", CHILD_TABLE="Good"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_2", FK_COLUMNS="ID_warehouse" */

SELECT count(*) INTO NUMROWS

FROM Warehouse

WHERE

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

:new.ID_warehouse = Warehouse.ID_warehouse;

IF (

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

NUMROWS = 0

)

THEN

raise_application_error(

-20002,

'Cannot insert Good because Warehouse does not exist.'

);

END IF;

-- ERwin Builtin Trigger

END;

/

CREATE TRIGGER tD_Good AFTER DELETE ON Good for each row

-- ERwin Builtin Trigger

-- DELETE trigger on Good

DECLARE NUMROWS INTEGER;

BEGIN

/* ERwin Builtin Trigger */

/* Good Delivery on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="00056dc4", PARENT_OWNER="", PARENT_TABLE="Good"

CHILD_OWNER="", CHILD_TABLE="Delivery"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_3", FK_COLUMNS="ID_good" */

SELECT count(*) INTO NUMROWS

FROM Delivery

WHERE

/* %JoinFKPK(Delivery,:%Old," = "," AND") */

Delivery.ID_good = :old.ID_good;

IF (NUMROWS > 0)

THEN

raise_application_error(

-20001,

'Cannot delete Good because Delivery exists.'

);

END IF;

/* ERwin Builtin Trigger */

/* Good Ord on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Good"

CHILD_OWNER="", CHILD_TABLE="Ord"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_4", FK_COLUMNS="ID_good" */

SELECT count(*) INTO NUMROWS

FROM Ord

WHERE

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

Ord.ID_good = :old.ID_good;

IF (NUMROWS > 0)

THEN

raise_application_error(

-20001,

'Cannot delete Good because Ord exists.'

);

END IF;

/* ERwin Builtin Trigger */

/* Good TV_monit on parent delete cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Товар"

CHILD_OWNER="", CHILD_TABLE="TV_monit"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */

DELETE FROM TV_monit

WHERE

/* %JoinFKPK(TV_monit,:%Old," = "," AND") */

TV_monit.ID_good = :old.ID_good AND

TV_monit.Price = :old.Price AND

TV_monit.Producer = :old.Producer AND

TV_monit.Model = :old.Model AND

TV_monit.Others = :old.Others;

/* ERwin Builtin Trigger */

/* Good Players on parent delete cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Товар"

CHILD_OWNER="", CHILD_TABLE="Players"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */

DELETE FROM Players

WHERE

/* %JoinFKPK(Players,:%Old," = "," AND") */

Players.ID_good = :old.ID_good AND

Players.Price = :old.Price AND

Players.Producer = :old.Producer AND

Players.Model = :old.Model AND

Players.Others = :old.Others;

/* ERwin Builtin Trigger */

/* Good Camera on parent delete cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Товар"

CHILD_OWNER="", CHILD_TABLE="Camera"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */

DELETE FROM Camera

WHERE

/* %JoinFKPK(Camera,:%Old," = "," AND") */

Camera.ID_good = :old.ID_good AND

Camera.Price = :old.Price AND

Camera.Producer = :old.Producer AND

Camera.Model = :old.Model AND

Camera.Others = :old.Others;

/* ERwin Builtin Trigger */

/* Good Proectors on parent delete cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Товар"

CHILD_OWNER="", CHILD_TABLE="Proectors"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */

DELETE FROM Proectors

WHERE

/* %JoinFKPK(Proectors,:%Old," = "," AND") */

Proectors.ID_good = :old.ID_good AND

Proectors.Price = :old.Price AND

Proectors.Producer = :old.Producer AND

Proectors.Model = :old.Model AND

Proectors.Others = :old.Others;

-- ERwin Builtin Trigger

END;

/

CREATE TRIGGER tU_Good AFTER UPDATE ON Good for each row

-- ERwin Builtin Trigger

-- UPDATE trigger on Good

DECLARE NUMROWS INTEGER;

BEGIN

/* ERwin Builtin Trigger */

/* Good Delivery on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="0008c572", PARENT_OWNER="", PARENT_TABLE="Good"

CHILD_OWNER="", CHILD_TABLE="Delivery"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_3", FK_COLUMNS="ID_good" */

IF

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

:old.ID_good <> :new.ID_good

THEN

SELECT count(*) INTO NUMROWS

FROM Delivery

WHERE

/* %JoinFKPK(Delivery,:%Old," = "," AND") */

Delivery.ID_good = :old.ID_good;

IF (NUMROWS > 0)

THEN

raise_application_error(

-20005,

'Cannot update Good because Delivery exists.'

);

END IF;

END IF;

/* ERwin Builtin Trigger */

/* Good Ord on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Good"

CHILD_OWNER="", CHILD_TABLE="Ord"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_4", FK_COLUMNS="ID_good" */

IF

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

:old.ID_good <> :new.ID_good

THEN

SELECT count(*) INTO NUMROWS

FROM Ord

WHERE

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

Ord.ID_good = :old.ID_good;

IF (NUMROWS > 0)

THEN

raise_application_error(

-20005,

'Cannot update Good because Ord exists.'

);

END IF;

END IF;

/* ERwin Builtin Trigger */

/* Good TV_monit on parent update cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Товар"

CHILD_OWNER="", CHILD_TABLE="TV_monit"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */

IF

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

:old.ID_good <> :new.ID_good

THEN

UPDATE TV_monit

SET

/* %JoinFKPK(TV_monit,:%New," = ",",") */

TV_monit.ID_good = :new.ID_good,

TV_monit.Price = :new.Price,

TV_monit.Producer = :new.Producer,

TV_monit.Model = :new.Model,

TV_monit.Others = :new.Others

WHERE

/* %JoinFKPK(TV_monit,:%Old," = "," AND") */

TV_monit.ID_good = :old.ID_good AND

TV_monit.Price = :old.Price AND

TV_monit.Producer = :old.Producer AND

TV_monit.Model = :old.Model AND

TV_monit.Others = :old.Others;

END IF;

/* ERwin Builtin Trigger */

/* Good Players on parent update cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Товар"

CHILD_OWNER="", CHILD_TABLE="Players"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */

IF

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

:old.ID_good <> :new.ID_good

THEN

UPDATE Players

SET

/* %JoinFKPK(Players,:%New," = ",",") */

Players.ID_good = :new.ID_good,

Players.Price = :new.Price,

Players.Producer = :new.Producer,

Players.Model = :new.Model,

Players.Others = :new.Others

WHERE

/* %JoinFKPK(Players,:%Old," = "," AND") */

Players.ID_good = :old.ID_good AND

Players.Price = :old.Price AND

Players.Producer = :old.Producer AND

Players.Model = :old.Model AND

Players.Others = :old.Others;

END IF;

/* ERwin Builtin Trigger */

/* Good Camera on parent update cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Товар"

CHILD_OWNER="", CHILD_TABLE="Camera"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */

IF

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

:old.ID_good <> :new.ID_good

THEN

UPDATE Camera

SET

/* %JoinFKPK(Camera,:%New," = ",",") */

Camera.ID_good = :new.ID_good,

Camera.Price = :new.Price,

Camera.Producer = :new.Producer,

Camera.Model = :new.Model,

Camera.Others = :new.Others

WHERE

/* %JoinFKPK(Camera,:%Old," = "," AND") */

Camera.ID_good = :old.ID_good AND

Camera.Price = :old.Price AND

Camera.Producer = :old.Producer AND

Camera.Model = :old.Model AND

Camera.Others = :old.Others;

END IF;

/* ERwin Builtin Trigger */

/* Good Proectors on parent update cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Товар"

CHILD_OWNER="", CHILD_TABLE="Proectors"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="is_a", FK_COLUMNS="ID_good""Producer""Model""Price""Others" */

IF

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

:old.ID_good <> :new.ID_good

THEN

UPDATE Proectors

SET

/* %JoinFKPK(Proectors,:%New," = ",",") */

Proectors.ID_good = :new.ID_good,

Proectors.Price = :new.Price,

Proectors.Producer = :new.Producer,

Proectors.Model = :new.Model,

Proectors.Others = :new.Others

WHERE

/* %JoinFKPK(Proectors,:%Old," = "," AND") */

Proectors.ID_good = :old.ID_good AND

Proectors.Price = :old.Price AND

Proectors.Producer = :old.Producer AND

Proectors.Model = :old.Model AND

Proectors.Others = :old.Others;

END IF;

/* ERwin Builtin Trigger */

/* Warehouse Good on child update restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Warehouse"

CHILD_OWNER="", CHILD_TABLE="Good"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_2", FK_COLUMNS="ID_warehouse" */

SELECT count(*) INTO NUMROWS

FROM Warehouse

WHERE

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

:new.ID_warehouse = Warehouse.ID_warehouse;

IF (

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

NUMROWS = 0

)

THEN

raise_application_error(

-20007,

'Cannot update Good because Warehouse does not exist.'

);

END IF;

-- ERwin Builtin Trigger

END;

CREATE TRIGGER tD_Internet_store AFTER DELETE ON Internet_store for each row

-- ERwin Builtin Trigger

-- DELETE trigger on Internet_store

DECLARE NUMROWS INTEGER;

BEGIN

/* ERwin Builtin Trigger */

/* Internet_store Warehouse on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="0000d752", PARENT_OWNER="", PARENT_TABLE="Internet_store"

CHILD_OWNER="", CHILD_TABLE="Warehouse"

P2C_VERB_PHRASE="", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_1", FK_COLUMNS="ID_store" */

SELECT count(*) INTO NUMROWS

FROM Warehouse

WHERE

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

Warehouse.ID_store = :old.ID_store;

IF (NUMROWS > 0)

THEN

raise_application_error(

-20001,

'Cannot delete Internet_store because Warehouse exists.'

);

END IF;

-- ERwin Builtin Trigger

END;

/

CREATE TRIGGER tU_Internet_store AFTER UPDATE ON Internet_store for each row


Подобные документы

  • Основні підходи до проектування баз даних. Опис сайту Інтернет-магазину, характеристика його підсистем для обробки анкет і запитів користувачів. Розробка концептуальної, інфологічної, даталогічної, фізичної моделей даних. Побудова ER-моделі в CASE-засоби.

    курсовая работа [2,3 M], добавлен 01.02.2013

  • Системний аналіз бази даних за вхідною та вихідною документацією, визначення сутностей, атрибутів, зв’язків. Створення логічної моделі бази даних із застосуванням нормалізації, алгоритм її роботи. Розробка програмного забезпечення та інтерфейсу СУБД.

    курсовая работа [946,8 K], добавлен 02.07.2015

  • Специфікація вимог для кожного з двох користувачів. Концептуальне проектування бази даних. Визначення типів сутностей та зв’язків, доменів. Перетворення концептуальної моделі даних у логічну, визначення набору відношень, підтримки цілісності даних.

    курсовая работа [55,1 K], добавлен 15.03.2015

  • Проектування бази даних предметної області "Магазин будівельних матеріалів". Аналіз сукупності вхідних і вихідних даних, шляхи удосконалення інформаційної системи обліку товару. Організація інформаційної бази, розробка логічної і фізичної моделі.

    курсовая работа [559,2 K], добавлен 09.05.2016

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

    курсовая работа [1,4 M], добавлен 24.10.2010

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

    курсовая работа [1,5 M], добавлен 11.12.2011

  • Аналіз відомих підходів до проектування баз даних. Ієрархічна, мережева та реляційна моделі представлення даних, їх особливості. Концептуальне проектування: приклад документів, побудова ER-діаграми, модель "сутність-зв'язок". Побудова фізичної моделі.

    курсовая работа [541,5 K], добавлен 29.01.2013

  • Концептуальна модель бази даних, визначення зв’язків між ними, атрибутів сутностей їх доменів. Створення ORM source model та Database model diagram для бази даних "Автотранспортне підприємство". Генерування ddl-скрипта для роботи в СУБД SQL-Server.

    курсовая работа [47,3 K], добавлен 17.10.2013

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

    курсовая работа [2,3 M], добавлен 26.12.2014

  • Визначення мети створення бази даних магазину та таблиць, які вона повинна містити. Розгляд видів полів та ключів таблиць. Створення запитів, форм, звітів, макросів та модулів. Вибір системи управління базами даних. Реалізація моделі у Microsoft Access.

    курсовая работа [3,8 M], добавлен 20.07.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.