- 영화관 예매 하는 과정(지점 선택, 영화&시간 선택, 자리 선택 화면 생성)을 만들기. 결제 화면까지 만들지 않음, 조회 및 삭제 가능
- DB 설계를 잘못해서 수정을 너무 많이 했다.
- 소스 코드 공유
1. DB 설계
member table > 회원 정보 table
reservation > 예약한 표에 대한 정보 table
movie > 영화 정보 table
city > 도시 정보 table
local > 지역구 정보 table
business > 영업점 정보 table
city,local,business table은 영화관 선택을 위해 데이터 미리 저장
movie table 도 영화 정보를 불러오기 위해 데이터 미리 저장
reservation table은 예약이 완료 되면 저장됨
2. UI 설계 & 구현, 기능
로그인, 회원가입, 영화 지점, 시간, 영화, 자리 선택
자리 조회 및 삭제 구현


이번에는 나름 느낌 있게 만들어보려고 노력했다.
레드 & 화이트로~

지점 선택은 도시 > 지역구 > 영업점 순서로 선택할 수 있도록 화면이 띄워진다. 처음부터 3개가 다 보이지 않는다.

버튼을 통해 영화를 바꾸고 시간과 영화관을 선택한다.
영화를 바꿀때마다 정보도 바로 갱신된다.

이미 예약 된 자리는 회색으로 선택 못하게 된다.

회원 아이디로 예약된 것만 불러와서 예약 취소를 할 수 있도록 하였다.
3. DB 쿼리 추가
-- 회원
CREATE TABLE member (
id VARCHAR(10) NOT NULL, -- 아이디
pwd VARCHAR(20) NOT NULL, -- 비밀번호
name VARCHAR(20) NOT NULL, -- 이름
phone VARCHAR(15) NOT NULL, -- 전화번호
addr VARCHAR(50) NOT NULL, -- 주소
isLogin VARCHAR(10) NOT NULL -- 로그인여부
);
-- 회원 기본키
CREATE UNIQUE INDEX PK_member
ON member ( -- 회원
id ASC -- 아이디
);
-- 회원
ALTER TABLE member
ADD
CONSTRAINT PK_member -- 회원 기본키
PRIMARY KEY (
id -- 아이디
);
-- 영화
CREATE TABLE movie (
movieNo VARCHAR(10) NOT NULL, -- 영화번호
title VARCHAR(20) NOT NULL, -- 영화제목
director VARCHAR(10) NOT NULL, -- 감독
actor VARCHAR(50) NOT NULL, -- 주연
genre VARCHAR(10) NOT NULL, -- 장르
age INTEGER NOT NULL, -- 기본
playTime VARCHAR(10) NOT NULL, -- 진행시간
nation VARCHAR(10) NOT NULL, -- 국가
openDate VARCHAR(10) NOT NULL -- 개봉일
);
-- 영화 기본키
CREATE UNIQUE INDEX PK_movie
ON movie ( -- 영화
movieNo ASC -- 영화번호
);
-- 영화
ALTER TABLE movie
ADD
CONSTRAINT PK_movie -- 영화 기본키
PRIMARY KEY (
movieNo -- 영화번호
);
-- 영화관
CREATE TABLE thearer (
);
-- 예약
CREATE TABLE reservation (
id VARCHAR(10) NOT NULL, -- 아이디
movieNo VARCHAR(10) NOT NULL, -- 영화번호
busName VARCHAR(10) NOT NULL, -- 영업점이름
cityName VARCHAR(10) NOT NULL, -- 도시이름
localName VARCHAR(10) NOT NULL, -- 지역이름
sit VARCHAR(10) NOT NULL, -- 좌석
startTime VARCHAR(40) NOT NULL -- 시작시간
);
-- 지역구
CREATE TABLE local (
localName VARCHAR(10) NOT NULL, -- 지역이름
cityName VARCHAR(10) NOT NULL, -- 도시이름
selection VARCHAR(10) NOT NULL -- 선택
);
-- 지역구 기본키
CREATE UNIQUE INDEX PK_local
ON local ( -- 지역구
localName ASC, -- 지역이름
cityName ASC -- 도시이름
);
-- 지역구
ALTER TABLE local
ADD
CONSTRAINT PK_local -- 지역구 기본키
PRIMARY KEY (
localName, -- 지역이름
cityName -- 도시이름
);
-- 영업점
CREATE TABLE business (
busName VARCHAR(10) NOT NULL, -- 영업점이름
localName VARCHAR(10) NOT NULL, -- 지역이름
cityName VARCHAR(10) NOT NULL, -- 도시이름
selection VARCHAR(10) NOT NULL -- 선택
);
-- 영업점 기본키
CREATE UNIQUE INDEX PK_business
ON business ( -- 영업점
busName ASC, -- 영업점이름
localName ASC, -- 지역이름
cityName ASC -- 도시이름
);
-- 영업점
ALTER TABLE business
ADD
CONSTRAINT PK_business -- 영업점 기본키
PRIMARY KEY (
busName, -- 영업점이름
localName, -- 지역이름
cityName -- 도시이름
);
-- 도시
CREATE TABLE city (
cityName VARCHAR(10) NOT NULL, -- 도시이름
selection VARCHAR(10) NOT NULL -- 선택
);
-- 도시 기본키
CREATE UNIQUE INDEX PK_city
ON city ( -- 도시
cityName ASC -- 도시이름
);
-- 도시
ALTER TABLE city
ADD
CONSTRAINT PK_city -- 도시 기본키
PRIMARY KEY (
cityName -- 도시이름
);
-- 새 테이블
CREATE TABLE startMovie (
startTime VARCHAR() NOT NULL -- 시작시간
);
-- 시작시간
CREATE TABLE startTime (
);
-- 예약
ALTER TABLE reservation
ADD
CONSTRAINT FK_member_TO_reservation -- 회원 -> 예약
FOREIGN KEY (
id -- 아이디
)
REFERENCES member ( -- 회원
id -- 아이디
);
-- 예약
ALTER TABLE reservation
ADD
CONSTRAINT FK_movie_TO_reservation -- 영화 -> 예약
FOREIGN KEY (
movieNo -- 영화번호
)
REFERENCES movie ( -- 영화
movieNo -- 영화번호
);
-- 예약
ALTER TABLE reservation
ADD
CONSTRAINT FK_business_TO_reservation -- 영업점 -> 예약
FOREIGN KEY (
busName, -- 영업점이름
localName, -- 지역이름
cityName -- 도시이름
)
REFERENCES business ( -- 영업점
busName, -- 영업점이름
localName, -- 지역이름
cityName -- 도시이름
);
-- 지역구
ALTER TABLE local
ADD
CONSTRAINT FK_city_TO_local -- 도시 -> 지역구
FOREIGN KEY (
cityName -- 도시이름
)
REFERENCES city ( -- 도시
cityName -- 도시이름
);
-- 영업점
ALTER TABLE business
ADD
CONSTRAINT FK_local_TO_business -- 지역구 -> 영업점
FOREIGN KEY (
localName, -- 지역이름
cityName -- 도시이름
)
REFERENCES local ( -- 지역구
localName, -- 지역이름
cityName -- 도시이름
);