房间预订管理系统数据库设计

时间:2016-02-10 13:41:46

标签: mysql database database-design relational-database database-schema

我正在为会议会议室预订系统开发数据库设计。

我被困在房间和房间之间建立关系设施实体。每个房间都有投影仪,VoIP,AC等设施(设备)。如何分配总数。每个房间的每台设备?

示例:如果我搜索带有1个VoIP的房间,那么我应该得到那个房间&如果我搜索带有3个VoIP& 2 AC将显示该房间。

当前数据库设计

Room ID    Room Name   Facility ID

 1.          R1        11
 2.          R2        14

Facility ID    AC    VoIP    Projector
11.            1      3       1
12.            2      1       0

请帮助我做得更好。我希望尽可能少地使用join。

任何帮助将不胜感激...... !!!

1 个答案:

答案 0 :(得分:0)

我认为你想要的是多对一的关系,或者有很多"。如果没有为您输入代码,我将为您提供基本的设计概念:

您应该有一个房间表,其中id为主键(以及其他相关详细信息)。

例如 房间:

http://domain.com/location/page/set.php?numbers=XXX&otherset=morenumbers

使用第二张表作为设施。该表应该具有每个单独设备的主键ID,然后是一个名为RoomId的外键,该外键的值与其所连接的房间的主键相对应。

设施:

        id
        roomName
        otherData

每个设施条目都有自己的ID,一个roomId与它所属房间的id相同(来自房间表的id)。

通过这种方式,您可以将5个设施连接到一个房间,4个连接到另一个房间,零连接到另一个50连接到另一个房间等。

回答您关于选择所有房间的后续问题,例如2个VOIP设施:

         Id
         roomId
         name
         cost
         otherData

此查询将返回一个结果,该结果计算每个房间中的VOIP数量。现在将其放入查询中的WHERE中。

     SELECT Count(name) FROM facilities WHERE name = "VOIP" GROUP BY roomID