영카트5 '주문 테이블'에서 회원 아이디를 인덱스가 아닌 FK로 설정 채택완료
안녕하세요, 단순한 문제일 수 있겠으나 DB 설계 부분에 있어 질문드립니다.
영카트5 'g5_shop_order(이하 주문)' 테이블에서 기본적으로 'mb_id(이하 회원 아이디)' 컬럼에 대해 인덱스 설정이 되어 있는데요.
현재 개발중인 사이트가 비회원 주문이 가능다하고 했을 때 구조를 약간 변경하여 주문 테이블의 회원 아이디 컬럼을 회원 테이블의 회원 아이디 컬럼과 연관관계 설정을 한다면 문제가 발생할 소지가 있을까요?(즉, 회원 테이블과 주문 테이블을 1:N 연관관계로 설정할 예정입니다. / DB 설계시 연관관계에 좀... 집착이 있네요.)
같은 맥락으로 'g5_shop_cart(이하 장바구니)' 테이블도 변경하고자 한다면 문제가 발생할 소지가 있을까요?
다만, 여기서 생각해 볼 것은 비회원은 '회원 아이디'가 존재하지 않기에 '주문 테이블'의 회원 아이디 컬럼은 NULL 허용 하도록 설정할 것입니다.
대게 위와 같은 상황인 경우 DB 구조를 어떻게 가져가시는지 첨언 부탁드리며, 미리 답변 감사드립니다.
답변 3개
비회원 주문시
ID 는 성명+전화번호 조합 난수로 기록하고
추후 배송조회시 비밀번호 입력으로 불러오시면 됩니다.
과거 프로젝트중 익명주문 요청하신게 있어서 그렇게 처리했던 기억이 나네요.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
상관없습니다. 겉으로 보기엔 비회원이지만 로그인하는 방식입니다.
난수 역시 특정 규칙을 알면 재 생성하기 쉽습니다.
댓글을 작성하려면 로그인이 필요합니다.
기본 영카트는 주문테이블의 mb_id에 인덱스가 되있습니다.
다만 비회원일 경우, 어짜피 인덱스가 있건 없건, 회원테이블과 연결할 key가 없으므로,
해당 인덱스가 있느냐 없느냐는 중요한 부분이 아닙니다.
기본 영카트에서 비회원 주문만 받는 사이트가 있다면,
동일한 맥락이므로 전혀 문제될게 없습니다.
한 가지 애매한 부분은
기존 영카트는 회원테이블의 1명회원:다수의 주문테이블의 자료의 1:N구조이나
지금같이 모두 비회원을 사용할 경우에는
회원테이블에 아무도없는 상태이므로, 1:N구조 자체가 성립되지않습니다.
질문이 잘못되었습니다.
답변에 대한 댓글 1개
개발중인 사이트는 회원, 비회원 모두에게 주문이 가능한 쇼핑몰이라고 보시면됩니다.
영카트 테이블 구조와 같이 회원 테이블과 주문 테이블은 서로 1:N 연관 관계를 맺고 있지만,
만약에 주문하는 회원이 비회원인 경우 데이터 연관 관계를 어떻게 맺어야 하는지에 대한 질문이었습니다.
물론 비회원의 경우 회원 테이블에 데이터가 없으니 주문 테이블과 연관 관계를 맺기는 어렵겠지요.
그렇다면 이때 주문 테이블에 인덱스로 설정되어 있는 'mb_id' 컬럼에 문제가 없을지? 추가로 'mb_id' 컬럼을 인덱스가 아닌 외래키 제약 조건을 걸어 두었을 때는 문제가 없는지?
조언 부탁드립니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
만약, 그렇다면 주문 테이블의 회원 아이디 컬럼이 회원 테이블과 외래키 제약 조건이 걸어져 있을 때 문제가 되지 않을까요?
결국 주문 테이블의 회원 아이디 컬럼은 외래키 제약 조건을 걸면 안되는 것인지...
조언 부탁드립니다.