음.. 그렇다면
그룹테이블과 멤버쉽테이블 둘다 있어야 하지 않을까요?
그냥 생각하기에는
그룹테이블
: 그룹아이디, 그룹명, 그룹설명 ...
멤버쉽테이블 - 누가 어느그룹에 속하더라..
: 개인주소록아이디, 그룹아이디
개인주소록테이블
: 개인주소록아이디추가(artificial uid가 되겠네요.)
이렇게 만들면 가장 교과서적인 모델링이 되는거겠죠..
여기서 denormalize하는 것은 상황봐서 해야할테고..
음. 당장 그룹명이라덩가, 그룹설명같은거는 프로그램을 처리하겠다고
하시면은 멤버쉽테이블만 있으면 되겠죠.
글고 개인주소록에 개인주소록아이디 추가하는 것도 선택사항이라고 봐야죠.
그냥 PK(id,email) 를 이용할수도 있으니까.
-- 서준원 님이 쓰신 글:
>> 먼저 답변 감사드립니다.
>> 일단은 제 기준에서는
>> 하나의 개인주소는 여러개의 그룹에 가입이 가능합니다.
>> 만약에 그룹테이블을 따로 만든다면
>> 어떻게 구성이 가능할지
>> 조언 부탁드리겠습니다.
>>
>>
>> -- 최공훈 님이 쓰신 글:
>> >> 대충 생각할 수 있는 기준을 생각나는데까지 나열해보면
>> >>
>> >> 그룹이 속성을 갖는가 아닌가를 고려하시고
>> >> 그룹에 중복 가입이 허용되는가 안하는가도 고려하셔서
>> >> 그룹 테이블을 꼭 만들어야 하는지, 아님 그냥 개인주소록 테이블에
>> >> 칼럼하나 추가시키고 끝내야 할지, 아님 그룹테이블만들고
>> >> 이 그룹과 개인주소록과의 멤버쉽테이블까지 만들어야 하는지 결정하세요.
>> >>
>> >> 또 고려해야할 뭐가 있을까요.. 저는 이정도 생각이 드네요..
>> >> 쩝.
>> >>
>> >>
>> >> -- 서준원 님이 쓰신 글:
>> >> >> 안녕하십니까.
>> >> >> 다름이 아니라 제가 이번에 주소록을 구현하려 하는데
>> >> >> 어떻게 테이블을 구성해야 할지 난감해서 질문 드립니다.
>> >> >>
>> >> >> 제가 만들 주소록은 개인주소록/그룹주소록입니다.
>> >> >> 개인주소록 하나만 만든다면 테이블 하나로 뚝딱 만들수 있겠지만
>> >> >> 개인주소록의 정보를 가지고 그룹주소록 기능을 포함하려니까 조금 복잡해지네요
>> >> >>
>> >> >> 일단 제가 개인주소록 테이블은 다음과 같이 만들었습니다.
>> >> >>
>> >> >> CREATE Table individualdirectory (
>> >> >> id varchar(64) NOT NULL, 개인주소록 소유자
>> >> >> email varchar(32) NOT NULL, 이메일
>> >> >> name varchar(32) NOT NULL, 이름
>> >> >> cellular varchar(32), 이동전화
>> >> >> phone varchar(32), 일반전화
>> >> >> company varchar(32), 소속
>> >> >> memo text, 기타 메모
>> >> >> PRIMARY KEY(id, email)
>> >> >> );
>> >> >>
>> >> >> 이런 개인주소록을 토대로, 개인주소록에 개인 주소를 추가합니다.
>> >> >> 그리고 개인주소들을 몇개씩 묶어서 그룹주소록으로 표현하고 싶습니다.
>> >> >>
>> >> >> 예를 들면
>> >> >> 가족, 직장동료... 이런식으로
>> >> >>
>> >> >> 테이블을 어떻게 조인해야 할지 모르겠습니다.
>> >> >> 그럼 많은 조언 부탁드립니다.
|