嗨,我正在使用 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 端实现这样的逻辑?
谢谢!
最佳答案
一种解决方案是创建一个额外的表来存储 attribute_id
和 table_name
。
Create table attibute_tablename(
attribute_id int(11),
table_name varchar(25),
PRIMARY KEY (attribute_id, table_name)
)
如果需要,您还可以向 product
表添加外键。
那么您只需要为添加的每个新项目插入此表
关于mysql - 根据列值链接另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59032988/