asyan.org
добавить свой файл
1

ДНІПРОПЕТРОВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ІМЕНІ ОЛЕСЯ ГОНЧАРА

ФАКУЛЬТЕТ ПРИКЛАДНОЇ МАТЕМАТИКИ

КАФЕДРА МАТЕМАТИЧНОГО ЗАБЕЗПЕЧЕННЯ ЕОМ


ЗВІТ

з лабораторної роботи №3

з дисципліни:

“Бази даних та інформаційні системи”


Виконав:

Студент групи ПМ-08-2

Бойко Дмитро Вадимович

Перевірив:

старший викладач

Мащенко Леонід Володимирович

Зміст


Зміст 2

Постановка задачі. 3

Опис ходу розв’язання. 4

Опис інтерфейсу (керівництво користувача) 13

Тестування з коментарями 16

Висновки 18



^

Постановка задачі.


Проінсталювати MySQL Server будь-якої версії. На основі предметної області курсової роботи створити базу даних, що містить не менше п’яти таблиць.

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

Реалізувати бізнес-правила, що забезпечують цілісність між таблицями там, де це передбачено предметною областю (засобами тригерів, збережених процедур тощо).

Занести необхідну кількість записів у кожну таблицю.

Сформулювати та реалізувати SQL-запити різних видів складності. Кожен запит протестувати, забезпечити можливість звітування.
^

Опис ходу розв’язання.


На персональний комп’ютер із ОС Microsoft Windows 7 було встановлено СУБД MySQL 5.2. Для розробки програми було використано мову php, та допоміжний пакет denwer. Налаштування бази даних виконувалось за допомоги утиліти phpMyAdmin.
^

1.1Побудова таблиць, структура таблиць


В межах обраної предметної області було виділено наступні об’єкти:

  1. Користувач

    1. Логін

    2. Пароль

    3. Наявність прав продавця

    4. Наявність прав адміністратора

  2. Картка знижки

    1. Номер картки

    2. ПІБ клієнта

    3. Поштовий індекс клієнте

    4. Адреса клієнта

    5. Тип картки

    6. Знижка для цього типу карти

    7. Сума, на яку було здійснено покупки, використовуючи картку

  3. Штатив

    1. Виробник

    2. Модель

  4. Спалах

    1. Виробник

    2. Модель

  5. Об’єктив

    1. Виробник

    2. Модель

    3. Тип

    4. Фокус

    5. Діафрагма

    6. Мінімальна діафрагма

    7. Тип монтування

  6. Пам’ять

    1. Серійний номер

    2. Виробник

    3. Тип

    4. Об’єм пам’яті

    5. Клас швидкості

    6. Швидкість запису/читання в пам’яті цього класу

  7. Фотоапарат

    1. Виробник

    2. Модель

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

    4. Оптичний зум

    5. Дісплей

    6. Тип пам’яті, яку використовує фотоапарат

    7. Матриця

    8. Тип акумуляторів

    9. Тип монтування об’єктиву


^

1.2Встановлення зв’язків


Було виділено атрибути таблиць, які мають набувати однакові значення та утворено зв’язки між таблицями. Це зроблено шляхом встановлення зв’язків через режим дизайну у phpMyAdmin. Зауважимо, що через технічні обставини, що особливою відмінністю MySQL у встановленні зв’язку між таблицями є вимога, щоб відповідні атрибути були проіндексовані.

Таким чином було встановлено зв’язки між таблицями товарів та таблицями з деякими типа та класами характеристик товарів.

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

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

Детально встановлені зв’язки можна спостерігати на схемі у пункті  2.3.

^

1.3Схема зв’язків


За допомоги режиму Designer у phpMyAdmin утворено графічне зображення зв’язків між таблицями.


1.4Тригери


Для заповнення таблиці logs («Журнал операцій») написано три тригери до таблиць «Користувачі», «Користувачі тарифів», «Користувачі додаткових послуг» для того, щоб відображувати актуальні зміни у особистому рахунку користувача.

Тригери (приклад для однієї з таблиць) утворено наступним SQL-запитом:
CREATE

TRIGGER k_discount.cascade_delete

AFTER DELETE ON k_discount

FOR EACH ROW BEGIN

DELETE FROM "k_clients" WHERE clientid= OLD.clientid;

END;
^

1.5Проектування та реалізація запитів


У межах роботи виконано наступні запити:
Запити на відображення всіх таблиць

Реалізація цих запитів виглядає мовою SQL так:

SELECT * FROM k_lens;
^ Запити із вибором

У роботі використано декілька запитів із вибором за певною умовою.
«Показати штатив, з вказаним id

SELECT `tripopid` FROM `k_tripop` WHERE `tripopid`='$id'
^ Запити зі з’єднанням

Розроблено запити, які збираються інформацію з таблиць разом у такому вигляді, якому вони були до нормалізації. Нарпиклад:
Об’єктив, разом із типом кріплення об’єктиву, який йому відповідає.

SELECT

n0.lensid,

n0.manufacturer,

n0.model,

n0.type,

n0.focus,

n0.diaphragm,

n0.mindiaphragm,

n0.mounttype,

n1.type

FROM `k_lens` as n0

LEFT JOIN `k_lensmounttype` as n1

ON n1.lensmountid = n0.mounttype

ORDER BY n0.lensid ASC

Запити на зміну даних
Модифікація даних (видалення, оновлення, додавання записів) в даній предметній області є частою задачею оскільки продавець постійно вносить нові данні та зміни у товари.
Запит на додання нового об’єктиву.

INSERT INTO `k_lens` (

`manufacturer`,

`model`,

`type`,

`focus`,

`diaphragm`,

`mindiaphragm`,

`mounttype`

) VALUES (

'$this->manufacturer',

'$this->model',

'$this->type',

'$this->focus',

'$this->diaphragm',

'$this->mindiaphragm',

'$mounttype'

);

^

1.6Безпека та таємність


Безпека та таємність системи забезпечується наступним чином. У СУБД створено таблицю користувачів в якій кожний юзер може мати додаткові права продавця або адміністратора.

Перед виконанням будь-якої з операцій система перевіряє чи має юзер права для виконання цієї операції.

Звичайні користувачі можуть лише переглядати данні. Користувачі з правами продавця можуть редагувати всі таблиці, окрім таблиці користувачів. Користувачі з правами адміністраторамають привілей редагування таблиці «користувачі».

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


^

Опис інтерфейсу (керівництво користувача)


Робота адміністратора із системою розпочинається із входу до системи. За замовчуванням у системі це користувач admin з паролем admin1. Пароль рекомендується змінити після першого входу, з метою безпеки.



Після підключення з’явиться можливість доступу до однієї із структурних частин програми.



Зайшовши до адмін-інтерфейсу адміністратор може або переглянути таблицю користувачів, або перейти до її редагування.



Відкривши редагування користувачів адміністратор може редагувати користувачів, змінювати права доступу (продавець, адміністратор) або додавати нових користувачів.




Присутня можливість видалення записів.

Робота користувача із системою також розпочинається із входу у систему. За замовчуванням у СУБД зареєстровано 1 користувач, user із паролем user1.

Зайшовши користувач має лише одну можливість вибору: перегляд таблиць.



Скориставшись нею користувач бачить варіанти перегляду таблиці, та які із них він хоче переглянути.



Обравши один із варіантів користувач побачить його у вигляді таблиці:


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



Обравши один із варіантів продавець отримує доступ до редагування, додавання та видалення інформації.



^

Тестування з коментарями


Увійдемо до системи як продавець. Перейдемо в пункт редагування штативів та додамо новий штатив.



Бачимо що у списку редагування з’явився доданий штатив:



Точно так він додався і у списку перегляду штативів, доступному і для звичайних користувачів.

Увійдемо тепер до системи як адміністратор. Відкриємо таблицю користувачів і додамо нового користувача. Зробимо його продавцем, та спробуємо ввійти з під нього.



Бачимо що було отримано доступ і до панелі продавця, а це значить що додання користувача пройшло успішно.



Редагування записів таблиці працює на місці. При цьому слід зауважити, що всі поля є типізованими.

Висновки


У межах лабораторної роботи засвоєно основні етапи при роботі із СУБД MySQL. Додано таблиці, налаштовано типи атрибутів, заповнено їх даними. Встановлено зв’язки між таблицями для збереження цілісності їх наповнення.

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

Розроблено запити різних типів. Протестовано їх роботу, досліджено швидкість їх виконання із різними обсягами наповнення таблиць.

Налаштовано права доступу до таблиць враховуючи декілька можливих ролей: користувач, продавець, адміністратор.

Вивчено можливості тригерів таблиць у MySQL.

ДНІПРОПЕТРОВСЬК

2011