创建具有可见历史记录的数据库条目?

时间:2018-08-31 22:01:11

标签: mysql mariadb

我属于一个小组,正在为我们的应用程序创建一个网站。我们认为,使用下面的表结构(称为bug_summary)来创建一个Bugtracker会很有用:

bug_id    Summmary    Details        Assigned Dev
------    --------    -------        ------------
1         Bug 1       Broken         Scott
2         Bug 2       Add Feature    Dave
3         Bug 3       Design Bug     Jimmy
4         Bug 4       Broken         Carly

我想拥有另一个表,该表专门保存开发者输入的更新,但仍“链接”到ID。假设bug_update表中有5个更新。

update_details    bug_id_for_update
--------------    -----------------
Jan 1st update    2
Jan 2nd update    2
Jan 2nd update    1
Jan 2nd update    4
Jan 4th update    2

我希望其中3个“属于”第二个错误报告。是否有“最佳”方法来做到这一点?我正在使用phpMyAdmin,如果有什么区别。

感谢您对此设置的任何帮助,非常感谢。

2 个答案:

答案 0 :(得分:0)

似乎bug_update行与bug_summary行具有多对一关系。每个摘要项可以具有零个或多个更新项。这完全适合您的用例。

您可能应该在bug_update表中添加某种序列号,或者至少添加一个时间戳,以便可以按输入的顺序显示错误更新信息。 (请记住,SQL数据库记录没有可靠的自然顺序;您必须指定它。)

您可以使用自动递增的更新ID。或者您可以use DEFAULT CURRENT TIMESTAMP执行此操作。

答案 1 :(得分:0)

在您感兴趣的列更新时,在bug_summary表上编写更新时触发器,以创建并输入bug_update表中。您可以记录感兴趣的字段的旧值和新值。请确保将bug_summary表的主键记录为bug_update表中的字段,以便您轻松进行联接查看单个条目的更新。您可能还想创建一个字段来记录时间戳,以确切了解更新发生的时间。

http://www.mysqltutorial.org/create-the-first-trigger-in-mysql.aspx本文演示了这一概念