--임의 폴더를 만든다. 필자는 D 드리버의 oracleDB 폴더를 생성했다.
-- 콘솔창을 연다
-- C:> cmd
-- DBA 접속
-- C:> sqlplus / as sysdba
-- 테이블 스페이스 생성 create tablespace macaronics datafile 'D:\oracleDB/macaronics.dbf' size 50m autoextend on next 10m maxsize unlimited;
-- 계정 생성 create user macaronics identified by 1111 default tablespace macaronics; -- 권한 설정 grant connect, resource, create view to macaronics;
--임의 폴더를 만든다. 필자는 D 드리버의 oracleDB 폴더를 생성했다.
-- 콘솔창을 연다
-- C:> cmd
-- DBA 접속
-- C:> sqlplus / as sysdba
-- 테이블 스페이스 생성
create tablespace macaronics
datafile 'D:\oracleDB/macaronics.dbf'
size 50m
autoextend on
next 10m
maxsize unlimited;
-- 계정 생성
create user macaronics identified by 1111 default tablespace macaronics;
-- 권한 설정
grant connect, resource, create view to macaronics;
-- 관리자 테이블 생성
create table tbl_admin(
id varchar2(20) PRIMARY KEY , -- 아이디
pwd VARCHAR2(20), -- 비밀번호
name varchar2(40), -- 이름
phone varchar2(20) -- 전화번호
) TABLESPACE macaronics ;
-- 주소 테이블 생성
create table tbl_address(
zip_num VARCHAR2(10), -- 우편번호
address1 VARCHAR2(100), -- 주소
address2 VARCHAR2(100) -- 상세주소
);
-- 회원 테이블 생성
create table tbl_member (
id varchar2(20) PRIMARY KEY , -- 회원아이디
pwd VARCHAR2(20) , -- 회원암호
name VARCHAR2(40), -- 회원이름
email VARCHAR2(40), -- 회원 이메일
zip_num VARCHAR2(10), -- 우편번호
address VARCHAR2(200), -- 주소
phone VARCHAR2(20), -- 전화번호
useyn char(1) default 'y', -- 탈퇴여부 회원의 탈퇴 여부 체크, y:사용가능, n:탈퇴
ip varchar(100), -- 가입시 아이피 주소
indate date default sysdate -- 가입일
)TABLESPACE macaronics ;
-- 상품 테이블
create table tbl_product (
pseq number PRIMARY KEY , -- product_seq 시퀀스 객체로 자동 일련번호 부여
name VARCHAR2(100) DEFAULT 0, -- 상품명
kind char(1), -- 상품 종류
price1 number DEFAULT 0, -- 원가
price2 number default 0, -- 판매가
price3 number DEFAULT 0, -- 판매가-원가
content VARCHAR2(3000) null, -- 상품 내용
image VARCHAR2(150) DEFAULT 'default.jpg',
useyn VARCHAR2(1) DEFAULT 'y', -- 상품 사용유무 체크 y: 사용가능 n: 사용 불가능
bestyn VARCHAR2(1) DEFAULT 'n', -- 베스트상품인지 여부 체크 y:베스트 상품 n:베스트 상품 아님
indate date default sysdate -- 등록일
) TABLESPACE macaronics ;
-- 상품 테이블 시퀀스 생성
create SEQUENCE product_seq
START WITH 1
INCREMENT BY 1
NOMAXVALUE
NOCYCLE ;
-- 장바구니 테이블
create table tbl_cart(
cseq number PRIMARY KEY, -- 장바구니 번호 - cart_seq 시퀀스로 객체로 자동 일련번호 부여
id VARCHAR2(20), -- FK 회원아이디 tbl_number 테이블의 기본키인 id 컬럼
pseq number, -- FK 상품번호 tbl_product 테이블의 기본키인 pseq
quantity number DEFAULT 1, -- 수량
result char(1) default '1', -- 처리완료여부 1 미처리 2처리
indate date DEFAULT sysdate -- 등록일
)TABLESPACE macaronics ;
-- 장바구니 테이블 시퀀스 생성
create sequence cart_seq
START WITH 1
INCREMENT BY 1
NOMAXVALUE
NOCYCLE ;
-- tbl_cart id 외래키 제약조건 추가
alter table tbl_cart
add constraint tbl_cart_id_fk foreign key(id)
references tbl_member(id) on delete cascade;
-- tbl_cart pseq 외래키 제약조건 추가
alter table tbl_cart
add CONSTRAINT tbl_cart_pseq_fk FOREIGN KEY (pseq)
REFERENCES tbl_product(pseq) on delete CASCADE ;
-- 주문 테이블 명 tbl_orders
create table tbl_orders(
oseq number PRIMARY KEY, -- 주문번호
id varchar2(20) , -- 주문자 아이디 , tbl_member 테이블의 기본키의 id컬럼
indate date default sysdate -- 주문일
)TABLESPACE macaronics ;
-- tbl_orders 시퀀스 생성
create SEQUENCE orders_seq
START WITH 1
INCREMENT BY 1
NOMAXVALUE
NOCYCLE ;
-- tbl_orders 외래키 제약 조건 추가
alter table TBL_ORDERS
add CONSTRAINT TBL_ORDERS_id_fk FOREIGN KEY (id)
REFERENCES tbl_member(id) on DELETE CASCADE ;
-- 주문 상세 테이블 생성
create table tbl_order_detail(
odseq number PRIMARY KEY , -- 주문 상세번호 order_detail_seq 시퀀스 객체로 자동 일련 번호 부여
oseq number , -- FK 주문번호 tbl_orders 테이블의 기본 키인 oseq 컬럼
pseq number , -- FK 상품번호 tbl_product 테이블릐 기본 키인 pseq 컬럼
quantity number, -- 주문수량
result char(1) DEFAULT 1 -- 처립여부 1: 미처리 2 : 처리
)TABLESPACE macaronics ;
-- 주문 상세 테이블 시퀀스 생성
create SEQUENCE order_detail_seq
START WITH 1
INCREMENT by 1
NOMAXVALUE
NOCACHE
NOCYCLE;
-- TBL_ORDER_DETAIL oseq 외래키 제약 조건 추가
alter table TBL_ORDER_DETAIL
add CONSTRAINT tbl_order_detail_oseq_FK FOREIGN key(oseq)
REFERENCES tbl_orders(oseq) on DELETE CASCADE ;
-- TBL_ORDER_DETAIL pseq 외래키 제약 조건 추가
alter table TBL_ORDER_DETAIL
add CONSTRAINT tbl_order_detail_pseq_FK FOREIGN key(pseq)
REFERENCES tbl_product (pseq) on DELETE CASCADE ;
-- 테이블 명 tbl_qna 생성
create table tbl_qna(
qseq number PRIMARY KEY , -- 글번호 qna_seq 시퀀스 객체로 자동 일려번호 부여
subject VARCHAR2(30) , -- 제목
content VARCHAR2(3000), -- 문의 내용
reply VARCHAR2(3000), -- 답변 내용
id VARCHAR2(20), -- 작성자 아이디 member 테이블의 기본키인 id 컬럼
rep char(1) default '1', -- 답변 유무 1:답변 무 2:답변 유
indate date default sysdate
)TABLESPACE macaronics ;
-- 테이블 명 tbl_qna 시퀀스 생성
CREATE SEQUENCE qna_seq
START WITH 1
INCREMENT by 1
NOMAXVALUE
NOCYCLE
NOCACHE ;
-- tbl_qna id 외래키 제약조건 추가
alter TABLE TBL_QNA
add CONSTRAINT tbl_qna_id_FK FOREIGN KEY (id)
REFERENCES tbl_member (id) on delete CASCADE ;
-- 카트 뷰 생성
create or replace view cart_view
as
select o.cseq, o.id, o.pseq, m.name mname, p.name pname, p.image,
o.quantity, o.indate, p.price2, o.result
from tbl_cart o, tbl_member m, tbl_product p
where o.id = m.id and o.pseq = p.pseq
and result='1';
-- 주문 뷰 생성 ( 주문, 주문상세 회원, 상품 조인 )
create or replace view order_view
as
select d.odseq, o.oseq, o.id, o.indate, d.pseq,d.quantity, m.name mname,
m.zip_num, m.address, m.phone, p.name pname, p.price2, d.result
from tbl_orders o, tbl_order_detail d, tbl_member m, tbl_product p
where o.oseq=d.oseq and o.id = m.id and d.pseq = p.pseq;
-- 베스트 상품 뷰 생성 (상품 테이블에서 베스트인경우만 추출 )
create or replace view best_pro_view
as
select pseq, name, price2, image
from( select rownum, pseq, name, price2, image
from tbl_product
where bestyn='y'
order by indate desc)
where rownum <=12;
-- 신상품 상품 뷰 생성 (상품 테이블에서 신상품 경우만 추출 )
create or replace view new_pro_view
as
select pseq, name, price2, image
from( select rownum, pseq, name, price2, image
from tbl_product
where useyn='y'
order by indate desc)
where rownum <=12;
데이터베이스를 생성 했으면 다음과 같이 변경하자.
sever.xml 에서 프로젝트를 실행하여 생긴 Context 태그를 찾아 Resource
다음과 같이 추가하자.
<Resource auth="Container" driverClassName="oracle.jdbc.driver.OracleDriver" loginTimeout="10" maxWait="5000" name="jdbc/pool" password="1111" type="javax.sql.DataSource" url="jdbc:oracle:thin:@localhost:1521:XE" username="macaronics" />
참조 사이트 =>
제작 : macaronics.net - JUHO CHOI
소스 : https://github.com/braverokmc79/jsp_sin















댓글 ( 4)
댓글 남기기