영카트5 '주문 테이블'에서 회원 아이디를 인덱스가 아닌 FK로 설정

영카트5 '주문 테이블'에서 회원 아이디를 인덱스가 아닌 FK로 설정

QA

영카트5 '주문 테이블'에서 회원 아이디를 인덱스가 아닌 FK로 설정

답변 3

본문

안녕하세요, 단순한 문제일 수 있겠으나 DB 설계 부분에 있어 질문드립니다.

 

영카트5 'g5_shop_order(이하 주문)' 테이블에서 기본적으로 'mb_id(이하 회원 아이디)' 컬럼에 대해 인덱스 설정이 되어 있는데요.

 

현재 개발중인 사이트가 비회원 주문이 가능다하고 했을 때 구조를 약간 변경하여 주문 테이블의 회원 아이디 컬럼을 회원 테이블의 회원 아이디 컬럼과 연관관계 설정을 한다면 문제가 발생할 소지가 있을까요?(즉, 회원 테이블과 주문 테이블을 1:N 연관관계로 설정할 예정입니다. / DB 설계시 연관관계에 좀... 집착이 있네요.)

 

같은 맥락으로 'g5_shop_cart(이하 장바구니)' 테이블도 변경하고자 한다면 문제가 발생할 소지가 있을까요?

 

다만, 여기서 생각해 볼 것은 비회원은 '회원 아이디'가 존재하지 않기에 '주문 테이블'의 회원 아이디 컬럼은 NULL 허용 하도록 설정할 것입니다.

 

대게 위와 같은 상황인 경우 DB 구조를 어떻게 가져가시는지 첨언 부탁드리며, 미리 답변 감사드립니다.

이 질문에 댓글 쓰기 :

답변 3

비회원 주문시 

ID 는 성명+전화번호 조합 난수로 기록하고

추후 배송조회시 비밀번호 입력으로 불러오시면 됩니다.

 

과거 프로젝트중 익명주문 요청하신게 있어서 그렇게 처리했던 기억이 나네요.

위에서 언급해주신 '난수'는 주문 테이블의 회원 아이디 컬럼의 값으로 기록하는 것이죠?

만약, 그렇다면 주문 테이블의 회원 아이디 컬럼이 회원 테이블과 외래키 제약 조건이 걸어져 있을 때 문제가 되지 않을까요?

결국 주문 테이블의 회원 아이디 컬럼은 외래키 제약 조건을 걸면 안되는 것인지...

조언 부탁드립니다.

기본 영카트는 주문테이블의 mb_id에 인덱스가 되있습니다.

다만 비회원일 경우, 어짜피 인덱스가 있건 없건, 회원테이블과 연결할 key가 없으므로,

해당 인덱스가 있느냐 없느냐는 중요한 부분이 아닙니다.

 

기본 영카트에서 비회원 주문만 받는 사이트가 있다면,

동일한 맥락이므로 전혀 문제될게 없습니다.

 

한 가지 애매한 부분은

기존 영카트는 회원테이블의 1명회원:다수의 주문테이블의 자료의 1:N구조이나

지금같이 모두 비회원을 사용할 경우에는

회원테이블에 아무도없는 상태이므로, 1:N구조 자체가 성립되지않습니다.

질문이 잘못되었습니다.

답변이 늦어져서 죄송합니다.

개발중인 사이트는 회원, 비회원 모두에게 주문이 가능한 쇼핑몰이라고 보시면됩니다.

영카트 테이블 구조와 같이 회원 테이블과 주문 테이블은 서로 1:N 연관 관계를 맺고 있지만,
만약에 주문하는 회원이 비회원인 경우 데이터 연관 관계를 어떻게 맺어야 하는지에 대한 질문이었습니다.

물론 비회원의 경우 회원 테이블에 데이터가 없으니 주문 테이블과 연관 관계를 맺기는 어렵겠지요.

그렇다면 이때 주문 테이블에 인덱스로 설정되어 있는 'mb_id' 컬럼에 문제가 없을지? 추가로 'mb_id' 컬럼을 인덱스가 아닌 외래키 제약 조건을 걸어 두었을 때는 문제가 없는지?

조언 부탁드립니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 10,639
© SIRSOFT
현재 페이지 제일 처음으로