본문 바로가기

Database/실습

[DB] 게시판

웹사이트에있는 게시판에 대한 테이블과

이를 참조하는 게시판 댓글 테이블을 만들려고합니다.

 

요구사항

게시판 테이블에는 [작성자 / 게시판 내용 / 작성 시간]

댓글 테이블에는 [작성자 / 댓글 내용 / 작성 시간]

1. 테이블의 구조를 파악해서 게시판 테이블 만들기

2. 테이블의 구조를 파악해서 댓글 테이블 만들기

[조건 : 참조 되는 테이블의 내용이 삭제되면 관련있는 댓글 내용도 삭제]

3. 게시판 테이블에 2개 넣고 / 게시글마다 댓글 2개씩 넣기

[조건 : date관련해서 넣을 값은 현재 날짜/시간으로 통일]

4. 특정 게시글 하나 지우면 댓글들도 지워지는지 확인

 

차례대로 구현해보겠습니다.

 

1. 테이블의 구조를 파악해서 게시판 테이블 만들기

 

create table post(

post_number number(4) primary key,

writer varchar2(10 char),

post varchar2(1000 char),

post_time date);

 

create sequence post_seq;

 

primary key로 설정할만한 부분이 없기 때문에

시퀀스를 만들어서 primary key를 부여했습니다.

 

2. 테이블의 구조를 파악해서 댓글 테이블 만들기

 

create table commenter(

c_number number(4) primary key,

c_no_number(4) not null,

constraint fk_post foreign key(c_no_number)

references post(post_number)

on delete cascade,

c_writer varchar2(10 char) not null,

c_comment varchar2(17 char) not null,

c_date date not null);

 

댓글의 번호에 해당하는 게시글을 삭제해야 하기 때문에 서로 참조 관계에 있어야합니다.

이때 댓글의 고유번호가 있어야지 해당 번호의 게시글을 지울 수 있습니다.

 

c_no_number(4) not null,

 

삽입할 고유 번호를 만들어주고,외래키로 설정해줍니다.

 

constraint fk_post foreign key(c_no_number)

references post(post_number)

on delete cascade,

 

이것을 post의 시퀀스 번호를 참조해서(references)

post의 시퀀스 번호의 데이터가 지워지면

같이 지워지도록 합니다.

 

3. 게시판 테이블에  2개 넣고 /  게시글마다 댓글 2개씩 넣기

[조건 : date관련해서 넣을 값은 현재 날짜/시간으로 통일]

 

insert into post values(post_seq.nextval,'김래현', '안녕하세요', sysdate);

insert into post values(post_seq.nextval,'김자현', '안녕하세요2', sysdate);

insert into commenter values(comment_seq.nextval, 1, '김래현', '안녕하세요', sysdate);

insert into commenter values(comment_seq.nextval, 2, '김자현', '안녕하세요2', sysdate);

 

각각의 데이터 인자에 맞게 삽입해줍니다.

 

4. 특정 게시글 하나 지우면 댓글들도 지워지는지 확인

 

select *from post;

delete from post where post_number = 1;

select * from commenter;

 

각각의 데이터 테이블을 확인하고

where을 써서 post_number가 1에 해당하는 데이터를 지우면

commenter의 데이터가 지워지는지 확인합니다.

 

외래키를 사용해보는 실습이었습니다.

댓글 테이블에 고유 번호 데이터를 만드는 것이 핵심이었습니다.

 

 

 

'Database > 실습' 카테고리의 다른 글

[DB] Notebook  (0) 2024.12.26