[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Логика хранения данных о стоимости в MySQL
John.Deff
Добрый день!

Пытаюсь спроектировать логику хранения данных в БД MySQL, прошу помощи.

Суть: гостиница - необходимо хранить стоимость номера за сутки + стоимость доп. услуг (их может быть много).
Получается, будут расписаны цены на каждый день, на год. Несколько цен на один день, цены на каждый день могут быть разными, это уже решает пользователь.

Вопрос: Как правильно реализовать структуру БД для этой задачи?
Может я не верно мыслю и стоит думать в другом направлении?
Может уже есть готовое решение?

Поиск ничего адекватного не выдал мне.
Игорь_Vasinsky
стоимость номера за сутки - это отдельно

хранишь стоимость и дату - по итогу ты считаешь актуальную стоимость на последнюю дату

стоимость услуг по дням - точно так же - но это в отдельной таблице

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Valick
Игорь_Vasinsky, по ТЗ:
- цены на каждый день могут быть разными

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

John.Deff, слишком мало информации для корректного ответа.

_____________
Стимулятор ~yoomoney - 41001303250491
chee
Структура данных судя по всему должна быть такая

apartments
---
id
name

prices
---
id
type
date_begin
date_end
price
currency

apartments_prices
---
price_id
apartment_id



Есть разные типы цен, на разные даты. Одну и туже цену можно вещать на разные апартаменты. У одного апартамента может быть много разных цен.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
walerus
Поддержу мыслю Игорь_Vasinsky, чистую стоимость номера/ов это одна таблица, в ней же можно и хранить "возможные" плюшки для номера (уборка, еда, мини-бар etc...).

Во второй таблице хранить стоимость этих услуг, потом при расчете суммировать данные соответственно.

Но интересно следующее... как
Цитата
необходимо хранить стоимость номера за сутки
и
Цитата
Несколько цен на один день, цены на каждый день могут быть разными, это уже решает пользователь.
может быть в реальности ?

Тут либо "постоянная" цена, либо "отрезки цен", например по времени, дням недели и т.д.

Мало информации как сказал Valick .
sergeiss
John.Deff, я бы так сказал, что тебе нужна БД, умеющая работать с данными в формате JSON. Например, MongoDB (с ней не работал пока) или PostgreSQL.
Нет, можно и в Мускуле хранить JSON smile.gif Но обрабатывать на уровне БД не получится, будешь хранить как простую строку и потом в ПХП обрабатывать.

Но это "в первом приближении". Надо знать полностью задачу, чтобы сказать что-то более однозначное.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
SerginhoLD
Вроде в v5.7 с json можно работать, только нафига ему оно, про цены отдельно, можно даже не одна таблица с ценами, сверху вариант норм предложили

Можно базовую цену хранить в таблице с номерами.
Вторая таблица для других дней: id, a_id, две даты(от, до), цена

И услуги, тут уже в зависимости от тз, может они все одинаковые, дна таблица на все тогда, а может как с номерами разнести тоже на пару таблиц

_____________
"internet explorer всех правильней отображает страницы" ©
John.Deff
Ребята, спасибо всем за ответы!
Для себя нашел оптимальное решение благодаря мозговому штурму.
Так как сейчас в поездке, позже расскажу как реализовал.
Ещё раз благодарю !
John.Deff
Я решил задачу таким способом.
Создал 3 таблицы:
- Objects
- Category
- Dateprice

Где Objects хранит в себе номера.
Таблица Category хранит в себе категорию, и привязанную к ней название услуги за которую в том или ином номере берем деньги. Другими словами, мы один раз создали для конкретной категории название услуги и дальше используем везде только её ID.
В таклице Dateprice мы храним
ID номера (таблица Objects)
ID услуги (таблица Category)
Значение даты и цены.

вот так все просто

chee
John.Deff, лучше бы сделал как я написал. В твоём решении таблица Dateprice денормализована, у тебя будет очень много "относительно" одинаковых строчек при задании одной базовой цены для нескольких номеров. Решение будет, перенести связь между Objects и Dateprice в отдельную таблицу.


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
depp
date_end плохо использовать в базе почти всегда. должна быть дата начала цены и цена.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.