MySQL上的两个表的外键

时间:2012-03-10 11:08:20

标签: mysql database database-design

您好,您可以帮我解决以下情况吗?

1. News:
- id
- post
- member_nickname (foreign key to member.nickname) (author of the news)
- date

2. Chronicle:
- id
- event_id (foreign key to event.id)
- member_nickname (foreign key to member.nickname) (author of the chronicle)
- route
- content

3. Event:
- id
- calendarevent_id (foreign key to calendarevent)
- timestart
- timeend
- member_nickname (foreign key to member.nickname) (leader of the event)
- text

注意:在所有三种情况下,member.nickname可以是不同的人)

关系

- event : chronicle -  1:1
- news : (chronicle or event) - 1:1 

问题是如何用外键设计第二关系?键的名称也必须是 table.column 形式。如有必要,我可以添加一些额外的表格。

2 个答案:

答案 0 :(得分:0)

您需要在新闻中添加两列:

a)chronicleid - 新闻项目与之挂钩的编年史

b)eventid - 新闻项目与之关联的事件

答案 1 :(得分:0)

一种解决方案是同时拥有编年史和编年史。在新闻中偶然,他们两个都可以允许null。 然后你可以有一个编年史或一个事件,或者没有或两者都有。

如果您真的想要编年史或事件,那么您可以添加一个检查约束来执行此操作。