팀프로젝트로 유기견 사이트를 재설계하기로 했다. 

뭣도 모르는 상태에서 시작하는 거지만 아직 아무것도 모르기 때문에 80%는 성공한 거 같다.

일단 사이트맵은 아래와 같다

 

사이트맵

 

메인페이지에 로그인 회원가입과 게시판 메뉴 4가지가 있고, 로그인을 무조건 해야 게시판을 볼 수 있다.

 

팀 프로젝트의 유기견 홈페이지 사이트의 차별점은 분양업체가 글을 올릴 수 없다는 점이다.

오로지 유기견들의 분양 문화를 지양하기 위해 만든 기능이다.

 

임시보호 중인 유기견을 '임시보호 중입니다' 게시판에 올리게 되면 한달뒤에는 자동으로 입양합니다 페이지로 넘어가게 된다. 그리고 '분양/입양합니다' 게시판에는 글쓰기 기능을 넣지 않았다.

 

 

아무튼 사이트 맵을 바탕으로 페이지 레이아웃을 만들었고, 거기 들어 있는 정보를 바탕으로 데이터 베이스 설계를 해보았다. 

 

 

aquerytool로 설계한 ERD

ERD 툴은

http://aquerytool.com/ 웹 툴을 사용하였다. 테이블도 쉽게 그릴수 있어서 편하게 그릴 수 있었다.

 

데이터 베이스를 설계하기 위해서는 개념->논리>물리 모델링 순서를 따라 설계했다.

 

1.개념적 설계: 속성 파악, 각 페이지에 어떤 속성들이 들어가있는지 정리함.

 

2.논리적 설계: 속성들을 DB와 웹페이지 개발자 입장에서 속성들을 봤을 때 정보를 어떻게 관리할지 파악함.

 

3.물리적 설계: 어떻게하면 데이터를 쉽고 빨리 찾아올 수 있는지 테이블을 합치고 쪼개고 조인하는 작업을 함.

 

 

개인적으로 저자는 이렇게 순서를 쪼개서 하지 않고 생각의 흐름대로 했다. 

1. 사이트 맵을 먼저 파악하고, 각 페이지가 어떻게 연결 되어있는지 먼저 파악했다.

 

2.그 후 회원가입에 있는 정보를 MEMBER테이블에 넣었고, MEMBER테이블과 BBS테이블을 ID를 외래키로 연결시켰다.

처음 설계할때는 BBS 메뉴를 하나의 테이블로 생각하고 BBS 테이블만 4개를 만들었었는데 데이터가 중복이었고, 굉장히 비효율적이라는 생각이 들어 카테고리 항목을 넣어 하나로 합쳤다. 

 

3.BBS 테이블이 거의 부모 테이블이고 Comment, 파일, 유기견, 입양자/분양자로 자식테이블 형태로 테이블을 쪼갰는데 그 이유는 첫번째는 기능면에서의 분리, 두번째는 개별로 읽어올 필요가 있다고 판단되서 이다. 

 

4. 첨부 파일 테이블은 웹페이지 코딩을 할 때 경로를 함께 저장해줘야하는데 이때 파일 이름과 경로를 함께 저장해두면 편하기 때문에 파일 이름과 경로+파일 이름 두개를 저장하기 위해서는 따로 테이블을 만들었다. BBS 테이블에 합쳐도 되지 않나? 이런 생각이 들기도 하지만 파일을 개별로 불러 쓸 수 있는 상황이 있을까봐 아직도 고민하고 있는 부분이다. 

 

5.자유게시판을 제외하고는 유기견의 정보가 다 들어가기 때문에 유기견테이블을 만들었다. 이유는 게시판을 옮겨다닐때마다 유기견 정보를 새로 작성하면 불편하기 때문에 기존에 작성한 유기견정보에 고유번호를 부여해 저장할 수 있게 따로 테이블을 만들었다.

 

6.입양자 분양자 테이블은 고민을 많이 했었다. 입양자와 분양자 게시글이 연결되어있어야 해서 슈퍼키를 사용했다. 

 

데이터 베이스를 처음 설계해보는거라 어디가 부족한지 잘 모르겠고, 효율적인지도 잘 모르겠어서 총체적으로 잘 모르겠다. 하지만 이것저것 생각하면서 설계한거에 큰 점수를 주고 싶다.

+ Recent posts