database - 由两个主键标识的值的数据库设计
问题描述
我有一个 event_id、role_id 和 rank 表。下表应该有助于可视化我们期望的关于约束的各种结果:
scenario Event_Id Role_Id Rank
1 1 1 1 good
2 1 2 1 bad
3 2 1 1 good
Event_Id 是 Event 表的主键。
Role_Id 是 Role 表的主键。
使用事件和角色,我们可以找到与该给定事件的该角色相关联的等级。
一个角色可以用于具有不同等级的多个事件(场景 1 和 3)
但是,对于同一事件,两个角色不应具有相同的等级。(场景 1 和 2)
我们如何建立这些约束,以便我们可以在给定事件中识别给定角色的等级,但角色的等级仅在该事件中是唯一的?
解决方案
你需要有两个独特的约束。
第一个是您的“自然”候选键Event_Id
plus Role_Id
。Rank
这意味着对于任何给定的事件和角色组合,您只有一个可能的值。
现在,要强制任何给定 Event 只能有一个具有给定 Rank 的 Role 的约束,您需要对plus的组合进行第二个唯一约束。Event_Id
Rank
推荐阅读
- android - 如何使用 EditText 避免“空字符串异常”
- azure - While creating a yaml pipeline, can we commit yaml file to a branch other than master?
- android - (android) 当我在 xml 布局中声明一个片段时,我无法在片段中获取数据
- python - 有效地查找非零RGB像素python
- gtsummary - tbl_summary ( gtsummary) 转置 p 值
- python - Python 脚本使用 cron 作业运行了好几周,现在它给出了 KeyError
- java - 如何生成数组的 100 个随机排列以存储在 ArrayList 中
- c++ - libgsl.so.25:无法打开共享对象文件:没有这样的文件或目录 Google Colab 项目
- c - 如何检查socket绑定的IP地址是否还存在?
- python - 读取多个文件,搜索字符串并存储在列表中