powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование база данных для тарифов и услуг
3 сообщений из 3, страница 1 из 1
Проектирование база данных для тарифов и услуг
    #37483380
Darooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть некая система, которая предоставляет услуги. Каждая из услуг может быть (а может и не быть) в составе тарифа.

Тариф — id, название, период до которого его нужно активировать, фактическая дата активации, дата покупки
Сервис — id, название, id тарифа (м.б. null), период до которого его нужно активировать, фактическая дата активации, дата покупки

Услуги и тарифы могут предоставляться как помесячно, так и поштучно.

Цены — id, тип (помесячно или поштучно), кол-во месяцев(или кол-во штук), сумма


Цена услуги в составе тарифа проставляется отдельно. То есть цена тарифа складывается из суммы всех услуг, которые входят в его состав.

Подскажите, как спроектировать другие таблицы:
Заказы. Непонятно, при заказе тарифа (то есть списка услуг) лучше добавлять один внешний ключ (id тарифа) или несколько (для каждой услуги в составе этого тарифа)?

Цены-тарифы-услуги. Так как цена услуги отдельно и в составе тарифа различаются, то как всё это организовать?
Может, тема уже обсуждалась?
...
Рейтинг: 0 / 0
Проектирование база данных для тарифов и услуг
    #37485830
AnaceH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Darooma,

Во-первых, я бы объединил таблицы тариф и услуга в одну, это очевидно, их структура идентична, + тип (слуга это или тариф). Дальше, в зависимости от может ли одна услуга участвовать в нескольких тарифах - ссылка либо idOwner, либо отдельная таблица для связки. Так же не ясно какое отношение атрибуты фактическая дата активации, дата покупки имеют к справочнику тарифов, судя по названию это атрибуты сущности покупка тарифа\услуги (заказ?)
Таблица цен - тип покупки (поштучно или на месяц), тип цены (для одиночной услуги и в составе тарифа), ссылка та таблицу тарифов-услуг. Думаю, в таблице цен можно хранить цену на весь тариф, вычислять ее тригером при удалении\добавлении услуг в тариф. Количество по идее надо хранить в заказе, а в справочнике хранить цену для 1 месяца\штуки.
Заказ: Ссылаемся на таблицу цена (на цену тарифа или услуги, в зависимости от того, что мы покупаем, благо таблица же одна). Экземпляр цены уже хранит информацию о том, что это за тариф\услуга и какие типы (то есть полную необходимую информацию).
Как-то так.
...
Рейтинг: 0 / 0
Проектирование база данных для тарифов и услуг
    #37485914
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно ли я понимаю что тариф у вас это набор (или если хотите коробка) с услугами оптом, а пользователь может еще прикупить услуг в розницу.
Darooma Непонятно, при заказе тарифа (то есть списка услуг) лучше добавлять один внешний ключ (id тарифа) или несколько (для каждой услуги в составе этого тарифа)?Тогда в заказе будет или тариф или услуга отдельно, то есть
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create table tarif (tarif_id int primary key, tarif_desc varchar( 100 ))
create table tarif_serv_list (id int, tarif_id int, serv_id int, price int)

create table servs (serv_id int primary key, serv_desc varchar( 100 ), price int)

create table orders (id int, tarif_id int references tarifs, serv_id int references servs ....
 check ((tarif_id is not null and serv_id is null) or (tarif_id is null and serv_id is not null))
)

Darooma Цены-тарифы-услуги. Так как цена услуги отдельно и в составе тарифа различаются, то как всё это организовать?прикрутить историю изменений dfrom/dto будет домашним заданием
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование база данных для тарифов и услуг
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]