로그인을 해야 글을 쓸 수 있는 게시판 웹 어플리케이션을 만드려고한다.
급하게 메모장으로 정한 순서는 다음과 같다.
- 게시판 -
index -> list -> control -> view -> control -> list
-> (login) -> post -> control -> list
-> edit -> control -> list
-> delete -> control -> list
- 로그인 -
login -> joinUs -> control -> index
-> control -> mypage -> control -> index
-> index
각 단계별로 분기점이 생길때 아래로 내려 분기점을 설명했다.
MVC 패턴을 이용하여 DB에 접근할 때는 Controller를 사용하고, 입력받아야할 정보가 있는 경우에 View에서(bold표기) 정보를 받아서 사용한다.
로그인 정보는 Session단위로 저장하여 DB에 접근하는 빈도수를 줄였다.
각 데이터베이스의 데이터 테이블은 아래와 같이 설정하였다.
user table
id varchar PK FK
pw varchar
admin boolean default false
post table
postnum int PK
id varchar FK
title varchar
pdate date default sysdate
content varchar
user table에서는 ID를 Primary key로 주어서 겹치지 않는 유일성을 만족시켜서, ID로 식별할수 있게 설정하였다. boolean 변수를 넣어서 게시판 관리자인지 아닌지 확인하는 변수를 추가했지만.... 아래를 보면 알 수 있다.
또한, post table에서 ID는 user table 의 ID를 FK로 받아와서 글을 작성할때 작성자를 자동으로 입력할 수 있게 설계하였다.
데이터베이스 설계에 이어서 테이블을 직접 만들어 보았다.
create table userInfo(
id varchar(20) primary key,
pw varchar(40) not null,
admin char(1) default '0'
constraint userinfo_admin_CK
CHECK(admin in('0','1')) --0이면 false 1이면 true
);
create table post(
postNum int primary key,
id varchar(20),
title varchar(100),
content varchar(1000),
postDate date default sysdate,
foreign key (id) references userInfo(id) on delete cascade
);
설계단계와 달라진 점은 table 명이 user에서 userInfo로 바뀌였다. user는 orcle의 예약어라서 지정이 안되어서 바뀌었고, 또한 MySQL과 다르게 Oracle은 boolean타입이 없어서 char 타입에 0과 1만 넣을수 있게 하여 true false를 저장할 수 있게 하였고, 기본 상태를 false로 해서 회원가입을 통해 가입하는 사람들이 관리자가 될 수 없게 하였다.
