강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của uuuuuup
uuuuuup

câu hỏi đã được viết

Thực hành lập mô hình RDBMS

Quản lý kho (hàng tồn kho/lưu kho/vận chuyển)

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

Viết

·

469

0

안녕하세요.

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

예를들면,

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

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

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

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

확인 부탁드립니다.

감사합니다.

 

DBMS/RDBMSMSSQLoracle데이터 엔지니어링

Câu trả lời 5

0

kjlee님의 프로필 이미지
kjlee
Người chia sẻ kiến thức

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

0

uuuuuup님의 프로필 이미지
uuuuuup
Người đặt câu hỏi

아 그렇군요

도움이 많이 되었습니다

감사합니다

0

kjlee님의 프로필 이미지
kjlee
Người chia sẻ kiến thức

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

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

0

uuuuuup님의 프로필 이미지
uuuuuup
Người đặt câu hỏi

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

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

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

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

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

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

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

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

 

0

kjlee님의 프로필 이미지
kjlee
Người chia sẻ kiến thức

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

Hình ảnh hồ sơ của uuuuuup
uuuuuup

câu hỏi đã được viết

Đặt câu hỏi