mysql - sql数据库中列值的多表约束

标签 mysql sql database sqlite database-design

我有一个三个表,一个项目表,可能有很多项目,一个科目表,每个项目都有很多科目,还有一个条件表,每个科目都有一个条件,一个项目可能有很多条件。

鉴于主题必须位于其中一个项目中,如何根据项目链接到的条件来限制主题可以具有的条件。

希望这是有道理的。另外,我正在考虑使用 sqlite,但是如果不可能用数据库系统做这样的事情,是否存在可以做到的?最好是免费且基于 sql 的,即 mysql 或 postgresql。

谢谢。

编辑:一些示例;

项目 A 具有条件 1、2 和 3。所有条件都取自具有条件 1、2、3、4、5 的条件表。现在主题 X 是项目 A 的一部分,因此只应允许假设条件 1、2、3 而不是 4 或 5。

这可能吗?

最佳答案

看起来您需要类似的东西:

enter image description here

此设计的关键方面是使用识别关系以及生成的复合键。这使我们能够迁移 PROJECT.PROJECT_ID:

  • 不只是直接到SUBJECT
  • 也可以通过 CONDITION 然后到 SUBJECT。

这两条迁移“路径”最终都会合并到同一字段中(注意 SUBJECT.PROJECT_ID 前面的 FK1,FK2),这确保当主题连接到条件时,它们都必须连接到同一个项目。

关于mysql - sql数据库中列值的多表约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20998529/

相关文章:

mysql - 100K以上记录的mysql表如何正常添加一列?

php - 单页网站的后退按钮

php - 选择 * 不会在 php mysql 中打印任何内容

MySQL:更新太慢

mysql - 什么命令可以查看表之间的关系?

mysql - 无限制获取最后记录的任何更好的选择

sql - 重复主键sql

sql - 在间隔桶中分配时间

python - 将每个单引号/双引号替换为\' or\"

mysql - 代理/中继 mysql 连接(以便服务器看起来在本地主机上)