0

在 MySQL 数据库中创建历史数据的更好方法是什么?

我有一个项目、任务、活动和阶段的表,每次更新一些数据时,都需要为每个更改创建一个历史记录。事实上,我创建了一个 ProjectManager 来管理项目、任务、活动和阶段。因为我有这些链接:

一个Project由多个Task组成,Task由多个Activity组成,Activity由多个Phase组成。

所以,我不知道创建一个 Historical_Phase、一个 Historical_Activity、Historical_Task 和 Historical_Projet 是否是解决我的问题的更好方法?

还是 ProjetMediator_Historical 更好?

我从来没有用过这个,任何人都可以帮助我,好吗?

请参阅下面的 ProjectMediator relashionships 代码:

public class ProjetMediator implements Serializable {

    private static final long serialVersionUID = 1L;

    public static final String FIND_PROJECT_BY_ID_PROJECTMEDIATOR = "ProjetMediator.findProjetMediatorByIdProjet";

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @OneToOne
    @JoinColumn(name="id_projet")
    private Projet projet;


    @ManyToMany( targetEntity=Tache.class, fetch=FetchType.LAZY )
    private List<Tache> taches;

    @ManyToMany( targetEntity=Activite.class, fetch=FetchType.LAZY )
    private List<Activite> activites;

    @ManyToMany( targetEntity=Phase.class, fetch=FetchType.LAZY )
    private List<Phase> phases;
       //get and sets
}

谢谢你。

4

1 回答 1

0

我将创建一个按日期(周、月、季度、年)分区的历史表,并使用触发器将其插入其中。这样您就可以将旧分区作为归档和清除策略。

所有事务表都可以共享该模式。我更愿意为历史和事务创建双重模式。事务模式可能不适合分析(例如后者的星型模式)。

于 2013-06-14T09:57:43.350 回答