전체 채팅은 실시간이고 기록 안남길거거든


일단 로그인 기능은 해놨어


이제 테이블이



아이디 (스트링) primary key 


비밀번호(스트링) not null


이렇게 됬고,


이제 1:1 채팅을 할건데 이거는 기록을 남겨놀거란 말이야


그래서 이 메시지에 대한 테이블을 만들려고 하거든?


여기서 이 메시지 테이블을 어떻게 구성하는게 좋을까?


1. 전체 테이블로 만든다


id1, id2 , 메시지내용, 보낸시간


위 테이블의 좋은점?은 테이블이 하나라는거야

id1과 id2의 대화내용을 가져오려면 select * from 전체 테이블 where id=id1 or id=id2; <-- or맞냐? 뭐 암튼


이런식으로 가져오려고하고


2. 아이디마다 각자 테이블을 만든다


로그인 테이블에 id가 있으니까


그거를 기본키로 하는 외래키로 id를 설정하고 상대하는 id랑 메시지 내용, 시간만 남겨놓는거야


table_id1 <--테이블명


id1(외래키) id2 메시지내용 시간

id1(외래키) id3 메시지내용 시간


여기서는 로그인한 아이디는 정해지니까 그냥 상대 아이디만 검색하면 되도록 해놓은거..


3. 대화내용마다 각자 테이블을 만든다


이건 정말로 테이블에 a와 b만의 대화가 저장되는거야


id1 id2 메시지내용 시간

(id1과 id2는 고정)


장점은 테이블 자체가 상대와 대화내용이니까 그냥 가져오면 될것 같고


단점은 N명이 있으면 N명중에 2명을 뽑는거니까 nC2 로 테이블 수가 많아진다는거??



그리고 테이블 생성 시점도 궁금한데 


친구 신청해서 수락하는 순간 테이블 만들면되겟지?? 

테이블명은 msg_id1_id2 <--이런식으로 생성되는 순간 동적으로 만들 수 있는가??