인프런 커뮤니티 질문&답변

굿데이님의 프로필 이미지
굿데이

작성한 질문수

RDBMS Modeling 실습

창고(재고/입고/출고) 관리

테이블 설계관련 문의드려요

작성

·

346

0

안녕하세요.

테이블 설계하다보니 궁금증이 생겼습니다.

예를들면,

User ----< JoinCall >---- Call

이런식으로 User, JoinCall, Call도 계속 늘어나는 상황입니다.

특정 User가 참여한 Call 중에서 특정 callStatus만 찾아내려 하는데 검색 속도를 높이기 위해서는 JoinCall에도 callStatus가 들어가야 할 것 같습니다.

검색속도롤 높이기 위해 이런식으로 중복 데이터가 있게 설계를 하는 경우도 있을까요?

확인 부탁드립니다.

감사합니다.

 

답변 5

0

이교준님의 프로필 이미지
이교준
지식공유자

Call에 대한 정의가 명확하지 않아서 좀더 설명해 주셔야 할 것 같습니다. 속도는 문제가 없어 보이는 것이 UserId가 PK일 것입니다. 그리고 CallId가 무엇인지는 모르지만 이것도 PK이기 때문에 두 조건을 만족하는 도메인 내에서 특정 status를 찾는 겁니다. 많아봤자 몇천개 정도? 만일 한 User의 JoinCall 갯수가 수십만개로 간다면 그 때는 CallStatus를 별도 테이블로 독립시키고 JoinCall 테이블에 참여시켜서 CallStatus 조차도 PK로 검색될 수 있게 하면 되겠습니다.

0

굿데이님의 프로필 이미지
굿데이
질문자

아 그렇군요

도움이 많이 되었습니다

감사합니다

0

이교준님의 프로필 이미지
이교준
지식공유자

네. 여러가지 방법이 있겠어요. Joincall에. CallStatus가 추가도는게 중복이라고 생각하시지만 중복이라기 보다는 역정규화라고 볼 수 있어요.

User에 대해서 UserCallStatus테이블을 만들어서 사용할 수도 있죠. 사용자 입장에서 보기 위해서는 Call은 도움이 안되잔아요. 결국 useeid가 들어간 어떤 테이블이 필요한 거죠

0

굿데이님의 프로필 이미지
굿데이
질문자

아... 제 질문이 명확하지 않았네요.

일단 화상회의라고 보면 될 것 같습니다.

하나의 화상회의에 여러명의 유저가 접속한다고 가정하면

User에는 User정보가 들어갑니다.

JoinCall에는 User별로 화상회의 Room에 들어가기위해 부여된 패스워드가 있습니다.

Call에는 Room이름이나 화상회의 상태정보(생성되었음/시작했음/끝났음)도 들어갑니다.

한 유저가 참여하고 있는 모든 Call들에 대해 상태별로 빠르게 검색하려면 JoinCall에 상태정보를 중복으로 넣어야 가능할 것 같아서 질문드렸습니다.

날짜 등으로 검색하게 제한을 두는 방법도 있겠지만 전체를 보기에는 상태별 검색이 더 좋아보이네요.

 

0

이교준님의 프로필 이미지
이교준
지식공유자

Call에는 어떤 컬럼들이 있나요? 그리고 joincall은 어떤 컬럼을 가지고 있나요? 아직 질문이 무엇인지 정확한 판단이 안됩니다

굿데이님의 프로필 이미지
굿데이

작성한 질문수

질문하기