C# 复杂时间范围的数据库设计

C# 复杂时间范围的数据库设计,c#,sql-server,database-design,C#,Sql Server,Database Design,我在一个网站上预订了票。 我需要节省时间,之后我必须取消预订。 我有一个简单的条件: 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. 如何为此设计数据库? 现在我在C#类中有了一个简单的TimeSpan字段。而且,对于简单的规则来说就足够了,但对于复杂

我在一个网站上预订了票。 我需要节省时间,之后我必须取消预订。
我有一个简单的条件:

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.
如何为此设计数据库? 现在我在
C#
类中有了一个简单的
TimeSpan
字段。而且,对于简单的规则来说就足够了,但对于复杂的规则来说就不够了。
谢谢


备注:数据库是MS SQL Server 2008

您不想用服务器和SQL控制时间范围。这应该在您的应用程序中完成。因此,对于每个预订,您都会创建一个时间戳(存储在数据库中,作为ExpiryTime列,或任何您想要的内容)。定期检查列ExpiryTime,查看给定的保留是否超时。如果已执行删除保留的操作


我希望这能有所帮助。

你当然可以节省他在预订处的停留时间。逻辑和计算存在于数据库之外,或者,您希望能够更改具有追溯效力的规则吗?@Jodrell:这些字段将在CMS中可编辑。您必须解释上次注释的含义。实际上,在检索保留时,您可以在where子句中使用到期时间。将旧预订保留为历史记录,或在活动暂停期间通过一些维护任务或工作将其删除+谢谢你回答我的评论。@Killercam:我不想控制时间。我只是想设定一下,好的。您只需在
Reservations
表中创建一个名为
ReservationTime
/
BookingTime
的列(假设您有这个或类似的东西),并使用update语句将每个预订和预订时间写入数据库:
updatereservationset ReservationTime=[someone]其中BookingIndex='{0}'或类似的查询…问题是如何存储示例中的复杂规则。只需将两个字段
BookingTime
ExpiryTime
存储为SQL数据库/数据表中的
DATETIME
字段。然后根据您的逻辑检查它们的值。我的回答和上面@Jodrell的评论就是一个逻辑的例子。