繁体   English   中英

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

[英]Room Booking Management System Database Design

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

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

示例:如果我搜索具有1个VoIP的会议室,那么我应该得到该会议室;如果我搜索具有3个VoIP和2交流电的会议室,它将显示该会议室。

当前数据库设计

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。

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

我认为您想要的是一对多关系或“有很多”关系。 在不为您输入代码的情况下,我将为您提供基本的设计概念:

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

例如房间:

        id
        roomName
        otherData

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

设备:

         Id
         roomId
         name
         cost
         otherData

每个设施条目都有其自己的ID,带有的roomId与它所属房间的ID(来自Rooms表中的ID)的值相同。

这样,您可以将5个设施连接到一个房间,将4个设施连接到另一个房间,将0个设施连接到另一个房间,将50个设施连接到另一个房间,等等。

在回答有关选择具有2个VOIP设施的所有房间的后续问题时:

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

该查询将返回一个结果,该结果计算每个房间中有多少个VOIP。 现在,将其放在查询的WHERE中。

   SELECT * FROM room JOIN facilities ON id = roomId
   WHERE (above query) = 2;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM