오라클 게시판 테이블 - olakeul gesipan teibeul

-게시판의 주요 기능-

1. 기본 기능

ㄱ. 로그인 후 게시물 등록, 수정이 가능하도록 처리

ㄴ. 글쓰기 (스마트 에디터 적용, 태그 문자 처리, 공백 처리, 줄바꿈 처리)

ㄷ. 게시물 상세정보, 조회수 증가 처리

ㄹ. 게시물 수정

ㅁ. 게시물 삭제 (delete 방식)

ㅂ. 게시물 삭제 (update 방식)

ㅅ. 검색 기능

ㅇ. 페이지 나누기

2. 파일업로드 (ajax)

ㄱ. 게시판에 파일 첨부

ㄴ. 첨부파일 목록, 다운로드, 삭제

ㄷ. 수정화면에서 새로운 파일 올리기

3. 댓글 기능

ㄱ. 일반적인 방식으로 댓글쓰기 (RestController, REST 방식)

$.ajax( ) 함수 호출하여 insert

컨트롤러에서 뷰로 포워딩한 responseText를 html 태그에 출력

ㄴ. 컨트롤러에서 ArrayList json 형식으로 리턴받아 댓글 목록 출력 (list_json.do)

ㄷ. 목록에 댓글 갯수 표시

ㄹ. 댓글 페이지 나누기 (댓글 목록은 일반적인 방식으로 처리)

ㅁ. 비밀댓글 쓰기, 표시

ㅂ. REST 방식으로 댓글 쓰기 (insert_rest.do)

크롬 확장 프로그램을 이용한 입력 처리

{ "replytext" : "댓글", "replyer" : "kim", "bno" : "1", "secret_reply" : "n" }

ㅅ. REST 방식으로 댓글 목록 출력

ㅇ. REST 방식으로 댓글 상세 화면, 수정, 삭제 기능 구현

4. 페이지 나누기

- 페이지당 게시물수 : 10개

- 전체 게시물수 : 991개

- 몇 페이지? : 100

991 / 10 => 99.1 올림 => 100

- 페이지의 시작번호, 끝번호 계산

where rn between 1 and 10

1페이지 => 1 ~ 10

2페이지 => 11 ~ 20

.....

11페이지 => 101 ~ 110

57페이지 => 561 ~ 570

99페이지 => 981 ~ 990

100페이지 => 991 ~ 1000

시작번호 = (현재페이지 - 1) * 페이지당 게시물수 + 1

1페이지 => (1-1) * 10 + 1 => 1

2페이지 => (2-1) * 10 + 1 => 11

7페이지 => (7-1) * 10 + 1 => 61

끝번호 = 시작번호 + 페이지당 게시물수 - 1

1페이지 => 1 + 10 - 1 => 10

2페이지 => 11 + 10 -1 => 20

* 전체 페이지 블록수

전체 페이지 갯수 / 10

91 / 10 => 9.1 => 10개

예시 )

1    2    3    4    5    6    7    8    9    10    [다음]

[이전]    11    12    13    14    15    16    17    18    19    20    [다음]

현재 페이지가 속한 블록

(현재 페이지 - 1) / 페이지 블록 단위 + 1

1페이지 => 몇번째 블록? 1

(1-1) / 10 + 1 => 1

9페이지 => 1블록

(9-1) / 10 + 1 => 1

11페이지 => 2블록

(11-1) / 10 + 1 => 2

57페이지

(57-1) / 10 + 1 => 6

* 페이지 블록의 시작번호

(현재블록 - 1) * 블록단위 + 1

1블록 => (1-1) * 10 + 1 => 1

2블록 => (2-1) * 10 + 1 => 11

6블록 => (6-1) * 10 + 1 => 51

* 페이지 블록의 끝번호

블록 시작번호 + 블록단위 - 1;

1블록 => 1 + 10 - 1 => 10

2블록 => 11 + 10 - 1 => 20

6블록 => 51 + 10 - 1 => 60

-데이터베이스 게시판 테이블 만들기-

drop table board cascade constraints; //기존의 테이블과 중복되지 않도록 제약조건까지 모두 삭제

cs

create table board ( //테이블 생성

bno number not null, // 게시물 번호

title varchar2(200not null, // 제목

content varchar2(4000), // 내용

writer varchar2(50not null, // 작성자 아이디 (member테이블과 join할 예정)

regdate date default sysdate, // 작성 날짜 (기본값으로 현재 시간이 들어가게됨)

viewcnt number default 0, // 조회수 (기본값이 0이기 때문에 0부터 시작)

primary key(bno) //기본키는 게시물 번호로 설정함

);

cs

insert into board (bno,title,content,writer) values

((select nvl(max(bno)+1,1)from board),'제목','내용','pard');

//게시물의 번호를 시퀀스를 이용해도 되지만 객체를 따로 관리해야 하기때문에

//서브쿼리를 작성하여서 관리

기본적으로 board에서 가장 큰 게시글 번호에서 1을 더하거나, 값이 없을때 (초기값) 은 1을 준다는 쿼리이다.

cs

2012/06/13 - [Lecture/HTML] - [본격 게시판짜기 Part1.1 - 게시판도 HTML부터] 게시글 리스트

2012/06/13 - [Lecture/HTML] - [본격 게시판짜기 Part1.2 - 게시판도 HTML부터] 글입력폼

2012/06/13 - [Lecture/Javascript-기초] - [본격 게시판짜기 Part1.3 - Dom 맛보기 ] 글입력폼 검사

2012/06/13 - [Lecture/Jsp] - [본격 게시판짜기 Part1.4 - HTML-> JSP] form 파라미터 받기

안녕하세요 cocy입니다.

저번시간에 게시판을 구축하면서 데이터베이스의 필요성을 알았으니,
바로 Database에 게시판 테이블을 작성해 보도록 하겠습니다.

첫시간에 정상적으로 설치를 모두 하셨다는 가정하에, Oracle과 SQL Developer를 이용하여 작업에 들어가도록 하겠습니다.

혹시나 설치가 안되신 분들을 위해...

Database      :    Oracle 10G XE 설치           

->  http://cusmaker.tistory.com/entry/1%EC%A3%BC%EC%B0%A8-1%EC%A3%BC%EC%9D%BC-10%EB%B6%84%EB%A7%8C-%EB%94%B0%EB%9D%BC%ED%95%98%EB%8A%94-SQL

DB Tool        :    Sql Developer  설치          

-> http://cusmaker.tistory.com/entry/SqlDeveloper-%EC%84%A4%EC%B9%98

우선 오라클이 정상적으로 서비스되고 있는지 확인해봅시다.

Windows키 + R  (실행) > services.msc

서비스에 등록된 프로그램들의 목록과 중지 또는 실행중인 서비스를 확인할 수 있는 창입니다.

이 목록에서 

OracleServiceXEOracleXETNSListener (프로그램 목록에 커서를 위치하고 o를 치면 금방 찾을 수 있습니다)

이 두개 항목이 "시작됨" 으로 표시되는지 확인하시고 그렇지 않다면 두개 항목을 켜 주시기 바랍니다.

(시작 > 모든프로그램 > Oracle Database 10g Express Edition > 데이터베이스 시작 으로 하셔도 됩니다.)

일단 이 두 항목이 정상적으로 실행중이라면 데이터베이스를 사용할 준비가 끝났습니다.

데이터 베이스를 제대로 공부하시려면

DDL (Data Defination Language)※

DML (Data Manipulation Language)

이 두가지를 공부하셔야 하지만, 

지금은 포스팅의 목적은 게시판의 완성이 있기때문에

데이터베이스를 사용하는데에 충분히 제공되는 GUI 툴을 가지고 

이를 활용하는데 초점을 두도록 하겠습니다. 

우선 데이터베이스를 사용하려면 계정이 있어야합니다.

먼저 관리자 계정으로 접속하여 계정을 생성합시다.

시작 > 모든프로그램 > Oracle Database 10g Express Edition > Database 홈페이지로 이동

오라클 게시판 테이블 - olakeul gesipan teibeul

접속이 되셨으면 계정은 sys 또는 system으로, (기본 관리자 계정)

패스워드는 오라클을 설치할 때 입력하셨던 패스워드를 입력합니다.

로그인이 되면 사용자를 생성창으로 이동합니다.

관리 > 데이터베이스 사용자 > 사용자 생성

사용자 이름과 암호를 입력만 하셔도 사용자가 생성이 되지만,

권한을 부여하지 않으면 할 수있는것이 아무것도 없습니다.

고로 사용자권한에서 권한을 부여합니다.

롤에 커넥션과 리소스는 기본으로 선택되어있으니 건들지 않기로 합니다.

그리고 DBA는 DataBase Administrator의 약자로 데이터베이스의 모든권한을 가지고 있는 관리자 권한입니다.

단순히 빠른 진행을 위해 DBA권한을 부여하면 간편하게 이 단계를 넘어 갈 수 있지만,

사용자에게 DBA권한을 부여하는 일은 보안상으로 취약할 수 있기때문에 

시스템권한 직접 부여를 통해 권한을 부여하도록 합니다.

우선 목록에서 다음의 권한들을 체크바랍니다.

CREATE TABLE             :     테이블을 생성할 수 있는 권한

CREATE VIEW               :     VIEW를 생성할 수 있는 권한

CREATE SEQUENCE      :     시퀀스를 생성할 수 있는 권한

이 세가지 정도만 체크하시고 

※나머지 권한에 대해서는 검색을 통해 한번 알아보시기 바랍니다.

사용자 생성이 끝났으면

SQL Developer를 통해 접속을 시도해 보겠습니다.

설치된 SQL Developer를 실행해주세요.

오른쪽화면에서 접속에 오른쪽버튼을 클릭하시고 새 접속을 누른뒤,

이후 접속정보를 다음과 같이 적고 테스트버튼을 클릭합니다.

접속 이름은 SQL Developer에서 식별할 수 있는 이름으로 아무렇게나 적으셔도 상관 없습니다.

접속테스트가 성공하면 접속을 합니다.

이후 오른쪽 목록에 접속이 추가되는걸 확인하실 수 있는데요 

+ 버튼을 눌러 테이블에서 새로운 테이블을 작성합니다.

그리고 다음과같이 테이블을 생성해주세요.

앞서 보셨던 포스팅에서 나온 게시판의 속성들을 바탕으로 컬럼을 만들었습니다.

여기서 간단히 컬럼의 유형을 살펴보면

기본키            :    not null이며 unique한 값으로 해당 게시글의 기준이 되는 값입니다. 이 키값을 통해 CRUD

NUMBER        :     숫자형식입니다.

VARCHAR2     :     가변 문자열 형식입니다. 크기를 지정해 주어야합니다.

CLOB            :     대용량 텍스트 형식입니다.

확인을 눌러 테이블을 생성합니다.

테이블 생성이 완료되면 간단한 테스트 데이터를 입력해 보도록 하겠습니다.

이로서 테이블을 생성하였고, 테스트 데이터를 입력하였으며,

사용할 준비가 끝났습니다.

다음시간에는 JSP로 돌아가서 데이터베이스에 접속하고, 간단한 select구문을 통해 

테스트로 입력한 데이터를 화면에 뿌려보도록 하겠습니다.

수고하셨습니다.

다음글 : http://cusmaker.tistory.com/67