Это старая версия документа!
Общая архитектура базы данных
Общая архитектура базы данных CRM системы, выглядит следующим образом:
Так же на данной схеме можно увидеть связи между отдельными таблицами.
База данных подразделяется на следующие основные таблицы:
User
таблица со списком пользователей, пользователей нельзя вставить просто так, их генерация должна осуществляться через сайт или API.
Request
Service_Residence
Услуга размещения. Помимо одинаковых полей для всех услуг имеются служебные поля, которые необходимы для использования в rule (правилах): comments, documents_rule Так же имеются поля check_ in и check_out это время заезда и время выезда (по-умолчанию значение из таблицы hotel берутся следующим образом: если значение поля unstandart_check_in равно 1 (true), то берется значение пользователя в противном случае берется значение из таблицы hotel, аналогичным образов работает поле check_out) Поле guest_check_in и поле guest_check_out это дата заезда и дата выезда
Service_residence_guest
Service_transfer
Услуга трансфера. Так же помимо одинаковых полей для всех услуг имеются служебные поля, которые необходимы для использования в rule (правилах): comments, documents_rule
и
Service
Прочие услуги, могут быть различны и зависят от значения поля service_type Это основные услуги системы, каждая из таблиц является равнозначной и связаны с таблицей request через поле request.
Так же в этих таблицах имеется список одинаковых полей
Так же используется список специальных полей: comments, documents_rule
для использования в Rule (правилах)
Расширение Service осуществляется с помощью ORM полей
Hotels
В таблице перечислен список гостиниц, которая связана с таблицей Service_Residence В данной таблице имеется служебное поле rooms_rule для использования в Rule (правилах) Поля check_in и check_out это стандартные значения времени заезда и времени выезда в гостиницу.
Hotel_Room
Данная таблица с номерами гостиниц используется в маркапах
Rule
Таблица для определения доступа к различным сущностям. Поля user_id и user_type работают по принципу замещения, если указано поле user_id, то поле user_type игнорируется. Подробнее можно посмотреть в Правилах. По умолчанию все разрешено, кроме запрещенного.
Markup_rule, Markup_data и Markup
Markup – список существующих маркапов В поле interval попадает весь список дат применения маркапов, в поле geography попадает весь список городов Markup_rule – правила применения маркапов.
Для одного маркапа может быть создано много правил
Markup_data – связующая таблица между объектом применения маркапов и самим маркапом
Отвечает за то, к чему будет применен маркап. Поле Object_type объект применения маркапа, который задается константами
- models/Rule.php
const OBJECT_TYPE_USER = 10; // Пользователь User const OBJECT_TYPE_COMPANY = 20; // Компания
Поле object_id это ID текущего объекта
ORM
object_type – тип сущности
- models/Rule.php
const OBJECT_TYPE_USER = 10; // Пользователь User const OBJECT_TYPE_COMPANY = 20; // Компания CompanyData const OBJECT_TYPE_HOTEL = 30; // Гостиница Hotel const OBJECT_TYPE_REQUEST = 40; // Заявка Request const OBJECT_TYPE_SERVICE = 50; // Услуга Service const OBJECT_TYPE_SERVICE_TRANSFER = 51; const OBJECT_TYPE_SERVICE_RESIDENCE = 52; const OBJECT_TYPE_DOCUMENT = 60; // Документ Document
Данные по ORM объектам попадают в специализированные таблицы:














