관리 메뉴

새로운 시작, GuyV's lIfe sTyle.

닷넷 게시판 만들기 Part 31 - 게시판 만들기 시작! DB 테이블 구성 본문

ⓟrogramming/asp.net 게시판

닷넷 게시판 만들기 Part 31 - 게시판 만들기 시작! DB 테이블 구성

가이브 2011.05.13 17:00

1. 닷넷 개발환경 준비, 테스트
2. 닷넷 알아보기 [7/7]
3. asp.net 컨트롤 [10/10]
4. 데이터베이스(DB) [7/7]
5. 닷넷 게시판을 만들어보기 전에.. [4/4]
6. 게시판 만들기 [1/..]

드.디.어 asp.net 으로 게시판을 만들어보는 마지막 6장이 시작되었다.

게시판은 네이버 카페나, 블로그에서 글을 쓰고 목록이 나오거나, 트위터/미투/페북 등 소셜네트워크의 그것과 별로 다를바가 없다. 쓰고, 목록이 나오게 되며, 바로 읽거나 글의 제목을 클릭해서 전체 내용을 보게된다. 만약 게시물을 작성한 사람이라면 그 글을 수정하거나 삭제할 수 있을것이다. 또한 글이 많아져서 글 목록이 길어진다면 짤라서 읽을 수 있게 페이지 번호로 이동하여 리스트를 구성할 수도 있고, 글을 찾기 위해 검색하는 기능도 넣을 수 있겠다. 뭐든지 이유가 있어서 만드는 것 아니겠는가?

필자는 지금 게시판 강의에 필요한 게시판을 가지고 있지 않다. 여러분들과 함께 만들어 볼 생각이니 부담갖지 마시고 재밌게 즐기시길 바란다.

뭐든지 제품이나 상품 등을 만들기 위해서는 어떻게 만들지 기획을 해야된다. 그 기획은 실제 작동하지 않더라도 '대충 이러이러할 것이다'정도로 나와주면 누군들 보더라도 이해가 가능할 것이다.




이 그림은 우리가 잘 알고 있는 네이버에서 사용되는 게시판 중 하나이다. 글의 번호, 제목, 그리고 새로운 글이면 제목에 [N] 아이콘이 붙여지기도 한다. 그리고 작성자, 작성일, 조회수, 추천수 등이 리스트에 표시된다.

이렇듯 먼저 만들 게시판을 어떻게 구성할 것인지 생각해보자. 가장 중요한 것이 '어떤 내용이 들어갈 것인가'하는 건데, 일반적으로 누가 썼는지, 그리고 글을 쓸 때 제목/내용이 기본으로 필요하다면 부가적으로 E-Mail 주소 등이 들어갈 수 있겠다. 또한 해당 글에는 댓글도 들어갈 수 있다. 어쨌든 만드는 사람 마음이다.

프로그램을 개발할 때 고려해야 하는 사항은 (1) 사용자의 입력 값, (2) 프로그램에서 필요에 의해 넣어야 하는 값이다.

일단 회원만 글을 작성할 수 있는 회원 연동 게시판을 만들 예정이다.

-- 게시판 글 작성자가 쓸 내용 --
1. 제목
2. 내용
3. 파일첨부
4. 비밀번호 (회원이 작성하므로 비밀번호를 따로 입력할 필요는 없을 것이다. 비회원 작성기능이 있어야 된다면 말이 다르겠지만 말이다)

이 정도(3개)면 될것 같은가? 앞에서 본 네이버 게시판처럼 실제 사용자가 작성하는 내용 이외에도 프로그램에서 넣어줘야 하는 항목도 존재한다.

-- 게시판 글 작성시 자동으로 들어갈 내용 --
1. 글의 고유한 번호 (각각의 글을 구분하기 위한 중요한 값이다.) 
2. 게시판 카테고리 (게시판을 한 개가 아니라 두 개 이상을 사용하기 위해서 구분될 것이다)
3. 작성자
4. 작성일
5. 조회수
6. 추천수

이렇듯 추천기능도 같이 포함시키기로 하자. 
게시판 글 기능으로는 이 정도로 하자. 위의 항목들이 Database에 넣어야 하므로 한 개의 테이블이 될 것이다. 게시판 글 쓰기 테이블에 이어, 댓글 테이블을 구성해보자.

-- 게시판 댓글 --
1. 댓글 고유 번호 (역시 구분에 필요한 값이다)
2. 댓글이 붙은 게시물 글 번호 (댓글은 글마다 다르게 달리므로 구분을 위해 필요한 겂이다.)
3. 댓글작성자
4. 댓글내용
5. 작성일시

필자의 제안과 다르게 여러분들이 추가적으로 넣어봤으면 하는 항목이 있다면 뭐든지 좋으니 넣어보자. 혹시 아는가? 댓글에 파일 첨부가 필요할 수도 있지 않겠는가? ^^

게시판이 1개만 사용된다면 상관없겠으나, 기능은 같지만 종류를 여러개로 사용하는 경우가 많다. 일반적으로 "다중게시판"이라고 불리는데, 커뮤니티의 규모에 따라서 게시판마다 테이블을 따로 만드는 경우도 있다. 자료가 많으면 아무래도 DB에서나 어디에서든 무리가 올 것이다. 우리가 만들 게시판에서는 그냥 1개의 테이블로 하여 카테고리 항목으로 구분하자.

테이블은 다음처럼 명명하기로 하자.

게시판 글의 DB 테이블 : board
게시판 글의 댓글 DB 테이블 : board_comment


가끔씩 게시판 종류중에 게시물 목록에 "답글"로 이어지는 형식을 본 적이 있을 것이다.


hoons.kr 이라는 개발 커뮤니티 사이트에서 사용하는 게시판인데, 답변을 따로 달 수 있는 형식이다. 우리가 만들 게시판은 이 형식을 제외하고 댓글로만 서로 나눌 수 있게 하려고 한다.
다시 말씀드리지만, 여러분이 뭐든지 자료의 값을 넣고 빼는 "자료의 조작"이 자유로워지면 어떤 형식이든지 상상력을 발휘하여 구현해낼 수 있다. 기능의 구현 방법을 모를 뿐이다.

회원제로 운영할 예정이므로 회원 테이블도 구상해보자.

-- 회원 등록  --
1. 회원 아이디
2. 회원 비밀번호
3. 닉네임
4. 회원 가입일 (현재 시간 자동입력)

교육용 게시판(?)이기에 제외할 내용은 과감하게 제외하였다.
아이디 비밀번호는 일반적으로 로그인에 필요한 자료이다. 

이제 앞에서 나열한 자료를 토대로 4장에서 다루었던 Database를 만들고 테이블을 만들어 자료를 넣고 뺄 수 있는 공간을 확보해야 되겠다.
설명을 따로 하지 않아도 4장을 잘 이해하셨다면 문제가 없으리라 생각한다.
Database 이름은 4장에서 예제로 만들었던 "aspnet"로 하기로 하자.

DB관리툴을 실행하고 로그인 후 다음 그림처럼 aspnet DB에 새 테이블을 만든다.


내용 부분에 열(컬럼, Column)명과 데이터형식, Null 허용 체크박스가 나오는데,
컬럼의 순서는 별 중요한 것이 아니다.

1. 글의 고유한 번호 (각각의 글을 구분하기 위한 중요한 값이다.)
2. 게시판 카테고리 (게시판을 한 개가 아니라 두 개 이상을 사용하기 위해서 구분될 것이다)
3. 작성자 (아이디, 이름)
4. 제목
5. 내용
6. 파일첨부
7. 작성일
8. 조회수
9. 추천수

앞에서 우리가 정리했던 게시판 글 쓰기 테이블을 합친 내용이다.
이것을 토대로, 컬럼명은 영문으로 하기로 하고, 해당 항목의 자료가 문자열인지, 정수형인지를 고려해서 넉넉하게 잡아주도록 하자. 만약 모자른다면 넣을 수 없으므로 오류가 발생할 것이다.

#참고
문자열 자료형은 앞에 "var"이 붙은 가변형(자료의 양에 따라 변하는)으로 한다. 만약 var이 붙지 않은 char로 하게 된다면 빈 공간은 모두 공백으로 채워서 사용하기에도 불편하다. 또한 문자열(char, varchar) 앞에 'n'이 붙은 것과 그렇지 않은 것이 있다. n이 붙은 녀석은 그렇지 않은 녀석보다 2배만큼 용량을 더 차지한다. 유니코드(unicode)라는 형식으로 저장하기 위한 데이터형식인데, 쉽게 외국인들(한국어 언어가 아닌)이 사용할 때 이해하지는 못해도 한글로 잘 나오게 하려면 'n'이 붙은 자료형을 사용한다고 이해하자. 지금 우리가 만드는 게시판은 우리나라에서만 사용할거라 가정하고 varchar 로 자료형을 지정한다.

필자가 나름대로 컬럼명과 자료형을 구성해보면 다음과 같다.




위의 그림처럼 이렇게 기본적으로 입력을 하고,




맨 위에 있는 board_id (고유번호)에 오른쪽 버튼을 눌러 '기본 키 설정'을 해준다.



그리고 하단에 있는 '열 속성'에 위의 그림처럼 ID사양-(ID)를 더블클릭하여 "아니오"를 "예"로 바꿔준다. 이 열은 자료가 만들어질 때 하나씩 자동으로 증가시켜주는 기능이다.




그리고 위의 그림처럼 regdate 컬럼의 속성에 '기본값'을 getdate() 로 넣어준다.



readnum(조회수)과 recommend(추천)는 글이 작성된 후에는 0부터 시작하므로 '기본값'을 0으로 넣어주기로 하자. 
기본값을 이렇게 넣어주면 글 작성 쿼리에서 생략이 가능하므로 편리하다.

이것을 테이블명 'board'로 저장하자.

이번에는 게시판 댓글 테이블을 구성하자. (board_comment 테이블)
역시 새 테이블을 하나 더 만들자.

1. 댓글 고유 번호 (역시 구분에 필요한 값이다)
2. 댓글이 붙은 게시물 글 번호 (댓글은 글마다 다르게 달리므로 구분을 위해 필요한 겂이다.)
3. 댓글작성자
4. 댓글내용
5. 작성일시

 


comment_id 도 마찬가지로 1씩 증가를 자동으로 되게하고, regdate (작성일시)의 '기본값'을 게시판 테이블과 마찬가지로 getdate() 를 넣자.

댓글 테이블은 board_comment 테이블 이름으로 저장한다.

이제 회원 테이블을 만들자.

1. 회원 아이디
2. 회원 비밀번호
3. 닉네임
4. 회원 가입일 (현재 시간 자동입력)


user_id 에 "기본 키 설정"을 해주고, regdate 에 기본값으로 getdate() 를 입력하자. 가입일자는 '초'단위까지 저장할 필요가 없을 것 같으므로 자료형이 적은 smalldatetime 컬럼으로 지정한 것이다.

이 테이블은 member 테이블 명으로 저장한다.
이렇게 세 개의 테이블을 만들었으면 테이블의 구성은 모두 끝이다.


다음 단계는 디자이너가 디자인을 할 차례이다. 우리는 개발자이므로 디자이너가 넘겨주는 것을 받아서 기능을 넣어야겠지만, 디자이너가 없으므로 스스로 해결해야 한다. ^^

입력 등에 사용될 <form>..</form>은 최초 HTML로 작성된 후 닷넷 서버 컨트롤로 우리가 변환을 해야겠지만, 처음부터 웹폼 서버컨트롤을 만들어서 적용하려고 한다. 그러므로 앞으로 만들 페이지는 모두 .aspx 파일이다.

다음 Part 전에 여러분들이 나름대로 회원가입 페이지를 꾸며보자. 또한 회원 로그인 페이지도 꾸며보도록 하자. 이미 우리가 모두 해본 것들이다. 별 거 없지 않은가? 사용자로부터 입력받아서 데이터베이스에 넣으면 그만이다. ^_^


다음 Part 에서 계속..

0 Comments
댓글쓰기 폼