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는 시퀀스를 이용하여 번호를 입력할 예정이기 때문에 시퀀스 생성 코드도 추후에 작성할 예정입니다.
'개발 > 국비 Spring Boot Project' 카테고리의 다른 글
Spring Boot 프로젝트 14일차[20241020] (2) | 2024.10.20 |
---|---|
Spring Boot 프로젝트 13일차[20241017] (3) | 2024.10.17 |
Spring Boot 프로젝트 11일차[20241015] (0) | 2024.10.15 |
Spring Boot 프로젝트 10일차[20241013] (1) | 2024.10.13 |
Spring Boot 프로젝트 9일차[20241012] (1) | 2024.10.12 |