Как лучше организовать структуру таблицы??

Selforg

Новичок
Как лучше организовать структуру таблицы??

Есть некоторые продукты, которые занимаются по месяцам...
Когда кончается месяц, всё сдвигается (прошедший месяц кидается в архив)
Нужно учитывать 18 месяцев (пока).

Я придумал три структуры:

Первая:
id
idProduct
fCostPerMonth
iMaskMonth (побитово 18 месяцев )
бит = 1, значит занято
если бит = 0, то свободно

Вторая:
id
idProduct
fCostPerMonth
bMonth1
bMonth2
...
...
bMonth18
То есть операции будут по полям, а не битовые

Третья:
id
idProduct
fCostPerMonth
idMonth (номер месяца, допустим, буду считать от 2006 года: ( (Год сейчас - 2006)*12 + номер месяца )
в этом случае записей будет гораздо больше и вроде как универсальнее....
Запись существует, то продукт занят

Так вот какую структуру лучше выбрать, если продуктов очень много (от 100000)
Наиболее частые запросы:
- выборка части продуктов и отображение их с месяцами
- поиск продуктов, свободных в определенные месяцы


То есть для СУБД лучше: битовые операции, операции со множеством полей или со множеством записей для данной ситуации??
 

Panchous

Павел
Есть некоторые продукты, которые занимаются по месяцам...
Когда кончается месяц, всё сдвигается (прошедший месяц кидается в архив)
не совсем понятно?
что меняется каждый месяц?
 

Selforg

Новичок
Автор оригинала: Panchous
не совсем понятно?
что меняется каждый месяц?
ну например: снимаются квартиры по месяцам!! В этой таблице находиться информация о том, свободна квартира в данный месяц или нет!!
И так нужно на 18 месяцев вперед + архив прошедших месяцев!

-~{}~ 05.07.06 15:08:

то есть два статуса: свободен, занят
 

Panchous

Павел
отдельная таблица съем?

ид квартиры, дата начала съема, дата окончания
 

Selforg

Новичок
а если хотят допустим с июля по август и ноябрь???
такое бывает:)

то нет непрерывного периода...
если делать: ид квартиры, дата начала съема, дата окончания
то надо разбивать на несколько запросов: сначала вставить с июля по август, а потом ещё ноябрь!!
Это не очень удобно... хочется придумать структуру, в которой можно за раз добавлять....
 

Selforg

Новичок
ну я имел ввиду разбивать на несколько записей...

Данный подход универсальный, но насколько же база разрастется... страшно представить...

Просто на сайте всё отображается кратно месяцу... вот я и хотел это использовать, чтоб оптимизировать БД!!

Просто основной запрос - это выборка ВСЕГО промежутка 18 месяцев: значит надо будет сравнивать даты (> <)!!!
А в той структуре что я предложил просто быборка по ИД и затем вывод (из одной записи для одного продукта)... мне кажется этот вариант более оптимальным...

-~{}~ 06.07.06 11:41:

во всяком случае для СУБД, но не для скрипта....
 

Panchous

Павел
в чем проблема?
сравнивать даты - имеются функции
разрастется база - и как это тебя сильно волнует?
 
Сверху