DataBase 프로젝트 정리

Jieun·2022년 6월 24일

과제

목록 보기
1/1
post-thumbnail

jsp 사용함
2022 - 1 학기 데이터베이스 수업에서 과제로 제출한 초초초미니프로젝트
정리&기록 겸 포스팅 함


<주제 설명>

: 온라인rpg게임에서 보스를 잡는 파티에 들어가고싶은 유저 – 파티를 만들고싶은 유저를 매칭해 파티를 성사해주는 것이 목적

- 조건
1. 세 개의 서버(루나, 스카니아, 엘리시움)가 존재
→ 같은 서버의 캐릭터끼리만 파티 결성 가능
2. 모든 서버 합쳐 닉네임 중복 불가능
3. 한 캐릭터는 특정 보스에 대한 파티에는 한 번만 참여 가능 : 여러 보스에 다중 참여는 가능

- 작동방식
1. 파티에 들어가고싶은 유저의 정보를 "캐릭터입력" 페이지에 기입
-> userchar 테이블에 저장
2. 파티를 모집하고싶은 유저(파티장이 되는 유저)가 원하는 서버, 보스, 스펙 정보를 "스펙 등록" 페이지에 기입
-> specification 테이블에 저장
3. "파티 매칭" 페이지에서 모집 버튼 클릭
-> 조건을 만족하는 캐릭터들 중 해당 보스의 파티가 아직 없는 캐릭터를 최대 원하는 수만큼 파티에 포함시킴
: partytest 테이블의 해당 보스 애트리뷰트를 파티장 이름으로 변경
4. "파티보기" 페이지에서 파티원 보기 클릭
-> partytest 테이블에서 해당 보스, 파티장 닉네임을 가진 파티원 나열
5. "서버 별 현황" 페이지 클릭
-> 해당 서버의 캐릭터 수, 보스 파티수를 count해 update 한 후 보여주기


<실행화면>


  • 캐릭터 보기

  • 파티 매칭

  • 매칭된 파티 보기

  • 보기 버튼 클릭

  • 서버 별 현황


< DB table >

  • Userchar table
    : 등록된 캐릭터의 정보를 저장하는 테이블
    : 닉네임 : 중복불가 : PK
    : 서버 : 서버가 같은 캐릭터끼리만 파티 가능
    : 레벨, 스텟, 포스 : 캐릭터의 스펙

  • specification table
    : 모집하고싶은 파티의
    파티장, 보스, 모집인원, 최소요구스펙을 저장하는 테이블

  • specification table
    : 모집이 완료된 파티의 정보를 저장하는 테이블

  • char_party_ex table
    : 등록된 캐릭터 별 파티여부를 저장하는 테이블
    : 각 보스에 대한 파티 존재여부를 저장함
    : 디폴트 값은 ‘0’, 파티가 등록될 경우 파티장의 닉네임을 저장

  • Servernow table
    : 각 서버 별 캐릭터 수, 모집완료 된 파티의 개수를 저장하는 테이블

<생각한 점>

어떻게든 굴러가게 완성은 했지만 테이블을 잘 짠 것은 절대 아니라는 느낌이 든다.

처음에 구상할 때는 완성된 파티를 저장하는 테이블에 파티장, 스펙, 파티원닉네임을 전부 줄줄이 저장하고싶었지만
파티원 수가 유동적이기 때문에 내 지식에 한해서는 불가능했다.

그리고 데베 수업을 다 들어보니 한 테이블에 여러 정보가 혼재하게 다 때려박는 것은 오히려 오류만 발생시킬 수 있다는 것을 알았다.

그래서 캐릭터 별로 보스파티 존재여부&파티장닉네임을 저장하는 partytest 테이블을 따로 뒀다.
하지만 캐릭터 수X2만큼 추가로 공간을 차지하고 소속 파티가 없으면 NULL로 가득 차게되는 구성이 맞는 건지......????

그리고 보스 별로 전부 쪼개둔 탓에 모든 기능에서 보스이름을 저장하고 switch로 명령어를 고르는 부분이 필요했는데, 이 부분을 더 간단하게 할 방법은 없을지..??

이 부분에 대해서 교수님의 피드백이라도 있었으면 도움이 됐겠지만, 그렇게까지 퀄리티 있는 과제를 바라신 건 아닌듯하다.

SQL을 방금 배우고 만든 과제기때문에 매우 엉성하지만 완성을 했다는 점에서 뿌듯하다.
나중에 이 포스팅을 봤을 때 개선할 점이 눈에 딱 보일만큼 발전할 수 있도록 공부 해야겠다...

0개의 댓글