MySql 共享查找表

标签 mysql foreign-keys relationships

我有两个“事件”类型的表,它们都可以包含与事件相关的“用户”列表。我想为用户使用一个通用的查找表,但我不确定如何设置 FK。

Highlight:
|ID   |Details|

Event:
|ID   |Details|

Contacts:
|event_id  |highlight_id  |user  |type |

这实际上不起作用,因为 event_id 和/或 highlight_id 可能为空,具体取决于我处理的事件类型。

如果可能的话,我想避免为每个事件使用查找表

最佳答案

我肯定会为 user_event 和 user_highlight 使用单独的查找表。除非有充分的理由创建 user_id|event_id|highlight_id 关系(行),否则以这种方式定义它毫无意义。

events
+-----+
event_id
detail

highlights
+---------+
highlight_id
detail

users
+----+
user_id

user_event
+---------+
user_id  (FK)
event_id (FK)

user_highlight
+-------------+
user_id       (FK)
highlight_id  (FK)

关于MySql 共享查找表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22303816/

相关文章:

mysql - 在 3 个表之间选择/插入数据

MySQL合并一些空值,而不是全部空值

mysql - InnoDB监控输出不清晰,外键约束失效

c# - 如何在 Entity Framework Code First 中设置 0..* 关系?

ruby-on-rails - 如何在 Rails 中建立相互的友谊

mysql - Shell 脚本 - 数学运算和循环

mysql - 如何在 Windows 中使用 RMySQL?

delphi - ElevateDB 关系模型的注意事项

mysql - Django IntegrityError 外键重复条目

php - Laravel/Ardent - 在 save() 上,错误 : Relationship method must return an object of type Illuminate