이런 업데이트 구조의 테이블을 어떻게 만들어야 하고 다른 테이블에선 어떻게 가져와야 하나요? 0 3 510

by 고등어통조림 [MySQL] [2019.07.11 01:45:39]


호출상태 테이블

1 호출대기
2 배차중
3 배차실패
4 배차전 취소(승객)
5 배차완료
6 배차후 취소(승객,기사)
7 10분후 도착
8 곧 도착(2분이내)
9 차량도착
10 탑승
11 하차완료

 

저런 호출상태 테이블이 있습니다

컬럼은 단순하게 오토로 만들어지는 인덱스, 상태값 번호(1~11), 상태설명 글자 

이렇게 3개로 구성이 될것 같은데요...

이걸 어떻게 만들어야 하는지 모르겠습니다..

왜냐면 현재 시간에서 도착까지 10분 남은 경우와 2분 남은 경우 이런게 존재하는데...

어떻게 이걸 만들어야 하는지 모르겠습니다..

 

그리고 이 호출상태 테이블을 만들고 이걸 예약테이블에서 가져와서 써야 합니다.

저 상태값 번호를 외래키로 잡아서 가져옵니다.

이건 그냥 일반적인 이너조인을 해서 가져오면 되나요?

어렵네요.... ㅠㅠ 

 

이 테이블들을 쓰는 경우에 대해서 더 자세한 설명을 덧붙이자면

콜택시에 사용하는 디비구조 입니다.

by 러드 [2019.07.11 08:17:03]

1번은

- 단순한 방식은 약속시간 - 현재 시간으로 계산해서 자바스케줄또는 db스케줄로 insert방법 이건 약속을 안 지키면 문제가 발생 할 수도 있습니다.

- 차량과 인터페이스(gps장치등)을 이용해 거리별 시간을 계산해서 상테값은 넣는방식인데.

이건 미팅을 통해서 해결 하셔야겠네요.

전에 저는 정문에 차량 출입 data를 5분단위로 인터페이스를 받아서 상태변경 했습니다.

2번

select *

    from 예약테이블 a

        ,     ( select *

, row_number( partition by 키 order by 상태값변경일자 desc ) as rn

     from 호출상태 테이블

) b

Where b.rn = 1 (최신상태추출)

      and a.키 = b.키

일반적인 방법으로 저는 사용합니다.


by 고등어통조림 [2019.07.11 11:49:32]

답변 감사합니다

그런데 단순히 호출 테이블에서 호출상태 컬럼에서 호출상태를  0 -> 1 -> 2 -> 3 이렇게 update 시켜도 될까요?

만약 이렇게만 한다면 호출상태의 이력이 남지 않아서 자신이 호출을 취소했다거나 혹은 탑승 완료했다거나 이럴 경우 이력 조회가 안 되서 좋지 않을까요?

 

아니면 아예 호출테이블에서 호출상태 컬럼을 업데이트 시키는 게 아니라

그 호출 상태가 변할때마다 레코드를 복사(?)해서 상태값만 다른 레코드를 생성해야 하나요?

 

이런 비지니스의 경우 일반적으로 어떻게 돌아가는지 모르겠습니다

 


by 러드 [2019.07.11 19:11:14]

개인적으로 상태 변경처리시 insert가 좋아 보이네요!!

이유는 지금까지  진행 과정 상태를 알고싶은 경우 때문입니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입