2011-03-03 2 views
1

나는이 상황을 이미 다루고있는 사람들에게 그들의 경험을 나누어달라고한다.비즈니스 프로세스 과정에서 데이터베이스의 엔티티 상태를 캡처하는 방법은 무엇입니까?

사용 사례 :

비즈니스 주문 시스템에 제공>> 주문 처리> 성공적 여부 중 하나를 충족 보류> 활성 접수 또는 만료된다.

표시 되나요? 엔티티에는 적어도 4 개의 상태가 있습니다. 내가하고있는 일은 주 테이블 "주문"과 orderIds (활성, 만료, 보류 중) 만 포함 된 네 개의 다른 테이블이 있고 다른 상태의 주문을 쿼리 할 때 JOINS를 수행한다는 것입니다.

거대한 테이블 주문은 읽기 전용이지만 성능의 관점에서 매우 효과적이되도록, 기록되지되고있는이 방법 ...

이 사용 사례에 대한 기술은 무엇인가?

답변

0

성능 (쓰기 제거)으로 인해이 사용 사례에 추가 테이블이 필요하다는 것이 옳습니다. 그러나 4 개의 테이블을 사용하면 반복을 계속할 때 많은 유지 관리 문제가 발생할 수 있습니다.

나는 아마 단지에게 OrderStatusCode 테이블 (OrderID를, statusId를) 만들 것 그리고 당신이 할 수는

select * from order 
    inner join activeorder 
     on 
    order.orderID = activeorder.ActiveOrderID 
     WHERE activeorder.status = 'l' 

처럼 JOINS하지만 전체 비즈니스 사이클에 관해서는 없을 것이라는 점을 감지 더 후 6 10 엔티티 상태가 변경됩니다. 그것은 하나의 테이블에 모든 것을 가지고있어서 문제가되어서는 안됩니다. "status_id = x"선택에 대한 status_id에 대한 적절한 색인이있는 경우. 반면에 테이블을 추가하면 상태 코드와 관련된 몇 가지 추가 속성을 쉽게 추가 할 수 있습니다.