2016-07-11 7 views
-4

나는 이제이 데이터베이스에 봉착 작업어느 쪽이 더 나은 데이터베이스 설계

에 대한 로그가 포함 된 데이터베이스를 짓고 있어요입니다 상태 데이터

id || job_id || etc.. || job_status_id 

현재 작업 상태를 얻으려면 마지막으로 삽입 한 상태에 따라 달라 지지만 h arder는 쿼리

내가이 할 경우, 생각했다 : 채용 :

id || job_name || etc... || job_status_id 

하지만 job_status_id 이미

저장 될 때이 데이터를 반복 이어질 것 때문에 작업 테이블에 job_status_id를 추가하는 대신에 따라 최근 삽입 된 상태에서 현재 작업 상태 가져 오기 더 효율적입니다 (다른 이점도 있습니까?). 아니면 내가 이미 가지고있는 것에 충실해야합니까?

+1

비슷한 응용 프로그램이 필요합니까? –

+0

두 솔루션 모두 실행 가능합니다. 마지막'job_status_id'를'Jobs'에 추가하면 나중에 더 쉽고 빠르게 선택할 수 있습니다. (JON 및 복잡한 SQL 로직은 없습니다. **하지만 마지막 상태가 항상 정확한지 확인해야합니다. ie implement 이를 업데이트 할 job_log에 대한 트리거가 있습니다. 삽입 및 업데이트는 약간 느려질 것입니다. –

답변

0

필요에 따라 다릅니다. 마지막으로 삽입 된 상태를 얻기 위해 더 복잡한 쿼리가 나오면 작업 상태 ID를 갖는 것이 좋습니다. 그 ID를 가지고 갈 것입니다. 만약 당신이 그 필드를 질의 할 필요가 있다면 마지막으로 삽입 된 상태가 작업 상태를 계산하는 것처럼 들리 겠지만 문제가된다면 그 필드에 인덱스를 던질 수 있기 때문입니다. 따라서 초기 삽입 또는 업데이트로 작업 상태를 생성하므로 매번 계산할 필요가 없습니다. 다시 말하면, 그것이 당신이 필요로하는 것이 성능이라면, 그것을 파생시키는 더 좋은 방법입니다. 스토리지는 저렴합니다. 정수를 말하는 것이므로 아무 것도 아닙니다. 우리가 여기서 20ms의 차이를 말하는 것이 아니라면. ;)

관련 문제