В данной статье мы рассмотрим на наглядном примере и применим на практике одну из связей между таблицами.
Существуют три основные связи между таблицами в базе данных:
- один ко многим;
- многие ко многим;
- один к одному.
Для более наглядного рассмотрения связи «многие ко многим», создадим три таблицы:
- 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 и выбираем сохранить файл.