Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Method_ЛР_БД(1).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
921.09 Кб
Скачать

1.6 Контрольні питання

1. Наведіть овал-діаграму за завданням викладача (предметна область «форум», «пошукова система» і т. ін.).

2.Для ІЛМ пошукової системи або іншої проведіть датологічне проектування.

3. Розкажіть про типи даних.

Лабораторна робота №2

СТВОРЕННЯ ТАБЛИЦЬ ТА ЇХ ОБ’ЄДНАНЬ. НАПОВНЕННЯ ТАБЛИЦЬ

2.1 Мета роботи

1. Вивчення засобів SQL.

2. Створення бази даних за допомогою HeidiSQL.

3.Об’єднання таблиць.

4. Додавання записів.

5. Оновлення даних.

6. Видалення даних.

2.2 Теоретичні відомості

На основі інфологічного проектування будуємо структуру бази даних (БД), що має три таблиці: users, products і orders.

Кожен запис про замовлення містить в собі інформацію про продукт і користувача. Нам важливо, щоб ці значення були дійсними. Тобто, неприпустима ситуація, коли користувач замовив продукт, а адміністратор його видалив, тоді запис про замовлення став "поламаним" (навіть невідомо, який товар був замовлений). Для збереження цілісності даних таблиці об’єднані зв’язками.

У кожній з таблиць додано поле для формування штучного первинного ключа (РК): userid, prodid і ordid відповідно. Зв’язок таблиць забезпечує механізм зовнішніх ключів. Склад перших двох таблиць зрозумілий. Але замовнику БД знадобилось мати фото замовників. Потрібно додати поле, наприклад, userfeic. Розглянемо детальніше таблицю замовлень. Кожен запис про замовлення містить в собі інформацію про продукт (prodid) і користувача (userid). Діє правило, згідно з яким множина значень поля userid в таблиці замовлень (дочірньої таблиці) не буде перевищувати множини значень ключа userid в таблиці користувачів (батьківської таблиці). Це правило реалізує механізм зовнішніх ключів. Підтримка зовнішніх ключів і транзакцій – це основні відмінності таблиць типу InnoDB від інших типів таблиць MySQL. Вказати тип можна при створенні таблиці:

CREATE TABLE `personal_info` (

`userid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

`name` VARCHAR(20) NOT NULL,

`surname` VARCHAR(20) NOT NULL,

`phone` INT(20) NOT NULL,

`address` VARCHAR(100) NOT NULL,

PRIMARY KEY (`userid`)

) TYPE=InnoDB;

    1. 2.3 Завдання на лабораторну роботу

1. Створити БД з трьох таблиць (варіанти і початок проектування у першій лабораторній роботі), побудувати між ними зв’язки.

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

  2. Перевірити правильність роботи створених обмежень.

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

2.4 Методика виконання

За допомогою інструментального засобу під назвою HeidiSQL виконується створення, редагування і робота з БД.

Спочатку виконуємо дії сесії підключення до сервера. Вводимо root та пароль (1), що був введений при установці MySQL-сервера, тиснемо Save, щоби не вводити ще раз. Нижче Passvord вікна не заповнюємо. Тиснемо унизу Open Connect для підключення до MySQL-сервера.

Створюємо БД. У лівій вкладці бачимо конфігурацію MySQL-сервера – таблиці, що створюються при установці MySQL-сервера. Правою кнопкою клікаємо по цій ділянці. З’являється Create new. Переходимо на Database. В вікні Name задаємо назву створюваної БД, наприклад, test3. Далі встановлюємо кодування, наприклад, utf, та сортування Collation. Нижче виведена команда створення БД – CREATE DATABASE. Тиснемо Ok і у лівій вкладці бачимо БД з ім’ям test3.

Створення таблиці. Тиснемо правою кнопкою на test3 і далі вибираємо Create new > Table. У вікні Name вкладки Table вводимо назву таблиці, що створюється, наприклад, table. Кодування і сортування можливо відрізняються від тих, що є в БД. Для того, щоб MySQL правильно сортував поля з українськими символами – COLLATE (порівняння) в таблицях слід встановити у utf8_unicode_ci. Якщо ж вибрано utf8_bin (для прикладу), то рядок, що починається з «і», ітиме перед рядком, що починається з «а».

Уже існуючу БД можна перетворити двома шляхами, по перше – експортувати в файл, замінити всі utf8_bin на utf8_unicode_ci й імпортувати знову. По друге – замінити значення COLLATE для таблиці в цілому та кожного поля з текстовим типом зокрема.

Тиснемо кнопку Add. Внизу вводимо назву стовпця, наприклад, id. У властивостях стовпця вибираємо тип даних INT. Для цілочислених даних обов’язково встановлюємо довжину, наприклад два знаки. Додаємо інформацію, що це буде первинний ключ – правою кнопкою тиснемо на назві поля Create new Index > PRIMARY. Якщо первинний ключ містить два поля, то виокремлюємо два поля і тиснемо Create new Index > PRIMERY. Якщо id має тип INT, то зручно автоматично збільшувати значення, тому тиснемо Default, ставимо «галочку» навпроти AUTO_INKREMENT. Якщо дані обов’язкові (NOT NULL), то залишаємо без «галочок» Allow Null та Zerofil. Тиснемо Add. Пишемо ім’я наступного стовпця, наприклад сontent, вказуємо тип даних, наприклад, TEXT. Цей тип даних не потребує завдання довжини і т.п. Як бачимо, при редагуванні SQL-запитів підсвічується синтаксис.

В лабораторіях кафедри встановлено MySQL, де тип таблиць InnoDB вибрано за замовчуванням. Для формування зовнішнього ключа тиснемо Foreign Keys, потім Add. У стовпці Columns вибираємо назву стовпця з РК, у стовпці Reference tabl – назву таблиці. Якщо всі назви і типи даних заведені, то перевіряємо скрипт: на вкладці Table тиснемо CREATE code. Якщо все вірно – тиснемо Save. У лівому полі в дереві БД test3 з’явиться таблиця table. Копіюємо скрипт для звіта. У правому полі бачимо структуру таблиці. Якщо по ній переміщатися правою кнопкою, то можливо корегувати і структуру таблиці (додавати стовпці) і міняти властивості стовпців.

Можливо знадобиться кнопка Refresh.

Для структури БД з пункту 2.2 створені таблиці:

CREATE TABLE `users` (

`userid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

`name` VARCHAR(80) NOT NULL,

`surname` VARCHAR(80) NOT NULL,

`userfeic` BLOB NOT NULL,

PRIMARY KEY (`userid`)

)

COLLATE='utf8_general_ci'

ENGINE=InnoDB

AUTO_INCREMENT=8;

CREATE TABLE `products` (

`prodid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

`name` VARCHAR(80) NOT NULL,

PRIMARY KEY (`prodid`)

)

COLLATE='utf8_general_ci'

ENGINE=InnoDB

AUTO_INCREMENT=5;

CREATE TABLE `orders` (

`ordid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

`userid` INT(10) UNSIGNED NOT NULL,

`prodid` INT(10) UNSIGNED NOT NULL,

`price` DOUBLE UNSIGNED NULL DEFAULT NULL,

`qua` INT(10) UNSIGNED NULL DEFAULT NULL,

`data_orrders` DATE NULL DEFAULT NULL,

PRIMARY KEY (`ordid`),

INDEX `FK__users` (`userid`),

INDEX `FK__products` (`prodid`),

CONSTRAINT `FK__products` FOREIGN KEY (`prodid`) REFERENCES `products` (`prodid`) ON DELETE CASCADE,

CONSTRAINT `FK__users` FOREIGN KEY (`userid`) REFERENCES `users` (`userid`) ON UPDATE CASCADE

)

COLLATE='utf8_general_ci'

ENGINE=InnoDB

AUTO_INCREMENT=5;

Наповнення таблиць. Для вводу даних тиснемо спочатку на іконку бази, потім на іконку таблиці, з’являється вкладка Data (праворуч). Стовпець id заповнюється автоматично (AUTO_INCREMENT). Лівою кнопкою тиснемо по імені стовпця content. Вибираємо Insert new (або Insert з клавіатури), вводимо інформацію, тиснемо Enter (можна клацнути по піктограмі і з’явиться поле для вводу Text editor). У стовпець content вводимо ще інформацію, для цього тиснемо Insert new

Для вводу даних у створену таблицю потрібно у вибраній БД знайти назву необхідної таблиці, двічі клацнути по ній мишкою і перейти на вкладку Data.

Рядок …FOREIGN KEY (`userid`) REFERENCES `users` (`userid`)… задає зовнішній ключ і буквально означає наступне: призначити полю userid з таблиці orders зовнішній ключ на поле userid з таблиці users.

Тепер ми не зможемо створити запис в таблиці orders зі значенням полів userid або prodid, яких немає в батьківських таблицях. А для операцій редагування і видалення ми можемо задати особливі правила – CASCADE і RESTRICT.

Наповнимо таблиці:

INSERT INTO `users` VALUES (Null, `Гріша`, `Костик`);

Додали до таблиці стовпець userfeic типу BLOB і додаємо дані:

insert into users values (Null,'вова', 'Ванин','LOAD File (C:\Documents and Settings\raa\Рабочий стол\Doc3.doc)');

insert into users values (Null, 'Ваcя', 'Ванін', 0);

INSERT INTO `products` VALUES (1, `ЖМД 320Гб`);

INSERT INTO `orders` VALUES (1, 1, 1);

Додали до таблиці стовпець data_orrders з типом DATE

INSERT INTO `orders` VALUES (4, 3, 3, 2000-13-13);

або, якщо дата поточна, стати на стовпець, тиснути правою кнопкою, вибрати Insert value>DATE.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]