영카트5 '주문 테이블'에서 회원 아이디를 인덱스가 아닌 FK로 설정
본문
안녕하세요, 단순한 문제일 수 있겠으나 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구조 자체가 성립되지않습니다.
질문이 잘못되었습니다.
상관없습니다. 겉으로 보기엔 비회원이지만 로그인하는 방식입니다.
난수 역시 특정 규칙을 알면 재 생성하기 쉽습니다.