如何处理与预订有关的时间

时间:2012-04-22 16:51:21

标签: c# sql database ms-access

我正在开发一个预订系统,某些用户可以在该系统中预订特定日期和时间的活动(这些时间是特定于活动的)。系统需要检查此活动是否可用(例如,当时可能有一个班级)。

我如何表示可以在数据库模式中预订活动的日期/时间?

示例:

Activity - Swimming
Available times:
Monday : 9am - 5pm
Tuesday : 9am - 12pm
Wednesday : 9am - 4pm
Thursday : 10am - 3pm
Friday : 9am - 5pm

如果我的活动表中有游泳活动的记录。其中包含描述,成本等详细信息,如何将此计划存储在字段中?

感谢。

3 个答案:

答案 0 :(得分:1)

我建议您使用int ScheduleID主键,int ActivityID外键,datetime {{1 }},time StartTime以及它需要的任何其他列。

然后,在检查新活动是否与先前计划的活动冲突时,您可以使用LINQ to SQL:

Interval

免责声明:不是100%确定DataContext会以这种方式运作。

答案 1 :(得分:0)

我会用时间函数表示这是一个开始和结束日期。

这是您的代码

public enum ActivityType
{
    Swimming = 1,
    Biking = 2,
    Basketball = 3,
    Soccer = 4
}

public class Booking
{
    public DateTime BookingStart { get; set; }
    public DateTime BookingEnd { get; set; }

    public Activity Activity { get; set; }

    public bool ValidateBooking()
    {
        // put logic here to ensure that the booking times fall within the activity start and end time
        return true;
    }
}

public class Activity
{
    public ActivityType ActivityType { get; set; }
    public DateTime ActivityStartTime { get; set; }
    public DateTime ActivityEndTime { get; set; }
}

在您的数据库中,您将拥有一个包含此信息的表。

预订表

ID int
ActivityID int (foreign key to Activty.ID)
BookingStart DateTime
BookingEnd DateTime

活动表

ID int
ActivityType int
ActivityStartTime DateTime
ActivityEndTime DateTime

答案 2 :(得分:0)

鉴于您的活动每隔15分钟进行一次,您可能会发现相关的日历表,这也可以让您排除关闭日期。您的日历可以包含每个活动的日期和四分之一小时行。一个单独的表将包含日历ID和客户端ID,允许您根据规则获取计数并限制每个插槽的预订数量。