@ 데이터베이스가 어려운 경우 일단 테이블 하나로 구성해보고

그것을 효율성과 중복 문제를 고려해 테이블을 나눠본다

지속적으로 관리할 데이터는 테이블로 빼야한다.

@ DB구축시에 정답이란게 있을 수는 없지만 효율과 중복 문제를 고려한 최선의 답안을 찾는것이 관건



@쇼핑몰 DB구축

orderList 주문 리스트

idx 결제금액 결제여부 주문일 f key_deliverTitle(배송정보)
1 55000      

create table orderList(
idx number primary key
,totalpay number -- 총 결제할 금액
,ispay varchar(3) --결제완료 여부 yes,no
,orderdate date default sysdate --주문일
,fkey_delieverTitle number
);


--------------------------------------------
orderDetail 주문상세

idx color psize ea f key(주문리스트)
23 red 95 3 1
44 blue 30 5 1


create table orderDetail(
idx number primary key
,fkey_orderlist number
,fkey_product number
,color varchar(10) --주문색상
,psize varchar(10) --주문 사이즈
,ea number default 0 --주문 수량
);


------------------------------------------------
custonmer (비회원 주문고객)

fkey(주문리스트) name phone email addr
  홀길동      

create table customer(
idx number primary key
,fkey_orderlist number
,name varchar(20)
,tel1 varchar(4) --지역번호
,tel2 varchar(4) --국번
,tel3 varchar(4) --끝자리
,cell1 varchar(4) --셀폰
,cell2 varchar(4)
,cell3 varchar(4)
,email varchar(50)
,post1 char(3) -- 우편번호 앞자리
,post2 char(3) -- 우편번호 뒷자리
,addr1 varchar(100) --주소 앞자리
,addr2 varchar(50) --상세주소
);

--------------------------------------------------
deliver 배송정보 테이블(배송지정보)
f key

앞 컬럼에 d를 붙이는 이유는 스트러츠 프레임웍으로 가기 때문에
위의 customer테이블의 컬럼값과 겹쳐서 FormBean과 값이 같고
html사이트의 태그값이 일치하게 된다. 결국 배열로 잡히는걸 피하기 위해 d를 붙인다.

create table deliver(
didx number primary key
,fkey_orderlist number
,dname varchar(20)
,dtel1 varchar(4) --지역번호
,dtel2 varchar(4) --국번
,dtel3 varchar(4) --끝자리
,dcell1 varchar(4) --셀폰
,dcell2 varchar(4)
,dcell3 varchar(4)
,demail varchar(50)
,dpost1 char(3) -- 우편번호 앞자리
,dpost2 char(3) -- 우편번호 뒷자리
,daddr1 varchar(100) --주소 앞자리
,daddr2 varchar(50) --상세주소
,dmemo varchar(100) --배송메시지(부재시 관리실에...)
);


----------------------------------------------------
payInfo결제 테이블(결제정보)
--무통장 온라인 입금을 위한 테이블
create table payInfo(
idx number primary key
,fkey_orderlist number
,totalPrice number default 0 -- 총구매금액
,deliverPrice number default 2500
,usedPoint number -- 사용한 적립금
,totalPay number --실제 지불할 총 금액
,fkey_account number-- 계좌정보테이블 왜래키
,payName varchar(20) -- 입금자 이름
);


-------------------------------------------------------
주문상태 테이블

deliverTitle 배송상태(배송단계별 명칭관리)

  deliverTitle
1 주문접수
2 입금확인
3 배송준비중
4 발송
5 배송완료

1. 주문접수
2. 입금확인
3. 배송준비중
4. 발송
5. 배송완료

create table deliverTitle(
idx number primary key
,title varchar(30) -- 주문접수, 입금확인, 배송중, 배송완료 등등.....
);


---------------------------------------------------
적립금 사용 내용도 history에 남기기 위해 테이블을 만들 예정
Point

 


------------------------------------------------------
계좌 테이블
create table bankAccount(
idx number primary key
,bank varchar(20)
,accountNum varchar(20)
)
-------------------------------------------------------
@ 카드 결제 시스템의 요구사항들

1. 사업자등록증
2. PG(Payment gateway)사 선택
   데이콤, 이니시스
3. 보증금(사업규모에 따라 견적이 틀림)
4. 해당 언어에 따라 컴포넌트 받아와 설치

@ 우편번호

행정구역의 변경에 따른 우편번호가 유효한 값을 받기 위해

우편번호란은 입력은 유저에게 맡기지 않는다.

Posted by Taoist
,