2013-06-14 2 views
0

MySQL 데이터베이스에서 데이터 기록을 만드는 더 좋은 방법은 무엇입니까?MySQL의 데이터 내역 만들기

나는 Project, Task, Activity 및 Phase 테이블을 가지고 있으며, 일부 데이터를 업데이트 할 때마다 변경 사항마다 기록을 만들어야합니다. 사실 Project, Task, Activity 및 Phase를 관리하는 ProjectManager를 만들었습니다. 나는이 연결이 있기 때문에 :

하나의 프로젝트는 많은 작업으로 구성되며, 많은 활동으로 구성되며, 활동은 여러 단계로 구성됩니다.

그래서 예를 들어, 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 
} 

감사합니다.

+0

http://stackoverflow.com/questions/17052488/best-practices-with-historical-data-in-mysql-databse/17053042#17053042 –

+0

[수정을위한 데이터베이스 디자인] (http : // stackoverflow. com/a/17002243/684229) – TMS

+0

@Tomas 자세한 내용으로 업데이트를 확인하십시오. 링크가 내 문제에 대한 좋은 대답을 가지고 있지 않습니다. 고맙습니다! – Andriel

답변

0

나는 날짜 (주, 월, 분기, 연도)별로 분할 된 히스토리 테이블을 만들고 트리거를 사용하여 삽입합니다. 이렇게하면 이전 파티션을 아카이브 및 제거 전략으로 이동할 수 있습니다.

모든 트랜잭션 테이블이 해당 스키마를 공유 할 수 있습니다. 역사와 트랜잭션을위한 이중 스키마를 만드는 것이 더 좋을 것 같습니다. 트랜잭션 스키마는 분석에 적합하지 않을 수 있습니다 (예 : 후자에 대한 스타 스키마).

+0

자세한 내용을 업데이트하고 확인하십시오. 내 생각에 링크에 대한 좋은 대답이 없습니다. 고맙습니다! – Andriel