Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РГЗ БД (Муз. магазин).docx
Скачиваний:
2
Добавлен:
10.09.2019
Размер:
708.1 Кб
Скачать

2 Зв’язки бази даних

Для того, щоб забезпечити цілісність даних і забезпечити каскадне оновлення відомостей в різних таблицях, в даній базі даних була використана функція зв'язування таблиць. Таблиці зв’язані по ключовим полям. По правилам:

  • Один-до-одного;

  • Один-до-багатьох;

  • Багатьом-до-багатьом;

  • Багато-до-одного.

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

Для того, щоб зв’язати таблиці, необхідно у вкладці «Робота за базою даних» відкрити схему даних рис.2.1. Вибрати «Додати таблиці» та у вікні позначити ті таблиці між якими потрібно зробити зв’язок. Вибрані таблиці з’являються на формі «Схема даних» рис.2.2. З’єднуємо ці таблиці і у вікні налаштовуємо схему зв’язків. Після налаштування зв’язків натискаємо «створити». На рисунку рис 2.3. видно повністю побудовану схему даних бази даних «Музичний магазин».

Рисунок 2.1 – Пуста схема даних

Рисунок 2.2 – Схема даних без зв’язків

Рисунок 2.3 – Готова схема даних

  1. Sql запити

Запит №1. Запит до однієї таблиці. Запит полягає у тому, щоб вивести назву та модель товару, ціна якого більша за 3000. Запит застосовано для таблиці «Товар». Вибираємо таблицю та поля які потрібно вивести рис.3.1.

Рисунок 3.1 – Конструктор запиту №1

Створюємо SQL запит:

SELECT Товар.Наименование, Товар.Модель, Товар.Цена

FROM Товар

WHERE (((Товар.Цена)>3000));

Результат роботи запиту зображено на рис.3.2.

Рисунок 3.2 – Запит №1

Запит №2. Запит до двох таблиць. Запит застосовано до таблиць «Клієнти» та «Магазин». Його сутність полягає у виведені на екран таблиці що складається з П.І.Б. Клієнтів магазину та дат покупок зроблених цими особами за всю історію магазину.

Добавимо таблиці «Магазин» та «Клієнти» до конструктора запитів, для роботи запиту необхідно вказати зв’язок між цими таблицями рис.3.3. Для підтримання хронологічного порядку вказуємо сортування поля «Дата покупки» по зростанню.

Рисунок 3.3 – Конструктор запиту №2

Створюємо SQL запит:

SELECT Магазин.[Дата покупки], Клиенты.Фамилия, Клиенты.Имя, Клиенты.Отчество

FROM Клиенты INNER JOIN Магазин ON Клиенты.[ID Клиента] = Магазин.[ID Клиента]

ORDER BY Магазин.[Дата покупки];

Результат виконання запиту показано на рис.3.4.

Рисунок 3.4 – Запит №2

Запит №3. Запит до трьох таблиць. Даний запит застосовано до таблиць «Товар», «Менеджери» та «Магазин». Вивести на екран на яку суму і які співробітники продали товар з вказаної дати (з 15.10.2009).

Для реалізації запиту внесемо до конструктора запитів необхідні таблиці та вкажемо зв’язок між ними рис.3.5. Для досягнення запиту необхідно використати групову операцію «Умова» для поля «Дата покупки» та задати вимоги вибірки, для поля «Ціна» встановити операцію суми що автоматично змінить його назву, замінимо стандартну назву на «Сума продаж». Для віх інших встановлюємо групову операцію «Групування». Сортування відбувається по полю «Прізвище» по зростанню. Так як інформація у полі «Дата» не важлива як інформація результату її виводити не треба.

Рисунок 3.5 – Конструктор запиту №3

Створюємо SQL запит:

SELECT Менеджеры.Фамилия, Менеджеры.Имя, Менеджеры.Отчество, Sum(Товар.Цена) AS [Сумма продаж]

FROM Товар INNER JOIN (Менеджеры INNER JOIN Магазин ON Менеджеры.[ID Менеджера] = Магазин.[ID Менеджера]) ON Товар.[ID Товара] = Магазин.[ID Товара]

WHERE (((Магазин.[Дата покупки])>#9/15/2009#))

GROUP BY Менеджеры.Фамилия, Менеджеры.Имя, Менеджеры.Отчество

ORDER BY Менеджеры.Фамилия;

Результат запиту «Сума продаж» показаний на рис.3.6.

Рисунок 3.6 – Запит №3

Запит №4. Довільний запит. Створення запиту на оновлення поля «Ціна» у таблиці «Товар» внаслідок урахування нового коефіцієнту інфляції. Вносимо у конструктор запиту таблицю «Товар», обираємо поле «Ціна» та у рядку «Оновлення» вписуємо «[Цена]*[Введите коэффициент инфляции]» такий рядок при визові запиту змусить вивести на єкран форму куди треба буде вписати коефіцієнт інфляції рис.3.8. У конструкторі цей запит має вигляд рис.3.7.

Рисунок 3.7 – Конструктор запиту №4

Рисунок 3.8 – Форма коефіцієнту інфляції

Створюємо SQL запит:

UPDATE Товар SET Товар.Цена = [Цена]*[Введите коэффициент инфляции];

Після роботи запиту видно, що старі дані у Полі «Ціна» рис.3.9. оновилися і змінені дані зберігаються в оновленій таблиці «Товар» рис.3.10.

Рисунок 3.9 – Таблиця «Товар» до оновлення

Рисунок 3.10 – Таблиця «Товар» після оновлення з коефіцієнтом інфляції 1,2