如何在mysql中创建多个表的关系?

时间:2014-10-22 00:04:06

标签: mysql

我现在在做什么,可能会弄错:

users:
id,name

actions:
id, user_id

events:
id, action_id, description

posts
id, event_id, text

我想要的是什么:

用户可以创建许多操作。

一个动作可以有一个事件

一个事件可以有很多帖子,但应该只与一个事件相关

"技巧"我希望我的动作有很多帖子,所以我假设创建事件表是对的。

假设这种情况应该建立什么样的关系?

1 个答案:

答案 0 :(得分:0)

An Action can have many posts but should be related to just one Event开始,这是一个简单的连接。

SELECT users.*, actions.*, events.*, posts.* FROM users 
LEFT JOIN actions ON users.id = actions.user_id 
LEFT JOIN events ON actions.id = events.action_id
LEFT JOIN posts ON events.id = posts.events_id

正如上面的评论中所提到的,如果一个动作只有一个事件,并且该事件对该动作是唯一的,则不需要事件表 - 这意味着该事件不会被使用在未来通过另一个行动。


关于您An Action can have many posts but should be related to many Events以上的评论,这不会改变联接。