0

我最近开始使用 ASP.NET 进行开发,并且正在努力掌握 Code-First。我正在做一个实习项目,除了我上过的一门课外,我几乎没有数据库知识。我绝不要求一个完整的解决方案或懒惰。

几天来,我一直在尝试创建一个可靠的 ER 图,我相当确定下面的图将代表我需要存储的所有信息。如果您看到任何可以改进的方法,请告诉我。

我正在尝试做的事情:

对于这个项目,管理员将创建具有下列属性的房间。然后,管理员将分配时间段,代表房间可用的时间和一周中的可用天数之间的时间段。

用户将填写他们的基本信息并填写一份表格,表示他们的可用时间。

在所有用户都注册后,管理员将运行一个调度算法来提出最接近最有效的调度(因为它是 NP 困难的)。

分配关系表示与房间时隙相关的用户时隙,以便生成一个表格,其中列出了哪些用户在什么时间被分配到了哪些房间。

我正在使用 Visual Studio 2012。

问题

  1. 我将如何使用 Code-First 来表示这些聚合实体?不一定要求这个确切图表的代码,但可能是一个快速示例来帮助我围绕 Code-First 进行思考。
  2. 对于这些关系,我的映射看起来正确吗?

非常感谢任何帮助或指出正确方向!谢谢!

下面是代表以下内容的 ER 图:

  • 房间(id、号码、建筑、容量)
  • TimeSlot (id, startHour, endHour, dayOfWeek)
  • 用户(ID、名字、姓氏、电子邮件)
  • 可用(用户 ID、时间 ID)
  • 预留(房间ID、时间ID)
  • 已分配(reservedID、availableID)

ER图

4

1 回答 1

1

首先在 ER 图中,我希望直接从 Room 到 TimeSlot(右上)和从 User 到 TimeSlot(右下)的链接,但是知道可能会运行的查询,我建议 ERD 应该如下所示。

Room 链接到名为 RoomAvailability 的实体。RoomAvailability 包含房间的所有空闲时间段,因此最初将使用每个房间每天的一条记录(RoomId、Date、StartTime、EndTime)填充到您认为必要的未来几天。

同样,我将有一个实体 UserAvailability(UserId、Date、StartTime、EndTime)链接到用户。

实体 RoomReservation(RoomId、UserId、Date、StartTime、EndTime)链接到 Room 和 User,其中包含所有房间预订(假设只有 1 个用户可以预订房间)。

预订房间时,会添加 RoomReservation 记录,并且单个 RoomAvailability 记录可能会分成 2 个单独的记录(例如,房间全天免费,然后有人在白天预订一个时段,在一天的开始和结束时留下 2 个空闲时段)。

取消预订时,RoomReservation 记录将被删除,并且 2 个 RoomAvailability 记录可能会合并回 1 个(与上述相反)。

我相信可用插槽的拆分和合并是类似系统的工作方式。

于 2013-03-27T22:20:40.353 回答