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

时间:2019-10-04 14:35:36

标签: mysql recursion relational-database

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

listing_amenities 表将包含递归记录。例如。列表便利设施可能是“互联网”。在此记录下,我们需要存储儿童记录,例如它是哪种Internet(ADSL,光纤等),速度(20mbs,50mbs等)以及ISP。

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

创建递归表的原因是为了使查询更好,以便最终我们可以轻松查询具有ADSL互联网的物业清单,并按位置对其进行排序,以便我们可以针对营销目的定位特定区域升级到光纤。

1 个答案:

答案 0 :(得分:1)

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

如果您确定了有限数量的级别,则将sub_properties分解为两个级别,例如用于舒适性和sub_property的两个级别,这将使其更易于处理。

使用一个表并带有对子属性或超属性的自引用的原因是为了支持无限多个级别,您可以根据这些级别来分解事物。但是,这可能很麻烦,因为您永远不知道有多少个级别,因此也不知道在联接中使用多少个级别。如果可以避免这种情况,那就更好了。