【发布时间】:2019-11-25 09:51:50
【问题描述】:
您好,我正在使用 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 端实现这样的逻辑?
谢谢!
【问题讨论】:
-
EAV models 并不是特别强大的 SQL 套件。
标签: mysql orm entity-attribute-value