数据库记录的版本控制

时间:2015-12-14 12:13:45

标签: mysql version-control

我不知道该怎么称呼它,因为它实际上是我第一次遇到这个问题。但是我相信除了我之外的其他人都有这个问题。因此,我正在寻找一个优雅的解决方案。

我的例子:

首先是一些背景,我正在运行一个应用程序,允许用户创建像“模块”这样的Powerpoint供客户查看。

为了控制这些,我有以下两个数据库表:

模块

Table: module
Columns:
id  int(11) AI PK
name    varchar(75)
description text
category_id int(11)
module_type_id  int(11) PK
gives_score tinyint(4)
duration    varchar(70)
price   varchar(45)
score_to_pass   int(11)
gives_certificate   int(11)
is_rtl  int(11)
price_6_month   varchar(45)
price_12_month  varchar(45)
is_active   int(11)
is_in_focus int(11)
caption text

module_component

Table: module_component
Columns:
id  int(11) AI PK
text    text
sound_path  text
video_flv_path  text
video_mp4_path  text
image_path  text
document_path   text
sort_number int(11)
component_type_id   int(11)
question_id int(11)
question_type_id    int(11)
module_id   int(11) PK
content_type    varchar(100)

现在有时在这些模块中,我们的客户想问问题(因此表question_id中的module_component

因此,为了让这里的所有数据都是question table

问题

Table: question
Columns:
id  int(11) AI PK
question    text
question_type_id    int(11) PK

question_answer

Table: question_answer
Columns:
id  int(11) AI PK
answer  text
is_correct  int(11)
question_id int(11) PK
question_question_type_id   int(11) PK

现在好了解确切的问题:

问题在于,有时需要更改这些模块内容,或者拥有它们的公司都有新的更新策略,或者需要添加新的问题或视频内容。

但是,如果我们只是要更改当前模块及其组件,那么所有已经使用该模块的人都会有损坏的数据。

此外,对不同语言的需求也越来越多。

因此,我需要做下面这样的事情:

enter image description here

然后当有人更改模块时会发生类似情况:

enter image description here

现在很容易看出,在很短的时间内,很多冗余数据将保留在数据库中。 我的问题是,当提到这种规模的版本控制时,我正在提出最佳选择。或者是否有工具/方法使这样的事情变得更容易?

以上方法(我展示)基本上只是复制和粘贴每个版本。

简化数据库图表

这是一个简单的图像,显​​示数据库图表当前的外观(没有此问题的不必要的列)

enter image description here

0 个答案:

没有答案