В данной статье мы рассмотрим на наглядном примере и применим на практике одну из связей между таблицами.
Существуют три основные связи между таблицами в базе данных:

  • один ко многим;
  • многие ко многим;
  • один к одному.

Для более наглядного рассмотрения связи «многие ко многим», создадим три таблицы:

  • Aktery (в данной таблице будет содержаться информация об актерах);
  • Spectakli (информация о спектаклях);
  • Zanjatost (собирательная таблица, включающая в себя идентификаторы актеров и спектаклей).

Таблица Aktery будет состоять из:

  • ID (идентификатор актера);
  • FIO (фамилия, имя, отчество актера);
  • Zvanie (звание актера);
  • Stazh (стаж актера).

Таблица Spektakli включает в себя:

  • ID (идентификатор спектакля);
  • Nazwanie (наименование спектакля);
  • God_postanovki (год постановки спектакля);
  • Bjudzhet (собранный бюджет спектакля).

А таблица Zanjatost:

  • ID (идентификатор);
  • Akter_ID (идентификатор актера из таблицы Aktery);
  • Spektakl_ID (идентификатор спектакля из таблицы Spektakly);
  • Rol (роль актера в данном спектакле);
  • Stoimost_kontrakta (стоимость годового контракта).

Связь «многие – ко – многим» создается с помощью двух родительских и одной составной таблицы. Таблицы Aktery и Spektakly – родительские таблицы – источники данных и одна соединительная таблица (дочерняя) – Zanjatost. Первичный ключ нашей соединительной таблицы Zanjatost является составным. Эта таблица включает в себя два внешних ключей, которые будут связаны с первичными ключами таблиц Aktery и Spektakly. Главным плюсом данной связи является то, что для обновления информации в базе данных, достаточно изменить ее только в одной таблице, где хранится информация, так как в других таблицах находятся только ссылки на нее.

Для создания базы данных Teatr будем использовать сервер MySQL. Предполагается, что он у вас уже установлен на компьютере. Если же нет, подробную информацию по установке можно найти на данном ресурсе http://php-myadmin.ru/learning/instrument-mysql.html

Запускаем MySQL

Для начала мы создадим саму базу данных с названием «Teatr» с помощью команды:

  • Create database Teatr;

После этого подключаем, созданную базу данных:

  • Use Teatr;

Устанавливаем кодировку:

  • Set names cp866;

Создаем первую таблицу Aktery. Здесь c помощью команды engine MyIsam Character Set CP1251 мы указываем кодировку в таблице. Varchar – это текстовый тип данных, где в скобках указывается, из скольких символов будет состоять значение.

После того, как мы создали таблицу, ее необходимо заполнить. Делается это с помощью команды insert into. После него указывается, в какую таблицу идет заполнение. В нашем случае это Aktery. В скобках перечисляются названия столбцов (ID, FIO, Zvanie, Stazh). После команды values в скобках соответственно перечисляются данные для заполнения.

Чтобы просмотреть заполненную таблицу, необходимо ввести команду:

  • Select * from Aktery;

Где * означает, что выводятся все столбцы, from – из таблицы.

Вместо * можно указывать конкретные столбцы, которые нужно вывести. Выведем значения столбца FIO из таблицы Aktery:

  • Select FIO from Aktery;

Аналогичным образом создадим таблицу Spectakli. Decimal – числовой тип данных с плавающей запятой.

Заполняем таблицу Spectakli.

Чтобы просмотреть таблицу Spectakli введем:

  • Select * from Spectakli;

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

Foreign Key (Akter_ID) references Aktery(ID) on delete restrict on Update Cascade означает, что значения столбца из таблицы Zanjatost связана со значением идентификатора из таблицы Aktery. Это означает, если мы изменим значение в таблице Aktery, то оно автоматически поменяется и в связующей таблице Zanjatiost.

Заполняем таблицу Zanjatost:

Просматриваем содержимое созданной ранее таблицы:

  • Select * from zanjatost;

В базе данных MySQL можно производить различные операции. В данной статье мы рассмотрим самые основные из них.

Выведем все значения таблицы Spectakli, где год постановки равняется 2016:

  • Select * from Spectakli Where God_postanovki=2016;

Также можно вывести все значения из таблицы Spectakli, где сумма бюджета превышает указанного значения, в нашем случае это 250000 :

  • Select * from spectakli Where bjudzhet > 250000;

Как и в любом другом языке программирования, в MySQL существуют логические операторы сравнения. Рассмотрим запрос с использованием AND. Выведем содержимое таблицы спектакли, где бюджет больше 250000 и год постановки позже 2010 года:

  • Select * from spectakli Where bjudzhet > 250000 and god_postanovki > 2010;

Выведем сумму собранного бюджета из таблицы спектакли:

  • Select sum(Bjudzhet) From spectakli;

Рассмотрим более сложный запрос. Выведем Ф.И.О. актеров из таблицы Aktery и стоимость годового контракта из таблицы Zanjatost, где идентификатор актера из таблицы Aktery равен значению Akter_ID из таблицы Zanjatost:

  • Select Aktery.FIO, Zanjatost.Stoimost_kontrakta From Aktery, Zanjatost Where Aktery.ID=Zanjatost.Akter_ID;

Выгрузить базу данных из MySQL можно с помощью дополнительной программы MySQL Administrator. В ней необходимо указать значение username и password, которые вы вводили при установке MySQL сервера.

Переносим созданную базу данных из графы Schemala в Backup Content.

После этого нажимаем на Execude Backup Now и выбираем сохранить файл.