안녕하세요.
새로운 기능을 추가하기 위하여 신규 테이블을 준비할 때, 고민을 하게 되는 점이 있어서 글을 올리게 되었습니다.
본론으로 들어가서... 예를 들어서 설명드리겠습니다.
저희 시스템을 이용하여 A 라는 회사원이 채팅, 업무 관리, 스케줄 관리를 하고 있다고 가정하겠습니다.
위의 세가지 기능들에 대하여 이벤트가 발생하면 알림을 알려주어야 합니다.
- A 회사원에게 채팅이 오면 알림을 전송
- 업무를 지시 받으면 알림을 전송
- 스케줄 시간이 되면 알림을 전송
모든 알림을 리스트화 해서 보여주어야 하는 기능을 추가한다고 했을 때, 저는 첨부한 이미지와 같이 세 가지의 패턴을 고려했습니다.
간단히 설명 드리면
1번의 경우는 알림이 채팅, 업무, 스케줄 인지 판별하기 위한 중간 테이블을 만들어서 알림 테이블과 연결하는 방식
2번의 경우는 알림 테이블이 채팅, 업무, 스케줄을 포함하고 있는 상태에서, 채팅인 경우 업무와 스케줄은 NULL
3번의 경우는 type을 이용하여 채팅, 업무, 스케줄 인지 판별
알림 테이블의 양은 적어도 500GB를 넘는 다는 가정하에 고려 중입니다.
어느 패턴이 더 나은 지, 혹시 다른 패턴이 좋지 않냐 라는 의견이 있으시면 댓글 부탁드리겠습니다!
감사합니다.