테이블 외래키 설정
개인프로젝트 2019. 7. 17. 16:23-각 테이블별 외래키(FK) 설정-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | -- MEMBER_REPLY 테이블, MEMBER_BOARD 테이블, MEMBER_BEST_BOARD 테이블을 다시 생성 기본키만 처음에 추가하고 -- 외래키는 테이블 생성후 테이블 내용을 변경해서 삽입할 예정 --베스트 게시물 테이블 (속성 2개짜리도 삭제) drop table BEST_BOARD cascade constraints; --어제는 회원게시판(일반게시물)에 있는 추천수가 회원게시판(베스트게시물)과 연동된다고 생각해서 테이블을 정규화시켜서 --나누려고 생각했었는데, 확인해보니 게시물이 복사될때 추천수는 복사되지 않고 별개로 된다는 것을 확인해서 --추가할 부분을 추가하고, PK와 FK가 꼬였기 때문에 다시 테이블을 생성하였다. create table MEMBER_REPLY( rno number(10) not null primary key, user_id varchar(20) not null, member_bno number(10) not null, r_content varchar(200) not null, reg_date date default sysdate, join_date date default sysdate, recommend number(10) not null ); CREATE TABLE MEMBER_BOARD( member_bno number(20) not null primary key, user_id varchar(20) not null, reg_date date default sysdate, viewcnt number(20) not null, title varchar(20) not null, rcnt number(10) not null, content varchar(400) not null, recommend number(10) not null ); CREATE TABLE MEMBER_BEST_BOARD( best_bno NUMBER(10) NOT NULL PRIMARY KEY, member_bno NUMBER(10) NOT NULL, user_id VARCHAR(20) NOT NULL, reg_date DATE default sysdate, viewcnt NUMBER(10) NOT NULL, title VARCHAR(20) NOT NULL, rcnt NUMBER(10) NOT NULL, content VARCHAR(400) NOT NULL, recommend number(10) NOT NULL ); --각 테이블별 외래키 생성 --댓글 테이블의 ID와 게시글번호를 외래키로 설정 ALTER TABLE MEMBER_REPLY ADD CONSTRAINT user_id FOREIGN KEY (user_id) REFERENCES MEMBER(user_id); ALTER TABLE MEMBER_REPLY ADD CONSTRAINT member_bno FOREIGN KEY (member_bno) REFERENCES MEMBER_BOARD(member_bno); --회원게시판(일반게시물) 테이블의 ID를 외래키로 설정 ALTER TABLE MEMBER_BOARD ADD CONSTRAINT user_id2 FOREIGN KEY (user_id) REFERENCES MEMBER(user_id); --회원게시판(베스트게시물) 테이블의 ID를 외래키로 설정해서 MEMBER 테이블을 참조하도록 설정 ALTER TABLE MEMBER_BEST_BOARD ADD CONSTRAINT user_id3 FOREIGN KEY (user_id) REFERENCES MEMBER(user_id); --회원게시판(베스트게시물) 테이블의 member_bno를 외래키로 설정해서 MEMBER_BOARD 테이블을 참조하도록 설정 ALTER TABLE MEMBER_BEST_BOARD ADD CONSTRAINT member_bno2 FOREIGN KEY (member_bno) REFERENCES MEMBER_BOARD(member_bno); --관리자 테이블, 공지게시판 테이블, 공지게시판 댓글 테이블의 FK 제약조건을 설정 ALTER TABLE ADMIN_BOARD ADD CONSTRAINT admin_id FOREIGN KEY (admin_id) REFERENCES ADMIN(admin_id); --데이터타입이 다르므로 실행 오류가 발생한다. 따라서 데이터타입을 바꿔주어야 한다. ALTER TABLE ADMIN_BOARD_REPLY ADD CONSTRAINT bno FOREIGN KEY (bno) REFERENCES ADMIN_BOARD(bno); --댓글 게시판 BNO의 타입을 변경 (참조할 컬럼의 데이터타입과 일치하도록..) ALTER TABLE ADMIN_BOARD_REPLY modify(bno number(10)); --공지게시판의 댓글 테이블에 ID를 회원 테이블의 ID를 참조하도록 외래키로 설정 ALTER TABLE ADMIN_BOARD_REPLY ADD CONSTRAINT user_id4 FOREIGN KEY (user_id) REFERENCES MEMBER(user_id); | cs |
'개인프로젝트' 카테고리의 다른 글
각 테이블 연동해서 기능 구현 (2) (0) | 2019.07.19 |
---|---|
각 테이블 연동해서 기능 구현 (1) (0) | 2019.07.18 |
기능별 쿼리작성, 시퀀스 작성, 외래키 제약조건 추가 (0) | 2019.07.18 |
개인 프로젝트 기능 리스트 (0) | 2019.07.17 |
프로젝트 관련 테이블 생성 (0) | 2019.07.17 |