개발/국비 Spring Boot Project

Spring Boot 프로젝트 12일차[20241016]

0720kmc 2024. 10. 16. 18:47

Spring Boot 프로젝트 12일차. 전날 작업했던 논리모델링(관계도/테이블)을 기반으로 물리모델링을 작성하는 시간을 가졌습니다. 물리모델링을 작성하며 누락된 부분이나 잘못된 부분들을 수정하면서 작성하였습니다.

 

📌물리모델링

물리모델링은 실제 DB에 테이블을 생성할 수 있도록 쿼리문을 작성하는 모델링입니다. PK와 FK 뿐만 아니라 NOT NULL, UK등도 작성할 수 있습니다.

 

📌작성한 물리모델링

-입양/임시보호 게시글, 댓글, 게시글 신고 테이블

-- 입양게시글 테이블
DROP TABLE TBL_ADOPT CASCADE CONSTRAINTS;

CREATE TABLE TBL_ADOPT(
   ADOPT_NO NUMBER PRIMARY KEY,
   ADOPT_PERIODSTART DATE NOT NULL,
   ADOPT_PERIODEND DATE NOT NULL,
   ADOPT_BREAD VARCHAR2(1000) NOT NULL,
   ADOPT_STERILIZATION VARCHAR2(1000) NOT NULL,
   ADOPT_GENDER VARCHAR2(1000) NOT NULL,
   ADOPT_WEIGHT VARCHAR2(1000) NOT NULL,
   ADOPT_BIRTH DATE NOT NULL,
   ADOPT_INTRODUCE VARCHAR2(1000) NOT NULL,
   ADOPT_TITLE VARCHAR2(1000) NOT NULL,
   ADOPT_CONTENT VARCHAR2(1000) NOT NULL,
   ADOPT_REGIDATE DATE NOT NULL,
   ADOPT_PRICTURE VARCHAR2(1000), --사진 FK
   CENTERMEMBER_NO NUMBER --센터회원 FK
);

--센터회원/댓글 테이블 연결
ALTER TABLE TBL_ADOPT ADD CONSTRAINT FK_ADOPT_CENTERMEMBER FOREIGN KEY (CENTERMEMBER_NO) REFERENCES TBL_CENTERMEMBER(CENTERMEMBER_NO);

-- 조회
SELECT * FROM TBL_ADOPT;

-- 입양게시글 댓글 테이블
DROP TABLE TBL_ADOPT_COMMENT CASCADE CONSTRAINTS;

CREATE TABLE TBL_ADOPT_COMMENT(
	ADOPT_COMMENT_NO NUMBER PRIMARY KEY,
	ADOPT_COMMENT VARCHAR2(1000) NOT NULL,
	ADOPT_COMMET_REGIDATE DATE	NOT NULL,
	MEMBER_NO NUMBER, --MEMBER_NO FK
	CENTERMEMBER_NO NUMBER, --CENTERMEMBER_NO FK
	ADOPT_NO NUMBER, --ADOPT FK
);

-- 일반/센터회원 테이블과 연결
ALTER TABLE TBL_ADOPT_COMMENT ADD CONSTRAINT FK_ADOPT_COMMENT_MEMBER FOREIGN KEY (MEMBER_NO) REFERENCES TBL_MEMBER(MEMBER_NO);
ALTER TABLE TBL_ADOPT_COMMENT ADD CONSTRAINT FK_ADOPT_COMMENT_CENTERMEMBER FOREIGN KEY (CENTERMEMBER_NO) REFERENCES TBL_CENTERMEMBER(CENTERMEMBER_NO);
ALTER TABLE TBL_ADOPT_COMMENT ADD CONSTRAINT FK_ADOPT_CONTENT_NO FOREIGN KEY (ADOPT_NO) REFERENCES TBL_ADOPT(ADOPT_NO);

SELECT * FROM TBL_ADOPT_COMMENT;

-- 입양게시글 신고 테이블
DROP TABLE TBL_ADOPT_CONTENT_REPORT CASCADE CONSTRAINTS;

CREATE TABLE TBL_ADOPT_CONTENT_REPORT(
	ADOPT_CONTENT_REPORT_NO NUMBER PRIMARY KEY,
	ADOPT_CONTENT_REPORT VARCHAR2(1000) NOT NULL,
	ADOPT_CONTENT_REPORT_REGIDATE DATE	NOT NULL,
	MEMBER_NO NUMBER, --MEMBER_NO FK
	CENTERMEMBER_NO NUMBER, --CENTERMEMBER_NO FK
	ADOPT_NO NUMBER, --ADOPT FK
);

-- 일반/센터회원 테이블과 연결
ALTER TABLE TBL_ADOPT_CONTENT_REPORT ADD CONSTRAINT FK_ADOPT_CONTENT_REPORT_MEMBER FOREIGN KEY (MEMBER_NO) REFERENCES TBL_CENTERMEMBER(MEMBER_NO);
ALTER TABLE TBL_ADOPT_CONTENT_REPORT ADD CONSTRAINT FK_ADOPT_CONTENT_REPORT_CENTERMEMBER FOREIGN KEY (CENTERMEMBER_NO) REFERENCES TBL_CENTERMEMBER(CENTERMEMBER_NO);
ALTER TABLE TBL_ADOPT_CONTENT_REPORT ADD CONSTRAINT FK_ADOPT_CONTENT_REPORT_NO FOREIGN KEY (ADOPT_NO) REFERENCES TBL_ADOPT(ADOPT_NO);

SELECT * FROM TBL_ADOPT_CONTENT;

 

- 후기/봉사 게시글, 댓글, 게시글 신고 테이블

-- 후기게시글 테이블
DROP TABLE TBL_REVIEW CASCADE CONSTRAINTS;

CREATE TABLE TBL_REVIEW(
   REVIEW_NO NUMBER PRIMARY KEY,
   REVIEW_TITLE VARCHAR2(1000) NOT NULL,
   REVIEW_CONTENT VARCHAR2(1000) NOT NULL,
   REVIEW_REGIDATE DATE NOT NULL,
   REVIEW_PRICTURE VARCHAR2(1000), --사진 FK
   CENTERMEMBER_NO NUMBER --센터회원 FK
);

--센터회원/댓글 테이블 연결
ALTER TABLE TBL_REVIEW ADD CONSTRAINT FK_REVIEW_CENTERMEMBER FOREIGN KEY (CENTERMEMBER_NO) REFERENCES TBL_CENTERMEMBER(CENTERMEMBER_NO);

-- 조회
SELECT * FROM TBL_REVIEW;

-- 후기게시글 댓글 테이블
DROP TABLE TBL_REVIEW_COMMENT CASCADE CONSTRAINTS;

CREATE TABLE TBL_REVIEW_COMMENT(
	REVIEW_COMMENT_NO NUMBER PRIMARY KEY,
	REVIEW_COMMENT VARCHAR2(1000) NOT NULL,
	REVIEW_COMMET_REGIDATE DATE	NOT NULL,
	MEMBER_NO NUMBER, --MEMBER_NO FK
	CENTERMEMBER_NO NUMBER, --CENTERMEMBER_NO FK
	ADOPT_NO NUMBER, --ADOPT FK
);

-- 일반/센터회원 테이블과 연결
ALTER TABLE TBL_REVIEW_COMMENT ADD CONSTRAINT FK_REVIEW_COMMENT_MEMBER FOREIGN KEY (MEMBER_NO) REFERENCES TBL_MEMBER(MEMBER_NO);
ALTER TABLE TBL_REVIEW_COMMENT ADD CONSTRAINT FK_REVIEW_COMMENT_CENTERMEMBER FOREIGN KEY (CENTERMEMBER_NO) REFERENCES TBL_CENTERMEMBER(CENTERMEMBER_NO);
ALTER TABLE TBL_REVIEW_COMMENT ADD CONSTRAINT FK_REVIEW_CONTENT_NO FOREIGN KEY (REVIEW_NO) REFERENCES TBL_REVIEW(ADOPT_NO);

SELECT * FROM TBL_REVIEW_COMMENT;

-- 후기게시글 신고 테이블
DROP TABLE TBL_REVIEW_CONTENT_REPORT CASCADE CONSTRAINTS;

CREATE TABLE TBL_REVIEW_CONTENT_REPORT(
	REVIEW_CONTENT_REPORT_NO NUMBER PRIMARY KEY,
	REVIEW_CONTENT_REPORT VARCHAR2(1000) NOT NULL,
	REVIEW_CONTENT_REPORT_REGIDATE DATE	NOT NULL,
	MEMBER_NO NUMBER, --MEMBER_NO FK
	CENTERMEMBER_NO NUMBER, --CENTERMEMBER_NO FK
	REVIEW_NO NUMBER, --ADOPT FK
);

-- 일반/센터회원 테이블과 연결
ALTER TABLE TBL_REVIEW_CONTENT_REPORT ADD CONSTRAINT FK_REVIEW_CONTENT_REPORT_MEMBER FOREIGN KEY (MEMBER_NO) REFERENCES TBL_CENTERMEMBER(MEMBER_NO);
ALTER TABLE TBL_REVIEW_CONTENT_REPORT ADD CONSTRAINT FK_REVIEW_CONTENT_REPORT_CENTERMEMBER FOREIGN KEY (CENTERMEMBER_NO) REFERENCES TBL_CENTERMEMBER(CENTERMEMBER_NO);
ALTER TABLE TBL_REVIEW_CONTENT_REPORT ADD CONSTRAINT FK_REVIEW_CONTENT_REPORT_NO FOREIGN KEY (REVIEW_NO) REFERENCES TBL_REVIEW(REVIEW_NO);

SELECT * FROM TBL_REVIEW_CONTENT;

 

-입양/임시보호 신청서 테이블

-- 입양신청서 테이블
DROP TABLE TBL_ADOPT_REQUEST CASCADE CONSTRAINTS;

CREATE TABLE TBL_ADOPT_REQUEST(
	ADOPT_REQUEST_NO NUMBER PRIMARY KEY,
	ADOPT_REQUEST_NAME VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_PHONE VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_PHONE_SUB VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_EMAIL VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_GENDER VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_AGE VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_ZIPCODE VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_ADDRESS VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_ADDRESS_DETAIL VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_JOB VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_MARRY VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_AGREEMENT CHAR(1) NOT NULL,
	ADOPT_REQUEST_Q1 VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_Q2 VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_Q3 VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_Q4 VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_Q5 VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_Q6 VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_Q7 VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_Q8 VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_Q9 VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_Q10 VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_Q11 VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_Q12 VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_Q13 VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_Q14 VARCHAR2(1000) NOT NULL,
	ADOPT_REQUEST_Q15 VARCHAR2(1000) NOT NULL,
	ADOPT_NO NUMBER
);

--센터회원/댓글 테이블 연결
ALTER TABLE TBL_ADOPT_REQUEST ADD CONSTRAINT FK_ADOPT_REQUEST_NO FOREIGN KEY (ADOPT_NO) REFERENCES TBL_ADOPT(ADOPT_NO);

 

-봉사신청서

-- 봉사신청서 테이블
DROP TABLE TBL_VOLUN_REQUEST CASCADE CONSTRAINTS;

CREATE TABLE TBL_VOLUN_REQUEST(
	VOLUN_REQUEST_NO NUMBER PRIMARY KEY,
	VOLUN_REQUEST_NAME VARCHAR2(1000) NOT NULL,
	VOLUN_REQUEST_PHONE VARCHAR2(1000) NOT NULL,
	VOLUN_REQUEST_PHONE_SUB VARCHAR2(1000) NOT NULL,
	VOLUN_REQUEST_EMAIL VARCHAR2(1000) NOT NULL,
	VOLUN_REQUEST_GENDER VARCHAR2(1000) NOT NULL,
	VOLUN_REQUEST_AGE VARCHAR2(1000) NOT NULL,
	VOLUN_REQUEST_ZIPCODE VARCHAR2(1000) NOT NULL,
	VOLUN_REQUEST_ADDRESS VARCHAR2(1000) NOT NULL,
	VOLUN_REQUEST_ADDRESS_DETAIL VARCHAR2(1000) NOT NULL,
	VOLUN_REQUEST_JOB VARCHAR2(1000) NOT NULL,
	VOLUN_REQUEST_MARRY VARCHAR2(1000) NOT NULL,
	VOLUN_REQUEST_AGREEMENT CHAR(1) NOT NULL,
	VOLUN_REQUEST_Q1 VARCHAR2(1000) NOT NULL,
	VOLUN_REQUEST_Q2 VARCHAR2(1000) NOT NULL,
	VOLUN_REQUEST_Q3 VARCHAR2(1000) NOT NULL,
	VOLUN_REQUEST_Q4 VARCHAR2(1000) NOT NULL
	VOLUN_NO NUMBER
);

--센터회원/댓글 테이블 연결
ALTER TABLE TBL_VOLUN_REQUEST ADD CONSTRAINT FK_VOLUN_REQUEST_NO FOREIGN KEY (VOLUN_NO) REFERENCES TBL_VOLUN(VOLUN_NO);

 

- 각 테이블에 저장된 값들을 구분할 수 있도록 NO를 PRIMARY KEY로 설정하였으며 게시글 테이블과 연관된 테이블들을 FK로 연결하였습니다. 모든 값들을 필수로 입력해야 해서 NOT NULL을 추가하였습니다.

 

📌추가로 작성해야하는 모델링

- 게시글은 카테고리 마다 신고테이블이 따로 있지만 댓글 신고는 하나의 테이블에서 관리하기로 하여 추가 테이블을 작성한 후 게시글 테이블과 FK로 연결해야합니다.

-또한 각 게시글 NO는 시퀀스를 이용하여 번호를 입력할 예정이기 때문에 시퀀스 생성 코드도 추후에 작성할 예정입니다.