gpt4 book ai didi

mysql - 带有便利设施的建筑物的 SQL 结构

转载 作者:行者123 更新时间:2023-11-29 14:30:15 24 4
gpt4 key购买 nike

我遇到了一个似乎无法找到解决方案的问题。我在这里浏览过类似的答案,但没有什么正是我正在寻找的。我对 SQL 相当熟悉,但无论如何都不是专家。

我有一个表,其中包含有关公寓楼的信息 - 名称、区域、社区、电话号码、地址、邮政编码等。目前,我在该表中定义了几种便利设施,例如“门卫”、“电梯”、“健身房”(以及其他一些)作为tinyints来指示该建筑物是否确实具有该设施。然而,我正在整合更多的便利设施类型,我认为现在可能是改变结构的时候了,因为在巨大的建筑物表中添加一根柱子并没有太大意义。

因此,我正在寻找一种解决方案,让我能够最好地执行以下操作:1)根据用户定义的便利设施搜索建筑物(例如用户选择他想要查看必须有健身房和门卫的建筑物,不关心其他建筑物)2)返回有关建筑物的数据,包括建筑物包含的所有设施(用于显示信息)

我正在考虑将这些结构分成多对多关系并执行以下操作:1)创建名为“设施”的新表,其中包含所有设施,其结构如下: id -> 设施的唯一 ID 名称 -> 设施的文字描述 value -> 例如“pet_Friendly”(用于在表单中搜索,不确定是否需要)

2) 在另一个名为“building_amenities”的表中创建建筑物和设施之间的关系表,其结构如下: id -> 关系的唯一 ID Building_id -> 指建筑物的 ID amenity_id -> 指的是设施的 id value ->tinyint,建筑物是否有便利设施在此表中,每个建筑物与每个设施都有关系,并指示是否有该设施。

我的问题是,我不确定这是否是这种情况下的正确结构,并且我当然不知道如果我有这种结构,我将如何实现搜索查询。

非常感谢您对此提供的任何帮助!

最佳答案

我建议您创建一个建筑物表、一个便利设施表和一个关系表。每栋建筑都有一个 ID,每个设施也有一个 ID。要选择具有某些设施的所有建筑物,您只需编写如下查询

SELECT *
FROM (relational_table) rt JOIN (buildings_table) bt
ON rt.id_building = bt.id_building JOIN (amenities_table) at
ON at.id_amenity = rt.id_amenity
WHERE rt.id_amenity = ... (OR, AND etc.)

要返回建筑物及其便利设施,只需将 WHERE 子句更改为 WHERE id_building = x,然后应选择所有便利设施。

关于mysql - 带有便利设施的建筑物的 SQL 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10148738/

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