2012-07-04 3 views
0

У меня есть резервирование билетов на сайт. Мне нужно сэкономить время, после чего я должен отказаться от брони.
У меня есть простое условие:дизайн базы данных для сложного временного диапазона

drop reservation after 30 minutes after reservation 

и комплекс:

from 00:01 to 18:00 - drop after 20 hours, from 18:01 to 00:00 - drop after 16 hours. 

Как спроектировать базу данных для этого? Теперь у меня есть простое TimeSpan поле в классе C#. И этого достаточно для простого правила, но не для сложных правил.
Спасибо.

PS. БД является MS SQL Server 2008

+0

, конечно же, вы просто сэкономите время на бросок в бронировании. Логика и расчет существуют вне базы данных, или вы хотите изменить правила с помощью ретроспективного эффекта? – Jodrell

+0

@Jodrell: эти поля будут доступны для редактирования в CMS. – user1260827

+0

, вам нужно будет объяснить последствия вашего последнего комментария. – Jodrell

ответ

1

Вы не хотите контролировать временные рамки с сервером и SQL. Это должно быть сделано в вашем приложении. Поэтому для каждого резервирования вы создаете временную метку (хранящуюся в базе данных как столбец ExpiryTime - или все, что вы хотите). Периодически вы проверяете столбец ExpiryTime, чтобы узнать, было ли заданное резервное копирование тайм-аутом или нет. если он выполнил операцию по снятию бронирования ...

Надеюсь, это поможет.

+0

Вы можете ввести в действие только время истечения срока действия в предложении where при получении резервирования. Оставляя старые заказы на месте в качестве исторической записи или удаляя их с некоторой задачей обслуживания или работой во время затишья в действии. +1 для ответа на мой комментарий. – Jodrell

+0

@ Killercam: Я не хочу контролировать время. L просто хочу установить его. – user1260827

+0

Хорошо. Хорошо, вы просто создаете столбец в таблице «Резервирование» (при условии, что у вас есть это или что-то simalar), называемое «ReservationTime»/«BookingTime», или что вы хотите, и напишите каждое бронирование и время, которое оно было внесено в базу данных, с помощью оператора обновления : 'UPDATE Reservations SET ReservationTime = [SomeTime] WHERE BookingIndex = '{0}';' или somesuch query ... – MoonKnight

Смежные вопросы