sql - 有条件地加入 Postgres

标签 sql postgresql join database-design

我有一个带有字段的 Postgres 表 log_actions:

id - 操作的 id
用户ID
操作 - BAN、ADD_PROCESS 等...
action_id

action_id 是来自下表之一的 id:
user_bans for action=BAN
user_processes 用于 action=ADD_PROCESS

  1. 我的第一个问题是拥有这样的架构没问题。我的意思是 action_id 字段,它包含不同表的 id。
  2. 如果是,那么我将不胜感激任何有关如何有条件地加入 log_actions、user_bans、user_processes 的帮助。我阅读了文档,但没有意识到如何去做。 提前致谢。

最佳答案

我反对这样的设计,因为它排除了使用外键进行完整性控制。 (您可能想研究实体子类化。)它看起来也好像您有一个规范化问题,因为 action_id 似乎在功能上确定 action 而不是 super 键。

关于sql - 有条件地加入 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51404035/

相关文章:

SQL:COUNT() 项目在一对多关系中多次出现? GROUP BY 的替代方案?

sql - PostgreSQL 同比增长

mysql - Sequelize GROUP BY 仅在主表而不是连接中的完整连接表上聚合

MySQL连接查询与where条件和不同记录

sql - 如何使用连接而不是两个子查询

MySQL INSERT WHERE 变量不重复

mysql - SQL n :m Inheritance join

如果使用声明参数,则像 sql 一样查询速度慢,如果不使用则查询速度快

AMD64 上的 ruby​​ postgreSQL

java - 将 hsqldb 与 Ibatis 结合使用来测试生产中依赖于 Postgres 的配置