gpt4 book ai didi

mysql - 订房管理系统数据库设计

转载 作者:行者123 更新时间:2023-11-30 22:25:41 25 4
gpt4 key购买 nike

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

我一直在制作房间和设施实体之间的关系。每个房间都有投影仪、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。

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

最佳答案

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

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

例如房间:

        id
roomName
otherData

为设施使用第二张 table 。该表应该有每个单独设备的主键 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;

关于mysql - 订房管理系统数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35316876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com