我正在为会议会议室预订系统开发数据库设计。
我被困在房间和房间之间建立关系设施实体。每个房间都有投影仪,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。
任何帮助将不胜感激...... !!!
答案 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