我最近开始使用ASP.NET进行开发,并且正在努力掌握Code-First。我正在进行一个实习项目,除了我参加的一个班级之外,他们的数据库知识很少。我绝不会要求完整的解决方案或懒惰。
我已经尝试了几天来创建一个可靠的ER图表,我很确定下面的图表将代表我需要存储的所有信息。如果您发现可以改进的方法,请告诉我。
我正在尝试做什么:
对于此项目,管理员将创建具有下列属性的房间。然后,管理员将分配时间段,表示房间可用的小时数和可用的星期几。
用户将填写他们的基本信息并填写表示他们可用时间的表格。
在所有用户注册后,管理员将运行一个调度算法来提供最接近最有效的时间表(因为它很难NP)。
指定的关系表示与房间时段相关的用户时间段,以便生成一个表格,说明用户在什么时间分配给哪些房间。
我正在使用Visual Studio 2012。
问题的
非常感谢任何帮助或指向正确的方向!!谢谢!
以下是代表以下内容的ER图:
答案 0 :(得分:1)
首先在ER图中我希望直接从Room到TimeSlot(右上角)和User到Timeslot(右下角)的链接,但是知道将要运行的可能查询我会建议ERD应该是如下:
房间链接到名为RoomAvailability的实体。 RoomAvailability包含房间的所有空闲时间段,因此最初将每个房间每天一个记录(RoomId,Date,StartTime,EndTime)填充到您认为必要的未来几天。
类似地,我会将一个实体UserAvailability(UserId,Date,StartTime,EndTime)链接到User。
实体RoomReservation(RoomId,UserId,Date,StartTime,EndTime)链接到Room和User,其中包含所有房间预订(假设只有1位用户可以预订房间)。
当预订房间时,会添加RoomReservation记录,并且可以将单个RoomAvailability记录拆分为2个单独的记录(例如,房间全天免费,然后有人在白天预订一个插槽,在开始和结束时留下2个空闲时段当天)。
取消预订时,会删除RoomReservation记录,并且可以将2个RoomAvailability记录合并回1(与上述相反)。
我认为拆分和合并可用的插槽是类似系统的工作方式。