嗨,我正在使用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端实现这种逻辑?
谢谢!
答案 0 :(得分:1)
一种解决方案是创建一个额外的表,用于存储attribute_id
和table_name
。
Create table attibute_tablename(
attribute_id int(11),
table_name varchar(25),
PRIMARY KEY (attribute_id, table_name)
)
如果需要,还可以将外键添加到product
表中。
然后,对于每个添加的新项目,您只需要在此表中插入