데이터 모델링에 대하여 의견을 듣고 싶습니다. 0 2 656

by 재팬종쿤 [DB 모델링/설계] MySQL Data modeling [2019.08.16 14:17:21]


example.png (1,767,013Bytes)

안녕하세요. 

새로운 기능을 추가하기 위하여 신규 테이블을 준비할 때, 고민을 하게 되는 점이 있어서 글을 올리게 되었습니다.

 

본론으로 들어가서... 예를 들어서 설명드리겠습니다.

저희 시스템을 이용하여 A 라는 회사원이 채팅, 업무 관리, 스케줄 관리를 하고 있다고 가정하겠습니다.

위의 세가지 기능들에 대하여 이벤트가 발생하면 알림을 알려주어야 합니다.

- A 회사원에게 채팅이 오면 알림을 전송

- 업무를 지시 받으면 알림을 전송

- 스케줄 시간이 되면 알림을 전송

 

모든 알림을 리스트화 해서 보여주어야 하는 기능을 추가한다고 했을 때, 저는 첨부한 이미지와 같이 세 가지의 패턴을 고려했습니다.

간단히 설명 드리면

1번의 경우는 알림이 채팅, 업무, 스케줄 인지 판별하기 위한 중간 테이블을 만들어서 알림 테이블과 연결하는 방식

2번의 경우는 알림 테이블이 채팅, 업무, 스케줄을 포함하고 있는 상태에서, 채팅인 경우 업무와 스케줄은 NULL

3번의 경우는 type을 이용하여 채팅, 업무, 스케줄 인지 판별

 

알림 테이블의 양은 적어도 500GB를 넘는 다는 가정하에 고려 중입니다.

어느 패턴이 더 나은 지, 혹시 다른 패턴이 좋지 않냐 라는 의견이 있으시면 댓글 부탁드리겠습니다!

 

감사합니다.

 

by 타울 [2019.08.16 18:54:27]

3번이 가장 깔끔해보이네요. 실제 관계선은 그리지 않으셨지만, type 에 따라 베타적으로 관계가 그려질것 같아요.


by 재팬종쿤 [2019.08.19 12:28:08]

답변 감사합니다.

3번을 이용하는 경우 어플리케이션의 로직은 간단하겠지만, 디비 면에서는 데이터 무결성 제약조건을 걸 수 없어서 조금 고민이네요.

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