【问题标题】:if i have main room and spare room should they be in different tables?如果我有主房间和备用房间,它们应该在不同的桌子上吗?
【发布时间】:2016-07-29 13:18:29
【问题描述】:

我正在为一所大学开发数据库。

系统应在考虑日期、时间和座位数后为每个课程选择一个房间。

学院在特定建筑物中为特定专业设有特定房间。

例如:计算机科学位于 1 号楼,房间 1001-1010。 业务在#2号楼,房间1001-1020。

在某些情况下(例如,所有房间都在特定时间忙碌...等),那么 2 号楼的其他房间 2001-2003 将用于计算机科学。

我不确定是否应该为主房间创建一张桌子,为备用房间创建另一张桌子,或者它们应该在一张桌子上。

注意:稍后系统会打印课程名称、时间、房间号和所在的建筑物。

part of ER diagram

【问题讨论】:

  • ER 仅显示表格和字段并不准确。
  • 您可以将所有内容都放在同一个表中,并有一个字段来指定它是主要的还是备用的。如果主房间和备用房间的所有字段都相同,我认为这是最好的方法。
  • 我必须打印课程、大厅和在哪个建筑物。对于主房间,根据主要编号我可以得到正确的建筑编号。但如果房间有空的话,少校不在正确的大楼里。所以我需要添加两个字段,一个指定主房间还是备用房间,另一个字段指定建筑物编号以避免从关系中获取它。这种方式有很多重复的价值,对关系没有好处。那么,如果它们在同一栋建筑物中,您能否完成您的答案,我如何打印认可建筑物?非常感谢你

标签: sql asp.net database


【解决方案1】:

我认为你需要这样的东西。可能需要更多字段,但这些是解决基本问题的必要条件。

我假设每个房间偶尔可以被多个专业使用,如果不是这样,您可以使用稍微简单的设计。


“专业”表(例如计算机科学、商业)

字段:

“主要ID”

“姓名”


“课程”表(例如专业内的某些课程)

字段:

“课程 ID”

“姓名”

“MajorID” - 主表的外键


“建筑物”表

字段:

“建筑物 ID”

“姓名”


“房间”表

字段:

“房间号”

“姓名”

“容量”(座位数)

“BuildingID” - Buildings 表的外键


“AvailableRooms”表。这将定义在为课程分配空间时哪些房间可以用于哪些专业。不要执着于每个专业只使用特定建筑物的想法。正如您所指出的,实际上他们没有,因为他们在其他建筑物中有额外的房间。

字段:

“MajorID” - Majors 表的外键

"RoomID" - Room 表的外键

“备用” - 您可以将其用作布尔值来指示这是否是“备用”房间。然后,您的算法可以考虑到这一点,并且仅在与课程关联的专业没有可用的常规房间时才选择这些房间。


“CourseRoomAllocation” - 这是您的分配算法将记录哪些房间在哪些时间实际分配给哪些课程的地方。这可能会变得更复杂,但基本情况如下:

字段:

"RoomID" - Room 表的外键

“CourseID” - 课程表的外键

“BookingStart”开始使用日期/时间

“BookingEnd”结束日期/使用时间


我想现实不可避免地会比这更复杂一些,但我认为这应该足以让你开始。

【讨论】:

  • 这很棒。我将从你的想法开始,以打破建筑和专业之间的关系。为“AvailableRooms”做一个新表,最后我将在“CourseRoomAllocation”中工作。非常感谢:D
  • 我有一个问题,为什么我们要创建“AvailableRooms”表?为什么不简单地将其字段添加到房间表中?
  • 正如我在问题中所说的“我假设每个房间偶尔可以被多个专业使用,如果这不是真的,你可以使用稍微简单的设计。”我正是这个意思。如果您不需要这种灵活性,那么只需将这些字段添加到 Rooms 表。但就我个人而言,如果可以的话,我总是为未来设计——你可能会发现大学将来会改变它使用房间的方式,如果他们有更多的学生等等。这样您就不必更改数据库来满足相当可预测的要求。但这完全取决于您。
  • @AL3MS 你是怎么做到的?我的解决方案对您有帮助吗?如果是这样,请投票和/或接受答案:-)
猜你喜欢
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多