Новости

Створення зв'язків між таблицями за допомогою phpmyadmin

У цій замітці ми навчимося створювати зв'язки між таблицями в базі даних MySQL за допомогою phpmyadmin. Якщо з якоїсь причини ви не бажаєте використовувати phpmyadmin, дивіться наведені нижче SQL-запити.

Чому ж зв'язку зручно тримати в самій базі даних? Адже це завдання зазвичай вирішує так і сам додаток? Вся справа в обмеженнях і діях при зміні, які можна накласти на зв'язку.

Наприклад, можна заборонити видаляти категорію, якщо з нею пов'язана хоча б одна замітка. Або видалити всі нотатки, якщо видалена категорія. Або встановити NULL в сполучна поле. У будь-якому випадку, за допомогою зв'язків підвищується відмовостійкість і надійність програми.

Для початку, движок таблиць повинен бути InnoDB. Тільки він підтримує зовнішні ключі (foreign key). Якщо у вас таблиці MyISAM, почитайте як їх конвертувати в InnoDB .

Для того, щоб зв'язати таблиці по полях, необхідно спочатку додати в індекс зв'язуються поля:

У phpmyadmin вибираємо таблицю, вибираємо режим структури, виділяємо поле, для якого будемо робити зовнішній зв'язок і натискаємо Індекс.

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

Це ж дію можна зробити за допомогою SQL-запит:

ALTER TABLE `table_name` ADD INDEX (` field_name`);

Аналогічно додаємо індекс (тільки в моєму випадку тепер уже унікальний або первинний) для таблиці, на яку посилаємося, для поля id. Оскільки поле id у мене ідентифікатор, для нього робимо первинний ключ. Унікальний ключ міг би знадобиться для інших унікальних полів.

За допомогою SQL-запит: За допомогою SQL-запит:

ALTER TABLE `table_name` ADD UNIQUE (` field_name`);

Тепер залишилося тільки зв'язати таблиці. Для цього натискаємо внизу на пункт Зв'язки:

Тепер для доступних полів (а доступні тільки проіндексовані поля) вибираємо зв'язок із зовнішніми таблицями і дії при зміні записів в таблицях:

Через SQL-запит: Через SQL-запит:

ALTER TABLE `table_name` ADD FOREIGN KEY (` field_in_table_name_which_need_connect`) REFERENCES `outer_table_to_connect` (` outer_field`) ON DELETE RESTRICT ON UPDATE RESTRICT;

на цьому все, таблиці пов'язані через foreign key.

Чому ж зв'язку зручно тримати в самій базі даних?
Адже це завдання зазвичай вирішує так і сам додаток?

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: