根据列值链接另一个表

时间:2019-11-25 09:51:50

标签: mysql orm entity-attribute-value

enter image description here

嗨,我正在使用MySQL和Squalize ORM(NodeJS)设计商品目录。

假设我有一个产品列表,该产品列表根据其类别(在本例中为attributes_id)具有不同的属性。 我想通过使用带有适当属性表的JOIN语句来获得产品。设计应该是可扩展的,因为我们将有一百多个属性表。

该语句大致如下:

 JOIN
   if ( product.attributes_id == 1 ) 'attributes_car'
   elseif ( product.attributes_id == 2 ) 'attributes_food'

但是elseif案件的数量将在一百多以后增加。

所以问题是如何设计attributes_id?使其成为指向数据库元数据(例如INFORMATION_SCHEMA)的外键以指向另一个表的好主意吗?我应该引入另一个表格来管理这种关系吗?

动态SQL是一种选择,但是我认为这不是一个好主意,因为ifelse的情况应该会增加。

还是我应该放弃设计查询,只使用ORM在NodeJS端实现这种逻辑?

谢谢!

1 个答案:

答案 0 :(得分:1)

一种解决方案是创建一个额外的表,用于存储attribute_idtable_name

    Create table attibute_tablename(
    attribute_id int(11),
    table_name varchar(25),
    PRIMARY KEY (attribute_id, table_name)
    )

如果需要,还可以将外键添加到product表中。 然后,对于每个添加的新项目,您只需要在此表中插入