[자문구함] 아래에 테이블 구조는 컴퓨터 판매 대리점에서 사용하기
위해서 작성을 해본건데요...
여러분들의 의견을 듣고 싶어서 이렇게글을 올리는겁니다.
제가 아직 초보라서요.
제데로 구현은 된건지도 의문이구요.. 잘못 되거나 오류가
있으면 좀 봐주세요..
그럼 전문가님들의 의견을 기다리겠습니다.
수고하세요.
[[ 사용자 테이블 ]]
CREATE TABLE KS_USER
(
UNO NUMBER(15) NOT NULL, -- 사용자 고유 번호
UID VARCHAR2(15) NOT NULL PRIMARY KEY, -- 사용자
아이디(로그인시 필요)
UNAME VARCHAR2(15) NOT NULL, -- 사용자 이름
UJUMIN NUMBER(13) NOT NULL, --주민등록 번호
UHP VARCHAR2(15) NOT NULL, --핸드폰 번호
UOFFICE VARCHAR2(15) NOT NULL, -- 사무실전화번호
ULIMIT -- 사용자 권한 부여 하기
URELATE VARCHAR2(20), --관계
UDATE NUMBER(08) NOT NULL, -- 등록일
UPHOTO -- 사진 등록
UETC_1 NUMBER(20) --기타 1
UETC_2 VARCHAR(50) --기타 2
);
CREATE SEQUENCE UNO -- 자동 증가 번호 생성 하기 //
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCACHE
NOCYCLE;
[[ 고객 테이블 ]]
CREATE TABLE KS_CUSTOMER
(
CNO NUMBER(20) NOT NULL, -- 아이디
CNAME VARCHAR2(15) NOT NULL, -- 이름(개인고객/법인고객)
CCOMPANY VARCHAR2(30), -- 회사명
CJUMIN NUMBER(13) NOT NULL, -- 주민 번호
CHANDPHON VARCHAR2(15) NOT NULL, -- 핸드폰
COFFICE_PHONE VARCHAR2(15), -- 사무실 전화번호
CHOME_PHONE VARCHAR2(15), -- 집 전화번호
CADDRESS VARCHAR2(50), -- 주소
CPOST NUMBER(6), -- 우편번호
CBIRTH NUMBER(08), -- 고객 생일/ 기념일
CHOBBY VARCHAR2(20), -- 고객 취미
CVISIT_DATE NUMBER(8), -- 처음 방문일
CPOINT NUMBER(12), -- 누적 포인트
CPHOTO BLOB, -- 사진 데이터
CETC_1 NUMBER(20), -- 기타 1
CETC_2 VARCHAR2(50) -- 기타 2
primary key (CID, CNAME) -- 기본키 정의
);
CREATE SEQUENCE CNO -- 자동 증가 번호 생성 하기 //
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCACHE
NOCYCLE;
[[ 제품(품목) 테이블]]
CREATE TABLE KS_PRODUCT
PNO NUMBER(20) NOT NULL, -- 자동 증가 번호
PRODUCT VARCHAR2(40) NOT NULL, -- 품목 이름
PRICE NUMBER(15) NOT NULL, -- 가격
PQTY NUMBER(15) NOT NULL, -- 재고 수량
PDATE NUMBER(8) NOT NULL, -- 마지막
수정일(입고일/출고일)
PPHOTO BLOB, -- 제품 사진 //
PETC_1 NUMBER(20) -- 기타 1
PETC_2 VARCHAR(50) -- 기타 2
Constraint Product_pk_Product_PNO primary key (PNO, PRODUCT)
);
CREATE SEQUENCE PNO -- 자동 증가 번호 생성 하기 //
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCACHE
NOCYCLE;
[[ 판매 테이블 ]]
CREATE TABLE KS_SALE
(
SNO NUMBER(20) NOT NULL, -- 자동 증가 번호
SPRODUCT VARCHAR2(30) NOT NULL, -- 판매 품목
SQTY NUMBER(15) NOT NULL, -- 판매 수량
SPRICE NUMBER(15) NOT NULL, -- 판매 금액
SDATE NUMBER(8) NOT NULL, -- 판매 날짜
SUSER VARCHAR(20) NOT NULL, -- 판매자 이름
SETC_01 NUMBER(20), -- 기타 1
SETC_02 VARCHAR(50) -- 기타 2
);
CREATE SEQUENCE SNO -- 자동 증가 번호 생성 하기 //
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCACHE
NOCYCLE;
ALTER TABLE KS_SALE
ADD PRIMARY KEY (SNO, SPRODUCT); -- 기본키 잡기
쿼리야 돌려 보셔서 잘 돌아 간다고 가정하고(저희 서버 교체작업 중이라 테스트를 못 했네요 -_-).. 여러 가지 고견이 있겠지만 제 생각에는 KS_USER 의 Primary Key 가 조금 이상한것 같네요.. 사용자 고유번호와 ID 를 Not null 로 묶으시고 Primary Key를 ID 로 하셨는데요.. 저희 회사에서 사용되는 ERP 테이블을 마구 컨닝한 결과 차라리 ID 보다는 고유번호(즉 사번이나.. 고객 번호 등)을 PriMary Key 로 잡으시는 것이 좋지 않을까 합니다. 또한 한가지 더 말씀 드리자면 만약 고유번호를 자동증가값으로 잡으셨는데 이건 나중에 Sort 할때나 다른 쿼리 진행시 별로 안좋을듯 하네요.. 대부분 고유 번호라는 것은 (사번,, 고객 번호등..)은 그 사람의 신상에 대한 정보가 조금이라도 들어 있는것이 좋을듯 하네요... Primary Key를 사용자 개개인이 부여 할수 있다는 것은 조금 안 좋을듯 하고요.. ID 개설하는 사용자가 어떤 규칙에 의해 만든다기 보다는 자기가 임의로 만든다고 봐야 하거든요.. 참고 하세요..