ejyoo's 개발 노트

ERD 본문

DB/Oracle

ERD

ejyoovV 2021. 4. 15. 20:07

아래와 같은 형태로 만들것임.

테이블을 클릭한 후 ERD 화면 클릭

생성된 테이블을 더블클릭

논리명과 물리명 입력 후

추가 버튼을 클릭하여 필드를 생성

생성할 때 UNIQUE는 체크 해제할것 -> 나중에 SQL 추출 시 문제가 됏엇음.

관계 차수 설정 시 외래키가 자동으로 등록되며

생성한 필드와 외래키가 중복되는 것이 잇으면 생성한 필드를 지우고 외래키를 사용할것

(원래는 관게차수 설정할 때, 웬만하면 그냥 들어오는데 현재 설계할 때 물리명이 달라서 외래키가 추가로 하나가 생성된것임.)

설계도중 복합키가 잇으면 아래와 같이 기본키를 2개로 설정

설계할 대 외래키 고려를 하고 현 필드내에서 부모키에서 전이된 필드와 중복되는게 잇어서 제거함.

설계 시 아래와같이 자료형을 만들고자 하는 경우

형식을 이렇게 선택함.

인덱스를 생성하는 방법임.

인덱스명, 설명작성하고 인덱스를 적용할 컬럼을 클릭한 뒤 -> 버튼을 클릭하고 저장한다.

우클릭 - 내보내기 - ddl 클릭

Create 영역에 Export할 체크박스 체크

Export 완료.

이대로 SQL developer 에 SQL문 작성후 실행하면 테이블이 정상적으로 생성된다.

만약 정상적으로 생성되지 않는 경우

(실제 발생한 문제임.)

Unique 가 SQL 문에들어있으면 지우고

index에 'using betreen' 이 있는 경우 삭제하고 실행한다.

/* Drop Indexes */

DROP INDEX IDX_ZIPTB_ZIPCODE;



/* Drop Tables */

DROP TABLE BUYPROD CASCADE CONSTRAINTS;
DROP TABLE CARD CASCADE CONSTRAINTS;
DROP TABLE PROD CASCADE CONSTRAINTS;
DROP TABLE BUYER CASCADE CONSTRAINTS;
DROP TABLE LPROD CASCADE CONSTRAINTS;
DROP TABLE MEMBER CASCADE CONSTRAINTS;
DROP TABLE ZIPTB CASCADE CONSTRAINTS;




/* Create Tables */

CREATE TABLE BUYER
(
	-- 거래처 코드
	BUYER_ID char(6) NOT NULL,
	-- 상품 분류 코드 LPROD_GU
	BUYER_LGU char(4) NOT NULL,
	-- 거래처 명
	BUYER_NAME varchar2(60) NOT NULL,
	-- 은행
	BUYER_BANK varchar2(60),
	-- 계좌번호
	BUYER_BANKNO varchar2(60),
	-- 예금주
	BUYER_BANKNAME varchar2(15),
	-- 우편번호
	BUYER_ZIP char(7),
	-- 주소1
	BUYER_ADD1 varchar2(100),
	-- 주소2
	BUYER_ADD2 varchar2(70),
	-- 전화번호
	BUYER_COMTEL varchar2(14) NOT NULL,
	-- FAX번호
	BUYER_FAX varchar2(20) NOT NULL,
	-- 이메일 주소
	BUYER_MAIL varchar2(60) NOT NULL,
	-- 담당자
	BUYER_CHARGER varchar2(20),
	-- 거래처 전화 번호
	BUYER_TELXT varchar2(2),
	PRIMARY KEY (BUYER_ID)
);


CREATE TABLE BUYPROD
(
	-- 입고 일자
	BUY_DATE date NOT NULL,
	-- 상품 코드
	PROD_ID varchar2(10) NOT NULL,
	-- 매입 수량
	BUY_QTY number(10,0) NOT NULL,
	-- 매입 단가
	BUY_COST number(10,0) NOT NULL,
	PRIMARY KEY (BUY_DATE, PROD_ID)
);


CREATE TABLE CARD
(
	-- 주문 번호
	CART_NO char(13) NOT NULL,
	-- 상품 코드
	PROD_ID varchar2(10) NOT NULL,
	-- 회원 ID
	MEM_ID varchar2(15) NOT NULL,
	-- 수량
	CART_QTY number(8) NOT NULL,
	PRIMARY KEY (CART_NO, PROD_ID)
);


CREATE TABLE LPROD
(
	-- 순번
	LPROD_ID number(5) NOT NULL,
	-- 상품 분류 코드
	LPROD_GU char(4) NOT NULL,
	-- 상품 분류 명
	LPROD_NM varchar2(40) NOT NULL,
	PRIMARY KEY (LPROD_GU)
);


CREATE TABLE MEMBER
(
	-- 회원 ID
	MEM_ID varchar2(15) NOT NULL,
	-- 비밀 번호
	MEM_PASS varchar2(15) NOT NULL,
	-- 성명
	MEM_NAME varchar2(15) NOT NULL,
	-- 주민 등록 번호 앞 6 자리
	MEM_REGNO1 char(6) NOT NULL,
	-- 주민 등록 번호 뒤 7 자리
	MEM_REGNO2 char(7) NOT NULL,
	-- 생일
	MEM_BIR date,
	-- 우편 번호
	MEM_ZIP char(7) NOT NULL,
	-- 주소1
	MEM_ADD1 varchar2(100) NOT NULL,
	-- 주소2
	MEM_ADD2 varchar2(80) NOT NULL,
	-- 집 전화 번호
	MEM_HOMETEL varchar2(14) NOT NULL,
	-- 회사 전화 번호
	MEM_COMTEL varchar2(14) NOT NULL,
	-- 이동 전화
	MEM_HP varchar2(15),
	-- 이메일 주소
	MEM_MAIL varchar2(60) NOT NULL,
	-- 직업
	MEM_JOB varchar2(40),
	-- 취미
	MEM_LIKE varchar2(40),
	-- 기념 일 명
	MEM_MEMORIAL varchar2(40),
	-- 기념 일 날짜
	MEM_MEMORIALDAY date,
	-- 마일리지
	MEM_MILEAGE number(10,0),
	-- 삭제 여부
	MEM_DELETE varchar2(1),
	PRIMARY KEY (MEM_ID)
);


CREATE TABLE PROD
(
	-- 상품 코드
	PROD_ID varchar2(10) NOT NULL,
	-- 상품 분류 코드
	LPROD_GU char(4) NOT NULL,
	-- 거래처 코드
	BUYER_ID char(6) NOT NULL,
	-- 상품 명
	PROD_NAME varchar2(40) NOT NULL,
	-- 매입 가
	PROD_COST number(10) NOT NULL,
	-- 소비자 가
	PROD_PRICE number(10) NOT NULL,
	-- 판매 가
	PROD_SALE number(10) NOT NULL,
	-- 상품 개략 설명
	PROD_OUTLINE varchar2(100) NOT NULL,
	-- 상품 상세 설명
	PROD_DETAIL clob,
	-- 이미지 소
	PROD_IMG varchar2(40) NOT NULL,
	-- 재고 수량
	PROD_TOTALSTOCK number(10) NOT NULL,
	-- 신규 일자 등록 일
	PROD_INSDATE date NOT NULL,
	-- 안전 재고 수량
	PROD_PROPERSTOCK number(10) NOT NULL,
	-- 크기
	PROD_SIZE varchar2(20),
	-- 색상
	PROD_COLOR varchar2(20),
	-- 배달 특기 사항
	PROD_DELIVERY varchar2(255),
	-- 단위 수량
	PROD_UNIT varchar2(6),
	-- 총 입고 수량
	PROD_QTYIN number(10),
	-- 총 판매 수량
	PROD_QTYSALE number(10),
	-- 개당 마일리지 점수
	PROD_MILEAGE number(10),
	PRIMARY KEY (PROD_ID)
);


CREATE TABLE ZIPTB
(
	-- 우편 번호
	ZIPCODE char(7) NOT NULL,
	-- 특별시 광역시 도
	SIDO nvarchar2(2) NOT NULL,
	-- 시 군 구
	GUGUN nvarchar2(10) NOT NULL,
	-- 읍 면 동 리 건물 명
	DONG nvarchar2(30) NOT NULL,
	-- 번지 아파트 동 호수
	BUNJI varchar2(10),
	-- 자료 순서
	SEQ number(5,0) NOT NULL
);



/* Create Foreign Keys */

ALTER TABLE PROD
	ADD FOREIGN KEY (BUYER_ID)
	REFERENCES BUYER (BUYER_ID)
;


ALTER TABLE BUYER
	ADD FOREIGN KEY (BUYER_LGU)
	REFERENCES LPROD (LPROD_GU)
;


ALTER TABLE PROD
	ADD FOREIGN KEY (LPROD_GU)
	REFERENCES LPROD (LPROD_GU)
;


ALTER TABLE CARD
	ADD FOREIGN KEY (MEM_ID)
	REFERENCES MEMBER (MEM_ID)
;


ALTER TABLE BUYPROD
	ADD FOREIGN KEY (PROD_ID)
	REFERENCES PROD (PROD_ID)
;


ALTER TABLE CARD
	ADD FOREIGN KEY (PROD_ID)
	REFERENCES PROD (PROD_ID)
;



/* Create Indexes */

-- IDX_ZIPTB_ZIPCODE
CREATE INDEX IDX_ZIPTB_ZIPCODE ON ZIPTB USING BTREE (ZIPCODE);



/* Comments */

COMMENT ON COLUMN BUYER.BUYER_ID IS '거래처 코드';
COMMENT ON COLUMN BUYER.BUYER_LGU IS '상품 분류 코드 LPROD_GU';
COMMENT ON COLUMN BUYER.BUYER_NAME IS '거래처 명';
COMMENT ON COLUMN BUYER.BUYER_BANK IS '은행';
COMMENT ON COLUMN BUYER.BUYER_BANKNO IS '계좌번호';
COMMENT ON COLUMN BUYER.BUYER_BANKNAME IS '예금주';
COMMENT ON COLUMN BUYER.BUYER_ZIP IS '우편번호';
COMMENT ON COLUMN BUYER.BUYER_ADD1 IS '주소1';
COMMENT ON COLUMN BUYER.BUYER_ADD2 IS '주소2';
COMMENT ON COLUMN BUYER.BUYER_COMTEL IS '전화번호';
COMMENT ON COLUMN BUYER.BUYER_FAX IS 'FAX번호';
COMMENT ON COLUMN BUYER.BUYER_MAIL IS '이메일 주소';
COMMENT ON COLUMN BUYER.BUYER_CHARGER IS '담당자';
COMMENT ON COLUMN BUYER.BUYER_TELXT IS '거래처 전화 번호';
COMMENT ON COLUMN BUYPROD.BUY_DATE IS '입고 일자';
COMMENT ON COLUMN BUYPROD.PROD_ID IS '상품 코드';
COMMENT ON COLUMN BUYPROD.BUY_QTY IS '매입 수량';
COMMENT ON COLUMN BUYPROD.BUY_COST IS '매입 단가';
COMMENT ON COLUMN CARD.CART_NO IS '주문 번호';
COMMENT ON COLUMN CARD.PROD_ID IS '상품 코드';
COMMENT ON COLUMN CARD.MEM_ID IS '회원 ID';
COMMENT ON COLUMN CARD.CART_QTY IS '수량';
COMMENT ON COLUMN LPROD.LPROD_ID IS '순번';
COMMENT ON COLUMN LPROD.LPROD_GU IS '상품 분류 코드';
COMMENT ON COLUMN LPROD.LPROD_NM IS '상품 분류 명';
COMMENT ON COLUMN MEMBER.MEM_ID IS '회원 ID';
COMMENT ON COLUMN MEMBER.MEM_PASS IS '비밀 번호';
COMMENT ON COLUMN MEMBER.MEM_NAME IS '성명';
COMMENT ON COLUMN MEMBER.MEM_REGNO1 IS '주민 등록 번호 앞 6 자리';
COMMENT ON COLUMN MEMBER.MEM_REGNO2 IS '주민 등록 번호 뒤 7 자리';
COMMENT ON COLUMN MEMBER.MEM_BIR IS '생일';
COMMENT ON COLUMN MEMBER.MEM_ZIP IS '우편 번호';
COMMENT ON COLUMN MEMBER.MEM_ADD1 IS '주소1';
COMMENT ON COLUMN MEMBER.MEM_ADD2 IS '주소2';
COMMENT ON COLUMN MEMBER.MEM_HOMETEL IS '집 전화 번호';
COMMENT ON COLUMN MEMBER.MEM_COMTEL IS '회사 전화 번호';
COMMENT ON COLUMN MEMBER.MEM_HP IS '이동 전화';
COMMENT ON COLUMN MEMBER.MEM_MAIL IS '이메일 주소';
COMMENT ON COLUMN MEMBER.MEM_JOB IS '직업';
COMMENT ON COLUMN MEMBER.MEM_LIKE IS '취미';
COMMENT ON COLUMN MEMBER.MEM_MEMORIAL IS '기념 일 명';
COMMENT ON COLUMN MEMBER.MEM_MEMORIALDAY IS '기념 일 날짜';
COMMENT ON COLUMN MEMBER.MEM_MILEAGE IS '마일리지';
COMMENT ON COLUMN MEMBER.MEM_DELETE IS '삭제 여부';
COMMENT ON COLUMN PROD.PROD_ID IS '상품 코드';
COMMENT ON COLUMN PROD.LPROD_GU IS '상품 분류 코드';
COMMENT ON COLUMN PROD.BUYER_ID IS '거래처 코드';
COMMENT ON COLUMN PROD.PROD_NAME IS '상품 명';
COMMENT ON COLUMN PROD.PROD_COST IS '매입 가';
COMMENT ON COLUMN PROD.PROD_PRICE IS '소비자 가';
COMMENT ON COLUMN PROD.PROD_SALE IS '판매 가';
COMMENT ON COLUMN PROD.PROD_OUTLINE IS '상품 개략 설명';
COMMENT ON COLUMN PROD.PROD_DETAIL IS '상품 상세 설명';
COMMENT ON COLUMN PROD.PROD_IMG IS '이미지 소';
COMMENT ON COLUMN PROD.PROD_TOTALSTOCK IS '재고 수량';
COMMENT ON COLUMN PROD.PROD_INSDATE IS '신규 일자 등록 일';
COMMENT ON COLUMN PROD.PROD_PROPERSTOCK IS '안전 재고 수량';
COMMENT ON COLUMN PROD.PROD_SIZE IS '크기';
COMMENT ON COLUMN PROD.PROD_COLOR IS '색상';
COMMENT ON COLUMN PROD.PROD_DELIVERY IS '배달 특기 사항';
COMMENT ON COLUMN PROD.PROD_UNIT IS '단위 수량';
COMMENT ON COLUMN PROD.PROD_QTYIN IS '총 입고 수량';
COMMENT ON COLUMN PROD.PROD_QTYSALE IS '총 판매 수량';
COMMENT ON COLUMN PROD.PROD_MILEAGE IS '개당 마일리지 점수';
COMMENT ON COLUMN ZIPTB.ZIPCODE IS '우편 번호';
COMMENT ON COLUMN ZIPTB.SIDO IS '특별시 광역시 도';
COMMENT ON COLUMN ZIPTB.GUGUN IS '시 군 구';
COMMENT ON COLUMN ZIPTB.DONG IS '읍 면 동 리 건물 명';
COMMENT ON COLUMN ZIPTB.BUNJI IS '번지 아파트 동 호수';
COMMENT ON COLUMN ZIPTB.SEQ IS '자료 순서';

 

 

ejyoo 네이버 블로그 긁어옴

blog.naver.com/o3k3585/222212421388