웹사이트에있는 게시판에 대한 테이블과
이를 참조하는 게시판 댓글 테이블을 만들려고합니다.
요구사항
게시판 테이블에는 [작성자 / 게시판 글 내용 / 작성 시간]
댓글 테이블에는 [작성자 / 댓글 내용 / 작성 시간]
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 |
---|