Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Тарифы в БД / 7 сообщений из 7, страница 1 из 1
02.05.2006, 07:00
    #33700751
postt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в БД
Как правильно реализовать в БД выставление счетов клиентам? Счета выставляются на основе таблицы с почасовой наработкой в Mb. Тарифы сложные (наличие ночных скидок,скидок при большой наработке, различные абонплаты итд).Нужно ли писать какие-либо функции или можно обойтись SQL запросами из таблиц наработок и тарифов? Может у кого есть ссылки,как это правильно сделать?
Буду оч благодарен за помощь,просто это моя первая "биллинговая система инет провайдера".
...
Рейтинг: 0 / 0
03.05.2006, 05:39
    #33702946
postt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в БД
Более конкретный вопрос.Имеется таблица:
ip-адрес:inet
наработка в Mb:double
дата :timestamp
Требуется посчитать дневной (с 06-00 до 01-00) и ночной (с 01-00 до 06-00) трафик по разным тарифам.Данные скидываются каждый час.Как можно написать запрос,чтобы работал с максимальной скаростью?
...
Рейтинг: 0 / 0
03.05.2006, 06:35
    #33702996
Dimkas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в БД
долго и подробно думать не хочется, но навскидку:

завести ещё таблицу "Тарифные ставки" (термин только что придумал - можно поменять)
1. Название ставки (необязательно)
2. Время начала действия (минуты, часы, день недели и т.д.)
3. Время конца действия (---//---)
4. Дата начала действия (ставки периодически отменяются - это надо хранить)
5. Дата конца действия (---//---)
6. Значение ставки (некий коэффициент или просто цена за Мб)

Один тариф в таком случае будет представлен набором(!) тарифных ставок покрывающим все сутки (или неделю/месяц).
Получается, что твою первую таблицу (с траффиком) можно соединить с тарифными ставками по условию вхождения даты в ограничения ставки (поля 2..5) и сумму траффика умножить на ставку.

Вот примерно так...

с уважением,
Дмитрий Жучков
...
Рейтинг: 0 / 0
03.05.2006, 21:57
    #33705365
Yuraz.com
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в БД
MSSQL.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE #test (num_dogovor int not null, dn datetime not null, dk datetime not null, traff decimal( 18 , 4 ))

INSERT INTO #test (num_dogovor, dn, dk, traff) VALUES ( 1 , '20060101 13:00:00', '20060101 14:08:09',  500 )
INSERT INTO #test (num_dogovor, dn, dk, traff) VALUES ( 1 , '20060102 01:09:00', '20060102 14:08:09',  1502 )
INSERT INTO #test (num_dogovor, dn, dk, traff) VALUES ( 2 , '20060101 13:00:00', '20060101 14:08:09',  2 )
INSERT INTO #test (num_dogovor, dn, dk, traff) VALUES ( 2 , '20060104 01:00:00', '20060104 02:58:49',  510 )
INSERT INTO #test (num_dogovor, dn, dk, traff) VALUES ( 2 , '20060105 14:00:00', '20060105 19:18:59',  9500 )

SELECT *, DATEDIFF(mi, dn, dk) AS all_min, CONVERT(decimal( 18 , 4 ),(traff/DATEDIFF(mi, dn, dk))) AS speed_kb_sec_middle FROM #test

SELECT num_dogovor, SUM(traff) AS sum_all_traff, SUM(DATEDIFF(mi, dn, dk)) AS sum_all_min, (SUM(traff)* 0 . 015 ) AS all_price FROM #test
GROUP BY num_dogovor
ORDER BY num_dogovor

DROP TABLE #test

Исходные данные с пред. обработкой:
Номер договора Время входа Время выхода Трафик Время минут Ср.скорость12006-01-01 13:00:00.0002006-01-01 14:08:09.000500.0000687.352912006-01-02 01:09:00.0002006-01-02 14:08:09.0001502.00007791.928122006-01-01 13:00:00.0002006-01-01 14:08:09.0002.000068.029422006-01-04 01:00:00.0002006-01-04 02:58:49.000510.00001184.322022006-01-05 14:00:00.0002006-01-05 19:18:59.0009500.000031829.8742

Результат:
Номер договораВремя минут в сумме Трафик в сумме Цена для счета12002.000084730.030000210012.0000504150.180000


ну там учет по времени и т.п., это уже нюансы,
в принципе все решаемо из этого кода,
только вместо таблицы #test
у вас ввоя похожая таблица.. тариф вбит железно 0.015 :)
...
Рейтинг: 0 / 0
04.05.2006, 13:01
    #33706713
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в БД
авторпросто это моя первая "биллинговая система инет провайдера".
Светлая память этому провайдеру

-- Tygra's --
...
Рейтинг: 0 / 0
04.05.2006, 13:11
    #33706754
Estets
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в БД
tygra авторпросто это моя первая "биллинговая система инет провайдера".
Светлая память этому провайдеру
Все мы когда-то начинали ;)))
...
Рейтинг: 0 / 0
04.05.2006, 13:50
    #33706883
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тарифы в БД
Мы то да, а вот провайдеры так не должны - можно ведь и прогореть :))

-- Tygra's --
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Тарифы в БД / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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