다 대 다 관계의 설계 0 4 685

by lololala [DB 모델링/설계] 다대다 설계 [2019.10.10 13:13:06]


안녕하세요, 사내 인트라넷 구축중인데, 하는 도중 DB 설계부분에서 막혀서 도움을 받을 수 있을까 해서 올립니다.

구성은 이렇습니다.

먼저, 고객 테이블이 있고, 캠페인 테이블이 있습니다.

캠페인과 고객의 테이블은 N:N 관계입니다.

근데 이 수가 많아서.. 이렇게 짜도 되는건지 의문이 생깁니다.

보통 N:N 관계에 있으면 중간의 테이블을 둬서 id로 매핑을하게 되는데 

(예를들어 캠페인 id 1, 고객 id 는 1~100 으로 2개의 필드에 총 100개의 행 )

1개의 캠페인에 고객이 10000명이 될경우 1만개의 행이 생기고, 캠페인이 만약 10000개가 생긴다면 10000 * 10000개의 행이 생깁니다.

 

차선책으로 캠페인 테이블에 고객_ids 필드를 둬서 text 타입으로 1,2,3..,10000 으로 둘 경우도 생각해봤는데.. 길이가 길면 잘려지는 경우도 있어서 이건 택도 없네요..

 

양방향 검색도 되어야되는지라.. 어떻게 설계하면 좋을지 조언 부탁드립니다. 감사합니다.

by jkson [2019.10.10 13:49:16]

모델링을 많이 안 해봐서 조언드릴 능력은 안 됩니다만..

캠페인이 10000개, 캠페인 하나당 고객이 10000명이라면 10000*10000개의 데이터가 존재해야하는 게 정상이고

양방향 조회라면 해당 테이블에 캠패인과 고객에 각각 인덱스 설정해두면 될 것 같은데

어떤 문제 때문에 모델링에서 막히시는 건지요?


by lololala [2019.10.10 13:54:41]

혹시 성능상 문제가 될까 싶어서요..ㅎㅎ..대용량은 처음인지라..

너무 미리 걱정한걸까요..

캠페인과 고객에 각각 인덱스를 설정해두면 될 것 같다고 하신건 검색되는 필드들을 다 인덱스 설정하면 될 것 같다고 하신거죠?


by jkson [2019.10.10 16:04:43]

모델링에 관한 지식이 짧아 어떤 게 좋다 말씀드리지는 못하겠습니다.

캠페인고객테이블에 양방향으로 인덱스 있으면 괜찮지 않을까 생각합니다.

*캠페인테이블, 캠페인고객테이블, 고객테이블

*캠페인고객테이블(캠페인,고객)

*index(캠페인,고객), index(고객,캠페인)

 


by 꼬랑지 [2019.10.11 10:57:43]

다:다 관계라면 교차엔터티를 두는게 맞는 것 같고요

데이타 양이 문제가 된다면 , 캠페인은 분명 유효기간이 있을 겁니다. 종료되어 버린 켐페인 정보는 별도로 옮겨 두는 것도 방법일 수있습니다

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