Система - Разработка объектов Хранилища

Ниже представлена схема существующей на данный момент OLTP системы, необходимой для полного функционирования интернет хостинга.

oltp модель

Рисунок 6. OLTP модель

Система состоит из 6 основных таблиц. Таблица UserTable сохраняет логин и пароль клиентов компании, данные об его ФИО и дате рождения, а так же данные о его типе (физическое лицо, юридическое лицо или индивидуальный предприниматель).

С этой таблицей связана таблица Address, в которую записываются данные об адресе клиента. Если несколько клиентов регистрируются на один адрес, то новой записи об адресе создаваться не будет и клиент просто будет связан с этим адресом. Эта система очень удобна для всех статистических данных о месторасположении клиента.

Таблица service_instance является каталогом всех услуг, которые предоставляет компания, в ней хранится название услуги, стоимость, а так же информация о ее статусе (активна, неактивна). С данной таблицей связана таблица Service_Group.

Она необходима для того, чтобы можно было группировать все услуги по категориям, например, отличать услуги хостинга от услуг колокации. При этом группы имеют структуру дерева, то есть у каждой группы может быть группа родитель и подгруппы. Например, группа хостинг услуг и подгруппа услуг типа "МИР" (самые недорогие услуги с наименьшими возможностями). Древовидная иерархическая структура реализована за счет того, что таблица ссылается сама на себя.

Таблица service является связующей для таблиц service_instance и defrayal, с ее помощью реализуется связь многие-ко-многим. Defrayal хранит все себе общую сумму заказа и идентификатор пользователя, сделавшего заказ.

Таблица Operation служит для хранения платежей и списаний, которые сделал пользователь. Поскольку по российскому законодательству компании не имеют права списывать деньги за услуги, которые еще не были предоставлены, если клиент купит услугу, например, на год деньги сразу за весь год списывать нельзя. Поэтому эти деньги на счету клиента просто блокируются и становятся ему недоступны, а уже, например, каждый месяц нужное количество денег будет списываться.

Поле type служит для хранения типа операции, соответственно Income (платеж клиента), Sale (списание) и Block (блокировка). Таблица ссылается сама на себя - поле payment_id, для того, чтобы знать к какому платежу было списание, для платежей оно соответственно будет пустым. Таблица связана с defrayal через поле defrayal_id. Так же в ней хранится дата операции, и срок за который списались деньги (для платежей пустое).

С таблицей Operations так же связана таблица PaymentMethod. В ней содержаться данные о том, как именно расплачивался клиент, будь то кредитная карта или обычный платеж через банк. Структура методов платежей тоже древовидна. Это необходимо потому, что электронные платежи в компанию осуществляются через несколько различных платежных систем. Иерархическая структура позволяет сгруппировать все одинаковые методы платежа из различных систем.

Подводя итоги, можно сказать, что данная схема позволяет производить все основные операции, необходимые для полноценной работы хостинг-компании.

Похожие статьи




Система - Разработка объектов Хранилища

Предыдущая | Следующая