mysql - 根据列值链接另一个表

标签 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 端实现这样的逻辑?

谢谢!

最佳答案

一种解决方案是创建一个额外的表来存储 attribute_idtable_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/

相关文章:

Java Servlet 使用 HTML 表单创建 MySQL DB 并对其进行排序

php - Doctrine 同表关系问题?

postgresql - Erlang boss_db Hello World ?

Django ORM : is it possible to inject subqueries?

sql - 可以使用 postgres 获取 json 数组中值的平均值吗?

php - EAV、架构更改、Json?

php - 使用 mysql_query 和 mysql_fetch_array

mysql - 如何存储本质上是与 SQL 中的唯一值相关联的列表的数据

jquery - 当盒子充满 jquery .post() 时从 mysql 获取行

mysql - 实体-属性-值表设计