我有一个问题,我希望对于在数据库设计方面经验丰富的人来说非常简单:
如果我有一个类似于wiki的应用程序,那里有作者和帖子(这里称为“资源”),我想表明作者可以“拥有”许多帖子。所以我在考虑一对多的关系。所以我做到了。
但后来我开始思考,我不仅要代表撰写帖子的人,我还希望能够告诉谁修改了它。那么这将是一个表与另一个表的特定字段之间的关系,或者是什么?我不知道这是怎么回事。但基本上我想记录每个资源的作者,谁创建它,以及谁修改它。
到目前为止,这是简单的模型:
更新:
我进行了更多的实验,而不是真的知道这是否正确,我想要实现这一目标的最佳方法是创建两个一对多的关系,我重命名创建的外键(在MySql Workbench中自动生成,那是分别对created_by和modified_by ......
我是在正确的轨道上还是这不是正确的方法? (在此示例中,我将作者重命名为user,但这并不重要)
答案 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 ='创建')。