영화 예매 사이트는 회원제로 관리되고 있으나 비회원인 경우에도 예매가 가능하다. 회원 가입을 위해서는 이름, 주민번호, 전화번호, 이메일, 회원 아이디, 비밀번호와 같은 기본적인 정보를 입력해야 한다. 여러 지점에 있는 극장에 대해서 영화를 예매할 수 있다.
예매가 순조롭게 이루어지려면 각 극장 지점명과 위치가 관리되어야 한다.
극장은 여러 개의 상영관이 있으며 각각의 상영관에서는 여러 종류의 영화가 상영된다.
영화표에는 해당 상영관의 좌석이 정해져서 기록되어 있다. 영화표를 예매할 때 고객들은 원하는 좌석을 지정할 수 있으며 예매일자와 예매 수량이 기록된다.
결제방법은 카드결제나 계좌이체 방법이 있다. 영화표를 예매할 때 회원의 경우에 한해서 포인트 점수가 적립된다.
예매한 영화표는 취소가 가능하고 취소한 경우에 환불을 해준다. 취소 방법은 부분 취소와 전체 취소 두 가지 방법이 있다.
/* Drop Triggers */
DROP TRIGGER TRI_BOARD_BNO;
DROP TRIGGER TRI_LECTURE_LEC_NO;
DROP TRIGGER TRI_REPLY_RNO;
/* Drop Tables */
DROP TABLE ADMINS CASCADE CONSTRAINTS;
DROP TABLE REPLY CASCADE CONSTRAINTS;
DROP TABLE BOARD CASCADE CONSTRAINTS;
DROP TABLE LEC_ORDER CASCADE CONSTRAINTS;
DROP TABLE LECTURE CASCADE CONSTRAINTS;
DROP TABLE USERS CASCADE CONSTRAINTS;
/* Drop Sequences */
DROP SEQUENCE SEQ_BOARD_BNO;
DROP SEQUENCE SEQ_LECTURE_LEC_NO;
DROP SEQUENCE SEQ_REPLY_RNO;
/* Create Sequences */
CREATE SEQUENCE SEQ_BOARD_BNO INCREMENT BY 1 START WITH 1;
CREATE SEQUENCE SEQ_LECTURE_LEC_NO INCREMENT BY 1 START WITH 1;
CREATE SEQUENCE SEQ_REPLY_RNO INCREMENT BY 1 START WITH 1;
/* Create Tables */
CREATE TABLE ADMINS
(
ID varchar2(30) NOT NULL,
UPDATE_DATE date DEFAULT SYSDATE,
PRIMARY KEY (ID)
);
CREATE TABLE BOARD
(
BNO number(10) NOT NULL,
WRITER varchar2(30) NOT NULL,
TITLE varchar2(50) NOT NULL,
CONTENT varchar2(2000),
PRIMARY KEY (BNO)
);
CREATE TABLE LECTURE
(
LEC_NO number(10,0) NOT NULL,
TEACHER varchar2(30),
LEC_LIST varchar2(30),
PRIMARY KEY (LEC_NO)
);
CREATE TABLE LEC_ORDER
(
USER_ID varchar2(30) NOT NULL,
LEC_NO_NUMBER number(10,0) NOT NULL,
ORDER_DATE date DEFAULT SYSDATE,
PRIMARY KEY (USER_ID, LEC_NO_NUMBER)
);
CREATE TABLE REPLY
(
RNO number(10) NOT NULL,
WRITER varchar2(30) NOT NULL,
CONTENT varchar2(2000),
BNO number(10) NOT NULL,
PRIMARY KEY (RNO)
);
CREATE TABLE USERS
(
ID varchar2(30) NOT NULL,
NAME varchar2(30) NOT NULL,
REGDATE date DEFAULT SYSDATE,
PRIMARY KEY (ID)
);
/* Create Foreign Keys */
ALTER TABLE REPLY
ADD FOREIGN KEY (BNO)
REFERENCES BOARD (BNO)
;
ALTER TABLE LEC_ORDER
ADD FOREIGN KEY (LEC_NO_NUMBER)
REFERENCES LECTURE (LEC_NO)
;
ALTER TABLE ADMINS
ADD FOREIGN KEY (ID)
REFERENCES USERS (ID)
;
ALTER TABLE BOARD
ADD FOREIGN KEY (WRITER)
REFERENCES USERS (ID)
;
ALTER TABLE LEC_ORDER
ADD FOREIGN KEY (USER_ID)
REFERENCES USERS (ID)
;
ALTER TABLE REPLY
ADD FOREIGN KEY (WRITER)
REFERENCES USERS (ID)
;
/* Create Triggers */
CREATE OR REPLACE TRIGGER TRI_BOARD_BNO BEFORE INSERT ON BOARD
FOR EACH ROW
BEGIN
SELECT SEQ_BOARD_BNO.nextval
INTO :new.BNO
FROM dual;
END;
/
CREATE OR REPLACE TRIGGER TRI_LECTURE_LEC_NO BEFORE INSERT ON LECTURE
FOR EACH ROW
BEGIN
SELECT SEQ_LECTURE_LEC_NO.nextval
INTO :new.LEC_NO
FROM dual;
END;
/
CREATE OR REPLACE TRIGGER TRI_REPLY_RNO BEFORE INSERT ON REPLY
FOR EACH ROW
BEGIN
SELECT SEQ_REPLY_RNO.nextval
INTO :new.RNO
FROM dual;
END;
/
댓글