Розробка бази даних та застосування для Інтернет-магазину відеотехніки
Дослідження підсистем створення облікової анкети на сайті, обробки замовлення та контролю платіжної системи. Проектування концептуальної, логічної і фізичної моделей даних. Визначення в них атрибутів сутностей, типу та розміру. Генерація моделей до СКБД.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 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Розробка бази даних для меблевої фірми. Обстеження і аналіз предметної області та побудова концептуальної, логічної та фізичної моделі цієї бази даних. Використання мови програмування Visual Basic при написанні програмного коду, що обслуговує базу даних.
курсовая работа [1,4 M], добавлен 24.10.2010Проектування бази даних предметної області "Магазин будівельних матеріалів". Аналіз сукупності вхідних і вихідних даних, шляхи удосконалення інформаційної системи обліку товару. Організація інформаційної бази, розробка логічної і фізичної моделі.
курсовая работа [559,2 K], добавлен 09.05.2016Розробка концептуальної і фізичної моделей бази даних по обліку концертних заходів, організаторів, артистів та призерів конкурсів. Код запиту на створення бази даних. Загальні види запитів в інформаційній системі. Розробка програмного коду головної форми.
курсовая работа [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