Pelling
20
2019-06-27 00:50:57
2
219

게시판 메뉴 처리에 대해서 질문드려요...


국비로 수업시간에 어제 게시판을 만들어봐서  이것저것 추가하면서 

만들어봤습니다.

계속 만들기 연습을 하던 도중에 DB에 데이터를 무엇을 넣을까 하다가 글이 풍부한 okky를 글들을 참고해서 넣으면서 비슷하게 흉내내면서 만드는 연습을 했습니다.  

자주보는 okky 커뮤니티 메뉴중 사는얘기,포럼,IT행사 3개의 게시판을 3개의 테이블로 만들어서 각각

MVC패턴에 맞게 제작을 했습니다. 

그러다 보니깐 a태그로 각 3개의 view 파일을 링크를 해서  어설프게 만들었습니다.


좀 비효율적인 것 같아서 하나의 테이블에서 끝낼 수 있을 것 같아서 .

board_type  (a:사는애기 b:포럼 c:IT행사)  이런식으로  컬럼을 추가해서 where조건으로 구분 할 수 있게 하고 하나의 테이블에서 3개의 게시판을 이용하는 구조를 만들려고 했습니다.


include로 상단 게시판 메뉴3개 (사는애기,포럼,IT행사)를 달았고   메뉴를 클릭하면 

DAO에서 where board_type = 'a' ,'b','c'  로 값이 변해서 

밑에 게시판 목록이 사는얘기,포럼,IT행사로 바뀌는 것으로 만들고 싶은데  이럴 때 어떻게 처리하세요?


그냥 3개의 jsp 파일로 만들어서 처리를 하는게 젤 간편한가요?

 

여태까지 게시판 하나씩만 만들어봐서 감을 못 잡겠어요...... 


0
  • 답변 2

  • Frudy
    7k
    2019-06-27 03:00:40 작성 2019-06-27 03:04:41 수정됨

    오... 잘하고 계시네요.

    제가 해결한 방법을 서술해드리겠지만, 구글링해서 얻은게 아니고

    학생이 임의로 생각해서 해결한거니 신빙성은 알아서 판단해주세요.


    저 역시 더 나은방법이 있는지 궁금하네요! 

    다른분들의 답변 기대하겠습니다.


    ㅡㅡㅡ


    board  = 게시판 article = 게시글이라 생각해서

    boardTable, articleTable 이렇게 2개를 뒀구요,


    boardTable에는

    boardCode (pk) (게시판 코드)

    boardName (게시판 이름) 이 있고,


    articleTable에는

    articlleCode (pk 게시글 코드)

    boardCode (fk 게시판 코드)

    subject (게시글 제목)

    이런 컬럼이 있었어요.


    즉, okky사이트를 구현한다고 하면

    boardTable에는 

    insert into boardTable(boardCode, boardName) values(1, '사는얘기');

    insert into boardTable(boardCode, boardName) values(2, 'QnA');

    insert into boardTable(boardCode, boardName) values(3, '포럼');

    이런식으로 넣었었고,


    articleTable에 지금 본문과같은 내용을 저장한다면

    insert into articleTable(articleCode, boardCode, subject) values(1, 2, '게시판 메뉴 처리에 대해서 질문드려요...');

    이런식으로 저장했을거에요.

    (지금 작성자님은 QnA게시판 = boardCode가 2인 게시판에 작성하셨으니까요)


    핵심은, boardName컬럼을 boardTable에만 넣었고 articleTable에는 boardCode만 넣었다는거에요.

    게시글 하나를 가져오려고 artcleTable을 조회할 때

    지금 이 게시글보기 페이지처럼 게시판이름도 필요하지만

    그렇다고 articleTable에 boardName컬럼을 추가하게될경우 데이터중복이 발생하기 때문이에요.

    (DB원칙 : 데이터 중복되면 안된다)


    즉 fk 하나로 다른 테이블의 컬럼을 함께 조회하는 방식을 채택해야해서

    inner join을 많이사용했어요.

    articleTable의 boardCode로 boardName까지 조회를 해야했으니까요.

  • Frudy
    7k
    2019-06-27 03:03:58 작성 2019-06-27 03:10:50 수정됨

    즉, 저 환경에서 작성자님이 원하는 기능을 구현하려면

    view에 올릴 때 부터

    <a href = "viewBoard.do?boardCode=1">사는얘기</a>

    <a href = "viewBoard.do?boardCode=2">QnA</a>

    <a href = "viewBoard.do?boardCode=3">포럼</a>

    이렇게 올렸고, (실제로는 동적으로 올렸습니다)


    컨트롤러에서는 request.getParameter로 boardCode를 읽어서,

    (inner join where문) + and boardTable.boardCode = ? 한 다음

    바인딩처리하여 가져왔었어요.

  • 로그인을 하시면 답변을 등록할 수 있습니다.