Взаимосвязь Unity3d и SQL посредством PHP
Для разработки прототипа была поставлена задача: Система имеет две возможности. Первая - работать с базой данных, вносить, изменять, удалять данные. И вторая возможность — это контролировать въезд на территорию. Вход в программу осуществляться только зарегистрированными пользователями.
Для решения данной задачи будем считать, что в базе данных имеется 3 таблицы (журнал въездов; номера автомобилей, имеющие право въезда; пользователи) и с ними может взаимодействовать пользователь, если у него есть на это права. Также при контроле потока, будем считать, что подается изображение идеального автомобильного номера.
Таблица пользователей «users» должна содержать в себе столбцы логина и пароля, данные о том, является ли пользователь администратором, а так же индивидуальный идентификатор для каждой записи.
Рисунок 2 – Схема взаимодействия компонентов
В таблице индивидуальный идентификатор обозначим именем «id» и типом integer (int), а так же установим авто заполнение данного столбца. Логин – именем «login» и типом varchar(10), где подразумевается, что данный логин не будет превышать 10 символов. Пароль обозначим «password» и аналогично логину типом varchar(10). Помимо всего логину и паролю выставим сравнение utf8_general_ci, для единой кодировки во всей системе. Для обозначения администратора создадим столбец «admins» с типом tinyint(1), и будем считать, что 0 – обычный пользователь, 1 – администратор.
Таблица с номерами автомобилей, имеющих право въезда, «HaveAccess» будет иметь всего три столбца. В частности, столбец с индивидуальным идентификатором для каждой записи, столбец с номером автомобиля и столбец с именем пользователя, который внес номер автомобиля в данную таблицу.
Рисунок 3 – Схема взаимодействия компонентов
По аналогии с таблицей «users», идентификатор обозначим «id» и типом integer. Столбцы с номером автомобиля «numberCar» и пользователей «user» будут иметь сравнение utf8_general_ci для единой кодировки всей системы и типом varchar. Столбец «numberCar» будет иметь ограничение 9 символов, а «user» 20 символов.
Таблица журнала въездов на территорию «EnterCars», будет содержать в себе столбцы: идентификатор, номер автомобиля, изображение номера, дата и время, статус автомобиля (въехала, не въехал на территорию), а также пользователя в чью смену была произведена попытка въезда.
Рисунок 4 – Схема взаимодействия компонентов
По аналогии с предыдущими таблицами, все текстовые поля (varchar) будут иметь сравнение utf8_general_ci. А именно столбцы «numberCar» - номер автомобиля, «Status» - статус автомобиля и «user» - пользователь. Столбец «id» - идентификатор, не отличается от аналогичных столбцов в предыдущих таблицах. Дата и время попытки въезда будут заноситься в столбец «Date» с типом datetime в формате год-месяц-число часы: минуты: секунды. Для того чтобы не загружать базу данных изображениями, столбец «images» имеющий тип text будет содержать в себе только ссылку на изображение хранящиеся на сервере и также иметь кодировку utf8_general_ci. Стоит отметить что столбцы «numberCar» и «Status» могут иметь пустые значения, в связи с тем, что данные в них будут вноситься отдельными запросами, в зависимости от результатов программы по распознаванию автомобильных номеров и действий работника (пользователя).
В качестве базы данных будет использоваться MySQL, он встроен в локальный веб-сервер OpenServer. Для работы с MySQL, необходимо создать базу данных с именем «db_rpo» и тремя таблицами с кодировкой utf8_general_ci, описанными выше, взаимодействием с которыми будет происходить через PHP.
Рисунок 5 – Таблицы в базе данных
Все взаимодействия с базой данных будут происходить через PHP файлы, а для подключения к базе, будет использоваться файл db.php который включен в эти файлы, используя код:
include "db.php";
Файл db.php содержит в себе код подключения непосредственно уже к самой базе данных:
$mysqli = new mysqli ("localhost", "root", "", "db_rpo");
$mysqli-> query ("SET NAMES 'utf8'").
Каждый файл PHP будет отвечать за определённое действие с базой данных и их таблицами, будь то вывод данных из таблицы или добавление записи, редактирование или удаление.
Для выполнения какого-либо действия с таблицами базы данных нужно отправить POST запрос PHP файлу отвечающий за это действие. Отправляться запросы будут из-под платформы, используемой для разработки программы. [3].
В качестве платформы будет использоваться Unity3D, что позволит скомпилировать проект и под Android и под iOS. Все скрипты, используемые в Unity3D, будут написаны на объектно-ориентированном языке программирования C#.
Общая схема взаимодействия всех трех компонентов представлена на рисунке 6.
Рисунок 6 – Схема взаимодействия компонентов