我正在开发一个预订系统,某些用户可以在该系统中预订特定日期和时间的活动(这些时间是特定于活动的)。系统需要检查此活动是否可用(例如,当时可能有一个班级)。
我如何表示可以在数据库模式中预订活动的日期/时间?
示例:
Activity - Swimming Available times: Monday : 9am - 5pm Tuesday : 9am - 12pm Wednesday : 9am - 4pm Thursday : 10am - 3pm Friday : 9am - 5pm
如果我的活动表中有游泳活动的记录。其中包含描述,成本等详细信息,如何将此计划存储在字段中?
感谢。
答案 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,允许您根据规则获取计数并限制每个插槽的预订数量。