【发布时间】:2014-01-24 23:58:20
【问题描述】:
我有一个问题希望对数据库设计经验丰富的人来说很简单:
如果我有一个类似于 wiki 的应用程序,其中有作者和帖子(这里称为“资源”),我想表明一个作者可以“拥有”许多帖子。所以我在想一对多的关系。所以我就这么做了。
但后来我开始思考,我不仅想代表谁撰写了这篇文章,我还想知道是谁修改了它。那么这将是一个表的特定字段与另一个表之间的关系,还是什么?我不知道这将如何工作。但基本上我想记录每个资源的作者、创建者和修改者。
这是目前为止的简单模型:
更新:
我进行了更多实验,但并不知道这是否正确,我能想到的最好方法是创建两个一对多关系,在其中我重命名了创建的外键(在 MySql Workbench 中自动创建,即)分别为 created_by 和 modified_by...
我是在正确的轨道上还是这不是正确的方法? (在本例中,我将作者重命名为用户,但这并不重要)
【问题讨论】:
-
一个资源可以多次修改吗?如果是,您是否关心将修改历史存储在数据库中?如果是,您是要自己存储修改,还是只存储修改的人?
-
此时我并不关心历史。我只想了解为资源设置关系的正确方法,该资源可以让一个用户创作它,而另一个用户修改它。但此时我只需要保持每个的当前。我有更新,请检查问题。
-
那么它与
created_by并没有什么不同——它只是另一个FK。虽然您可能想要引用author.id(而不是author.user_name)。 -
好的,你的意思是和我最近的更新基本一样吗?即有两个外键,一个叫 created_by,另一个叫 modified_by,都引用 author_id(或最新示例中的 user_id)?
-
好的,那么如果你们俩都提出了这个建议,并且可以确认我现在有一个正确的解决方案,那么请将其添加为答案,我会为此给予你信任!谢谢!
标签: database-design one-to-many