sql - 使用一个 "primary"值实现多对多

标签 sql ruby-on-rails postgresql activerecord

我有很多产品,每个产品都可以属于多个类别。

products: id, ...
products_categories: product_id, category_id
categories: id, ...

现在我想要有许多产品,每个产品都有一个主类别和 0 个或多个次要类别。我可以想到两种在 SQL 中对此进行建模的方法。

  1. is_primary 列添加到 products_categories

  2. 产品添加primary_category_id

在纯 SQL 和/或 ActiveRecord 中实现此目的的最佳方法是什么?我正在使用 PostgreSQL,因为它物有所值。

最佳答案

我会选择第一个选项,除非我有充分的理由选择 2(例如获取主要类别时额外加入的成本)

原因:无论如何,您可能需要将主要类别添加到product_category表中(以便在查询中以统一且简单的方式使用它,例如获取产品的所有类别) 选项 1 避免重复主要类别,因此更简单

关于sql - 使用一个 "primary"值实现多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5738426/

相关文章:

sql - 是否可以进行递归 SQL 查询?

ruby-on-rails - 每次更改后无需预编译 Assets 即可在本地工作?

ruby-on-rails - 在 Ubuntu 12.04 上使用 rvm 安装 Ruby on Rails

postgresql - 使用 Airflow helm2 图表获取 pod 具有未绑定(bind)的即时 PersistentVolumeClaims

postgresql - 如何声明具有非空检查约束的用户定义域类型的变量

python - Flask 和 SQLAlchemy 的 "unexpected EOF on client connection"

mysql - 使用 where 子句合并 2 个 sql 语句

php - 日期范围正好是 1 个月的 MySQL 查询

mysql:使用 LIKE 选择多列

ruby-on-rails - Scaffold Rails 3 View 中的外键下拉列表