- •Луцький національний технічний університет
- •Організація баз даних
- •Зміст Вступ
- •1 Теоретичні відомості
- •1.1 Установка mysql під Win9x/nt/2000
- •1.2 Знайомство з mysql-front
- •1.3 Загальна характеристика мови sql
- •1.4 Операції над схемою бази даних
- •2 Завдання на контрольну роботу
- •2.1 Групові завдання
- •2.2 Індивідуальні завдання
- •3 Приклад виконання завдання Постановка задачі.
- •Побудова концептуальної моделі бази даних
- •Створення та заповнення бази даних
- •Sql-запити
- •Віртуальні таблиці
- •Трансакції
- •Перелік рекомендованих джерел
3 Приклад виконання завдання Постановка задачі.
База даних – Персональні комп’ютери. Відомості, які необхідно фіксувати: тип процесора; тактова частота; об'єм ОЗУ; об'єм жорсткого диска; дата складання; кількість usb-портів; розмір монітора; тип монітора; встановлена ОС; дата продажу; гарантія; магазин; адреса магазину; телефон магазину; прізвище та ініціали власника магазину.
Завдання
Спроектувати структуру бази даних.
Написати SQL-запити для створення бази даних.
Заповнити базу даних, використовуючи SQL-оператори.
Виконати запити :
Запит 1. Знайти в якому магазині скільки було продано комп’ютерів.
Запит 2. Вивести параметри комп’ютерів, які ще на гарантії, та назви магазинів, де їх могли купити, відсортовані в алфавітному порядку.
Запит 3. Знайти на якій вулиці найбільше комп’ютерних магазинів та їх кількість.
Запит 4. Написати трансакцію, в якій виконати наступні дії:
змінити номер телефону в магазині Спрайт;
змінити всі двоцифрові номери будинків, що закінчуються п’ятіркою на 1;
відмінити останню дію;
вивести назви магазинів прописними літерами, їх адреси та телефони.
Побудова концептуальної моделі бази даних
В предметній області можна виділити два об’єкти – комп’ютери та магазини, тому логічно представити базу даних у вигляді відповідних відношень поділивши вхідну інформацію наступним чином:
Магазин |
|
Комп’ютер |
назва |
|
тип процесора |
адреса |
|
тактова частота |
телефон |
|
об’єм ОЗУ |
прізвище та ініціали власника |
|
об'єм жорсткого диска |
|
|
дата складання |
|
|
кількість usb-портів |
|
|
розмір монітора |
|
|
тип монітора |
|
|
операційна система |
|
|
дата продажу |
|
|
термін гарантії |
|
|
в якому магазині куплений |
Виходячи з того, що атрибути повинні бути атомарними (неподільними), адресу магазину доцільно розділити на вулицю та номер будинку, щоб мати змогу потім сортувати магазини по вулицях.
В одному магазині може продаватися довільна кількість комп’ютерів і однакові комп’ютери можуть продаватися в різних магазинах, тому тут має місце зв’язок «багато-до-багатьох»:
Напрями стрілок вказують, який із об’єктів повинен вказувати на зв’язаний з ним об’єкт. Для зв’язків такого типу потрібно створити додатковий проміжний об’єкт, який міститиме дані про обидва зв’язані об’єкти і зв’язок «багато-до-багатьох» таким чином замінимо парою зв’язків «один-до-багатьох»:
Цю схему й покладемо в основу нашої бази даних.
Зведемо отриману нами інформацію в таблиці.
Ім’я об’єкту: shop | ||
ім'я атрибуту |
тип даних атрибуту |
примітка |
id_shop |
ціле число |
код |
name_shop |
стрічка змінної довжини |
назва |
street |
стрічка змінної довжини |
вулиця |
house |
ціле число |
будинок |
phone |
ціле число |
телефон |
vlasnuk |
стрічка змінної довжини |
прізвище та ініціали власника |
Ім’я об’єкту: komp | ||
ім'я атрибуту |
тип даних атрибуту |
примітка |
id_komp |
ціле число |
код |
proc |
стрічка змінної довжини |
тип процесора |
t_ch |
ціле число |
тактова частота |
OZU |
ціле число |
об’єм ОЗУ |
vint |
ціле число |
об'єм жорсткого диска |
sklad |
дата |
дата складання |
kil_usb |
ціле число |
кількість usb-портів |
mon_size |
ціле число |
розмір монітора |
mon_type |
стрічка змінної довжини |
тип монітора |
OS |
стрічка змінної довжини |
операційна система |
prod_data |
дата |
дата продажу |
garant |
ціле число |
термін гарантії |
Ім’я об’єкту: zvjaz | ||
ім'я атрибуту |
тип даних атрибуту |
примітка |
id_komp |
ціле число |
посилання на первинний ключ об’єкта komp |
id_shop |
ціле число |
посилання на первинний ключ об’єкта shop |
Отже, концептуальна модель бази даних матиме вигляд: