“Created By”和“Modified By”的数据库设计

时间:2014-01-23 20:49:35

标签: database-design one-to-many

我有一个问题,我希望对于在数据库设计方面经验丰富的人来说非常简单:

如果我有一个类似于wiki的应用程序,那里有作者和帖子(这里称为“资源”),我想表明作者可以“拥有”许多帖子。所以我在考虑一对多的关系。所以我做到了。

但后来我开始思考,我不仅要代表撰写帖子的人,我还希望能够告诉谁修改了它。那么这将是一个表与另一个表的特定字段之间的关系,或者是什么?我不知道这是怎么回事。但基本上我想记录每个资源的作者,谁创建它,以及谁修改它。

到目前为止,这是简单的模型:

enter image description here

更新:

我进行了更多的实验,而不是真的知道这是否正确,我想要实现这一目标的最佳方法是创建两个一对多的关系,我重命名创建的外键(在MySql Workbench中自动生成,那是分别对created_by和modified_by ......

我是在正确的轨道上还是这不是正确的方法? (在此示例中,我将作者重命名为user,但这并不重要)

enter image description here

3 个答案:

答案 0 :(得分:1)

根据我们通过评论进行的沟通......

看起来您只需要两个外键(一个用于“创建者”,另一个用于“由用户修改”),就像您在编辑问题时所显示的那样。

答案 1 :(得分:0)

您的created_by和modified_by应根据id列与您的作者表关联。在规范化结构中,我不会将作者的名称存储在资源表中;只是作者身份。

答案 2 :(得分:0)

我认为您将为wiki条目与不可编辑的WIKI_ENTRY_HISTORY表建立关系,该表将按时间顺序存储特定Wiki页面的历史记录。同样,它将有一个HISTORY_CODE(或你给它的任何名称),它将包含一个数字CODE,告知DBA发生的事件类型(回滚,创建等).CODE将以1:1的方式链接到WIKI_CODE_INFO,其中包含WIKI_CODE的文本翻译(即WIKI_CODE = 1 == WIKI_CODE_INFO ='创建')。