Завдання на виконання роботи
У середовищі MySql створити базу даних, яка містить відомості про назви книжок та їх авторів, а також назви та опис жанрів, до яких ці книжки належать. У базі також містяться загальні відомості про авторів. База повинна задовольняти першим трьом принципам нормалізації реляційних баз даних.
У якості прикладу можна цю базу реалізувати у вигляді трьох таблиць.
Перша таблиця Category містить поля – name_category, abstract, де name_category - визначає назву жанра, abstract – більш повний опис тематики даного жанру.
Друга таблиця Author містить поля – author, comment, де author – визначає ініціали автора, comment – визначає основні дані про автора.
Третя таблиця Book містить поля - name_category, author, book, де book – назва книги, author - ПІБ автора, name_categogy – назва категорії до якої належить книга.
Таблиці зв’язані по однойменним полям зв’язками один до багатьох.
Для створення бази даних у середовище MySql необхідно зробити наступні дїї:
1. Використавши програму ssh увійти в систему(ASPLinux7.2) сервера, який має IP адресу 10.0.37.253 під им’ям smit та паролем 123456789. Запустити програму клієнта та підключитися до бази MySql командою :
mysql -u root mysql
Ввести в таблицю USER себе як користувача з паролем, дозволивши роботу тільки з локального хоста , на якому встановлена СУБД MySql, командою:
INSERT INTO user (host,user,password) values ('localhost', '<ім’я користувача>', password('<пароль>'));
Кінець команди позначається знаком “;”.
При цьому інші поля таблиці USER за замовчанням мають значення 'N'. Якщо команда, яка набирається, дуже довга, її можна переносити на інший рядок.
Перевірте успішність виконання операції командою
SELECT * FROM user WHERE user='<ім’я користувача>';
Далі необхідно дозволити повний доступ створеному користувачу до створеної пізніше бази даних у таблиці DB бази MySql за допомогою команди:
INSERT INTO db VALUES ('localhost','my_db',<ім’я користувача>',
-'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
та перевірити успішність виконання операції за допомогою команди:
SELECT * FROM db WHERE user='<ім’я користувача>';
Далі необхідно створити свою базу даних командою :
CREATE DATABASE <ім’я файлу БД>;
та перевірити успішність виконання операції командою:
SHOW DATABASES;
Далі необхідно вийти з клієнта MySql командою
exit;
та вказати СУБД MySql , щоб вона перечитала свої таблиці, використовуючи команду
mysqladmin -u root reload
Тепер необхідно увійти у створену базу даних командою:
mysql -h localhost -D <ім’я файлу БД> -u <ім’я користувача>–p
Після цього вам буде запропоновано ввести пароль. Після введення пароля (символи пароля, які набираються не відображаються на екрані) ви попадаєте у створену вами базу даних <ім’я файлу БД>. Для перевірки наявності таблиць у поточній базі даних необхідно ввести команду :
show tables;
Для створення таблиць необхідно, знаходячись у середовищі бази даних, яка створюється, використувати команду SQL CREATE TABLE. Наприклад для створення таблиці Category необхідно ввести наступну команду:
CREATE TABLE Category (
name_category CHAR(10) NOT NULL,
abstract CHAR(80),
PRIMARY KEY ( name_category ));
Для перегляду структури таблиці, яка створюється необхідно ввести команду:
SHOW FIELDS FROM Category;
Аналогічно створюються інші таблиці бази даних. Для введення даних у створену таблицю можна використувати команду:
INSERT INTO Category (name_category,abstract)
VALUES( “наука”,”литература по естественным наукам но не учебники”);
Для перевірки успішності операції, яка виконується можна ввести команду
SELECT * FROM Category;
Аналогічно заповнюються й інші таблиці бази даних.
Далі необхідно створити HTML документ (назвати, наприклад, lab3.php ), який містить PHP скрипт, що виконує наступні дії:
1. При першому звертанні до документу lab3.php з броузера клієнта (посередництвом URL документа), в броузер клієнта виводиться HTML документ (назвемо його connect_html), що вміщає форму (назвемо її first_form), яка складається з трьох кнопок : Category, Book, Authors та трьох текстових полів, що пояснюють функції кожної кнопки.
2. При натисканні кнопки Category з форми first_form робиться запит методом GET до документу lab3.php. Отримавши запит, PHP скрипт, який міститься у документі, повинен розібрати запит, визначити, що була натиснута кнопка Category та вивести в броузер клієнта новий HTML документ (назвемо його second_html), який містить форму (назвемо її second_form), яка складається з полів вводу: Data_base, Login, Password, Category , кнопок NEXT та PREV і таблиці (назвемо її second_tabl). У полі Data_base вводиться им’я бази даних, що підключається, у полі Login вводиться им’я користувача бази даних, у полі Password вводиться пароль для доступу до необхідної бази даних. У полі Category вводиться або назва жанру або ничого. У випадку заповнених полів Data_base, Login, Password, Category документу second_form та натисканні кнопки NEXT з форми second_form робиться запит до документу lab3.php методом POST. Отримавши запит, PHP скрипт, який міститься у документі lab3.php, повинен розібрати запит, визначити, що була натиснута кнопка NEXT, зчитати вміст відісланих полів форми : Data_base, Login, Password, Category та використовуючи інтерфейс доступу до бази MySql з PHP підключитися до бази даних (им’я якої міститься у Data_Base) з ім’ям користувача, який міститься в Login та паролем, який міститься у Password. Далі, використовуючи вміст поля Category, скрипт повинен зробити запит до підключеної бази даних та отримати назву всіх книг, які відносяться до даного жанру. Далі скрипт у броузер клієнта повинен вивести документ second_html, у якому результати запиту відображаються у таблиці second_tabl. У випадку, якщо поле жанрів Category пусте, скрипт повинен виводити у таблицю second_tabl назви існуючих жанрів. При натисканні кнопки PREV (в second_thml) робиться запит до документу lab3.php, який у броузер клієнта повинен відобразити документ connect_html.
3.. При натискані кнопки Book з форми first_form робиться запит методом GET до документу lab3.php. Отримавши запит, PHP скрипт, який міститься у документі, повинен розібрати запит, визначити, що була натиснута кнопка Book та вивести у броузер клієнта новий HTML документ (назвемо його third_html), який містить форму (назвемо її third_form), що складається з полів вводу: Data_base, Login, Password, Book , кнопок NEXT і PREV та таблиці, яка складається з двох полів (назвемо її thіrd_tabl). У полі Data_base вводиться ім’я бази даних, що підключається, у полі Login вводиться ім’я користувача бази даних, у полі Password вводиться пароль для доступу до необхідної бази даних. У полі Book вводиться назва книги про яку необхідно отримати звіт. У випадку заповнених полів Data_base, Login, Password, Book документа thіrd_form та натисканні кнопки NEXT з форми thіrd_form робиться запит до документу lab3.php методом POST. Отримавши запит, PHP скрипт, який міститься в документі lab3.php, повинен розібрати запит, визначити, що була натиснута кнопка NEXT, зчитати вміст відісланих полів форми: Data_base, Login, Password, Book та,0 використовуючи інтерфейс доступу до бази MySql з PHP, підключитися до бази даних (ім’я якої міститься у Data_Base) з ім’ям користувача, яке міститься у Login та паролем, який міститься у Password. Далі, використовуючи вміст поля Book, скрипт повинен зробити запит до підключеної бази даних та за назвою книги отримати ім’я автора та короткий зміст книги. Далі, скрипт у броузер клієнта повинен вивести документ thіrd_html, у якому результати запиту відображаються у таблиці thіrd_tabl. При натисканні кнопки PREV (у second_thml) робиться запит до документу lab3.php, який у броузер клієнта повинен відображати документ connect_html.
4. При натисканні кнопки Author із форми first_form робиться запит методом GET до документу lab3.php. Отримавши запит, PHP скрипт, що міститься у документі, повинен розібрати запит, визначити, що була натиснута кнопка Book та вивести у броузер клієнта новий HTML документ (назвемо його forth_html), який містить форму (назвемо її forth_form), що складається з полів вводу: Data_base, Login, Password, Author , кнопок NEXT та PREV та двох таблиць. Перша таблиця (назвемо її auth4_tabl) складається з одного поля. Друга таблиця (назвемо її book4_tabl) складається з одного поля та 10 рядків. У полі Data_base вводиться ім’я бази даних, у полі Login вводиться ім’я користувача бази даних, у полі Password вводиться пароль для доступу до необхідної бази даних. У полі Author вводиться ім’я автора, про якого необхідно отримати звіт. У випадку заповнених полів Data_base, Login, Password, Author документа forth_form та натисканні кнопки NEXT з форми forth_form робиться запит до документу lab3.php методом POST. Отримавши запит, PHP-скрипт, що міститься у документі lab3.php, повинен розібрати запит, визначити, що була натиснута кнопка NEXT, зчитати вміст відісланих полів форми : Data_base, Login, Password, Author та, використовуючи інтерфейс доступу до бази MySql з PHP, підключитися до бази даних (ім’я якої міститься у Data_Base) з ім’ям користувача, яке міститься у Login та паролем, який міститься у Password. Далі, використовуючи вміст поля Author, скрипт повинен зробити запит до бази даних та за ім’ям автора (поле Author) отримати назви книжок, написаних цим автором та короткі відомості про автора. Далі скрипт у броузер клієнта повинен вивести документ forth_html, у якому відображаються результати запиту: у таблиці auth4_tabl повинні відображатися короткі відомості про автора, а у book4_tabl повинні відображатися назви книжок, написаних цим автором. При натисканні кнопки PREV (у forth_thml) робиться запит до документу lab3.php, який у броузер клієнта повинен відображати документ connect_html.
3.3 Контрольні питання
3.3.1 Основні команди мови SQL.
3.3.2 Загальний алгоритм роботи з базами даних.
3.3.3 Основні функції PHP для роботи із СКБД MySQL.
3.3.4 Права доступу в СКБД MySQL.