具有多对多关系的递归关系 MySQL table

Recursive relationship MySQL table with many-to-many relationship

我正在创建一个包含 属性 列表的数据库结构。每个列表都包含我需要存储的各种便利设施,在 listing_amenities table.

listing_amenities table 将包含递归记录。例如。上市设施可能是 "internet"。在此记录下,我们需要存储子记录,例如互联网类型(ADSL、光纤等)、速度(20mbs、50mbs 等)以及 ISP。

我的问题是递归模型是否是正确的解决方案,我将如何为此构建数据库结构,或者是否有更好的解决方案来解决此类问题。换句话说,将所有便利设施及其 sub_properties 简单地存储在房源 table 的大 JSON blob 列中会更好吗?

创建递归 table 的原因是为了更好地查询,以便最终我们可以轻松查询具有 ADSL 互联网的 属性 列表,例如,并按位置排序,以便我们可能会针对特定区域进行营销以升级到光纤。

首先,我建议不要使用 JSON BLOB,因为查询起来不容易且不可靠。

如果您确定要将您的 sub_properties 分解为有限数量的级别,例如舒适度级别和 sub_property 级别,这将更容易处理。

使用一个 table 以及对子属性或超属性的自引用的原因是为了支持无限数量的级别,您可以将其分解。但是,这可能很麻烦,因为您永远不知道有多少个级别,所以您不知道在连接中使用多少个级别。如果能避免这种情况,可能会更好。