我有一个包含一些用户和代理的数据库,并想添加一个简单的消息系统。
所以我有以下一组简单的表格:
[users]
- user_id (PK)
[agents]
- agent_id (PK)
[message_threads]
- message_thread_id (PK)
[message]
- message_id (PK)
- message_thread_id (FK messages_threads.message_thread_id)
我没有来自消息和发布消息的个人的关系。
我有点卡住了,因为它可能是用户或代理。我认为这一定是一个常见问题,需要解决一个公认的模式,但我还没有找到这样的讨论。
我知道我有几个选择,但它们都有缺点。
选项 1: 我不喜欢一条消息可以将两个链接到不同的帐户。
[message]
- message_id (PK)
- message_thread_id (FK messages_threads.message_thread_id)
- user_id (FK users.user_id, ALLOW NULL)
- agent_id (FK agents.agent_id, ALLOW NULL)
选项 2: 这使得在 SELECT 的一列中获取所有消息变得很尴尬。
[message_by_user]
- message_id (PK)
- message_thread_id (FK messages_threads.message_thread_id)
- user_id (FK users.user_id)
[message_by_agent]
- message_id (PK)
- message_thread_id (FK messages_threads.message_thread_id)
- agent_id (FK agents.agent_id)
我无法将用户和代理合并到一张表中的一件事。那是一成不变的。