본문 바로가기

카테고리 없음

웹으로 짱짱 편하게 테이블 관계도 그리기

테이블 구조를 설계하고 테이블 간의 관계도를 그리는 방법은 이전 포스트에서 함께 알아보았죠!

 

게임을 구성하는 테이블들은 외래 키라는 것을 매개체로 하여 서로 연결되어 있는데, 이 관계를 도식화한 것을 ERD (Entity Relationship Diagram, 개체 관계 다이어그램)라고 합니다. ERD를 기획서에 넣기 전에, 어떤 형태가 가장 이상적이고 깔끔한지 이리저리 테이블과 외래 키들을 옮겨 가며 찾아봐야 하는데, 그 작업을 PPT나 엑셀로 하기에는 조금 애매하고 불편합니다. 이를 도와주기 위한 툴이 여러 가지가 있는데 제가 주로 사용하는 툴은 이거예요! (제일 직관적이고 깔끔한 느낌)

 

게임 기획자용은 아니고, DBA (데이터베이스 관리자)가 데이터베이스 설계할 때 사용하는 툴인데, 우리도 이걸 활용해서 편리하게 테이블 기획서를 작성할 수 있습니다! 예시를 보면서 차근차근 따라 해 볼게요!

https://ondras.zarovi.cz/sql/demo/

 

WWW SQL Designer

 

ondras.zarovi.cz

ERD 그리기

우선 링크를 타고 들어가 보시면 빈 화면이 보일 거예요. 구글 드라이브처럼 웹으로 불특정 다수가 보면서 작업하는 툴이다 보니, 빈 화면이 아닌 다른 누군가가 만들어 놓은 ERD가 있을 수 있는데, 하나씩 선택한 다음 [Remove table]을 눌러서 쿨하게 지워 줍시다.

 

프리코네의 미션 테이블을 역 기획해보죠! (오덕 오덕)

 

테이블 생성

[Add table]을 누르면

테이블의 이름을 쓰라고 나오고,

이름을 써 주면 이렇게 테이블이 하나 생성됩니다. MissionTable이라는 이름으로 만들어 볼게요.

 

칼럼 이름, 타입 바꾸기

기본으로 생성된 id라는 칼럼을 더블클릭해 주면 이렇게 수정할 수 있는 화면이 나옵니다. 칼럼 이름을 MissionID로 바꿔 주시고, 자료형은 Integer (정수)로 하겠습니다. 자료형이 뭔지 까먹었다면 여기로 ▼

 

 

데이터 테이블 칼럼 정의

데이터 테이블 설계에 관한 4번째 포스트입니다! 지난 포스트에서 데이터 테이블에 어떤 칼럼(열)을 만들 것인지, 연관된 테이블들을 어떻게 연결시킬 것인지를 알아보았습니다. 이번 편에서는

chikorita22.tistory.com

 

필드 추가 (새로운 칼럼 만들기)

칼럼을 만들 테이블을 선택한 상태에서 [Add field]를 누르면

칼럼 수정하는 화면과 마찬가지로 이렇게 새 칼럼의 정보를 입력하라고 나오죠. 이번에는 미션의 제목으로 사용할 스트링 키를 입력해 줄 TitleStringID라는 칼럼을 만들어 볼게요. String이라는 타입이 있으면 좋을 텐데 없어서 대충 Text로 했습니다. 올바른 방법은 아니지만 실무에서 써도 대충 알아먹을 거예요!

 

다 입력한 뒤 대충 빈 공간을 누르면 이렇게 칼럼이 추가됩니다. 만약 잘못 만들었다면 [Remove Field]로 지울 수 있어요.

 

프리코네의 미션을 뜯어보니 대충 이런 칼럼들이 필요할 것 같네요.

칼럼 이름 자료형 역할
MissionID int 테이블의 Key
TitleStringID string 미션의 내용, 스트링 테이블에서 입력한 Key를 가져온다.
Category Enum 공통, 메인 퀘스트, 이벤트 퀘스트, 캐릭터, 던전, 마나 구입 등등의 카테고리 태그
RewardType1~3 Enum 보상 아이템 타입 (재화? 소모품? 장비? 캐릭터 조각?)
RewardItemID1~3 int 보상 아이템의 ID, 아이템 테이블에서 입력한 Key를 가져온다.
RewardItemValue1~3 int 보상 아이템의 수량
GoalType Enum 달성 목표 (클리어하기, 구입하기, ★성 진급하기 등...)
GoalValue int 달성 목표에 대한 구체적인 값 (어느 스테이지? 어느 상품? 어느 캐릭터?)
Times int 달성 목표 횟수 (몇 번 클리어? 몇 개 구입?)
RequireMissionID int 선행 미션 ID, 이 미션을 클리어 해야 등장한다. 미션 테이블에서 입력한 Key를 가져온다. 
ShortCutType Enum 바로가기 버튼 눌렀을 때 이동할 곳의 타입 (던전? 퀘스트? 인벤토리?)
ShortCutValue int 바로가기 버튼 눌렀을 때 이동할 곳의 구체적인 값 (어느 던전?)

 

칼럼 순서 바꾸기

그냥 혼자 작업할 거라면 칼럼 순서 따위 크게 중요치 않지만, 우리는 프로그래머에게 의도를 설명하기 위한 기획서를 작성하는 것이므로, 가독성에 신경 써야 합니다. 서로 연관되어 있는 칼럼들은 함께 뭉쳐 있는 것이 아무래도 편하겠죠. 예를 들어 RewardType, RewardItem, RewardValue 같은 칼럼은 한 세트나 마찬가지입니다! (아이템의 타입을 정하고, 타입 안에서 구체적인 아이템의 ID를 정한 뒤, 수량을 정한다!)

 

그래서 ERD에서 보이는 칼럼의 순서를 바꿔줘야 할 일이 종종 생기는데, 위치를 바꿀 칼럼을 선택한 채로 Up이나 Down을 누르면 됩니다.

 

외래 키 연결하기

프리코네의 미션은 여러 탭으로 나뉘어 있고, 이벤트 기간 중에는 이벤트 UI에 이벤트 전용 미션 탭이 또 따로 보입니다. 따라서 MissionTable에서 만든 개별 미션들을 각각 어느 탭에 넣을 것인가를 설정해 줘야겠죠. MissionTable 옆에 MissionTabTable을 하나 만드시고, Key 이름을 MissionTabID로 작성해 주세요. 그리고 MissionTable에도 역시 MissionTabID라는 칼럼을 똑같이 하나 만들어 주세요. 우리는 이 둘 사이를 이어 줄 거예요!

 

MissionTabTable에 있는 MissionTabID를 클릭한 채로, [Connect foreign key]를 눌러 줍니다. 그다음 MissionTable에 있는 MissionTabID를 클릭하면 끝! 참 쉽죠! 

 

스트링 테이블에서도 StringID를 MissionTable과 MissionTabTable에 연결해 줍시다.

 

이렇게 하나의 칼럼이 다른 여러 테이블에 동시에 연결되는 것도 가능하지요.

 

연결선의 가독성을 위해 테이블 위치를 옮겨주세요.

 

MissionID와 RequireMissionID의 관계처럼 자기가 자기 테이블에 연결하는 것도 물론 가능합니다. 벌써 끝났네요?!

 

자료형 표기하기

각 칼럼의 자료형들을 이 화면에서 바로 볼 수 있게 하고 싶다면, [Options]를 눌러서

 

[Show field datatype in table design?]에 체크를 해 주시면 됩니다.

 

그럼 이렇게 각 칼럼의 이름 옆에 자료형들이 깔끔하게 보이게 되지요. 만약 바로 적용이 안 된다 싶으면 각 칼럼들을 한 번씩만 클릭! 클릭! 해 주세요.

 

웹에 저장하기

그냥 이대로 캡처해서 기획서에 넣어도 되지만, 실수는 항상 마지막에 발견되는 법...! 혹시 모를 수정 작업을 대비해 저장해 놓는 것이 안전하겠죠! [Save/Load]를 눌러 주시고...

 

[Save]를 누르면 파일명을 작성하라고 뜹니다. 내 개인 컴퓨터에 저장하는 게 아니라, 웹 상에 누구나 볼 수 있는 형태로 저장하는 것이므로 나만 알 수 있는 이름을 작성해 주세요. (누군가 실수로 열어서 삭제할 일이 없도록)

 

저장 완료했다면, 이제 어느 컴퓨터에서든 이 주소로 들어가 [Load]를 눌러서 내가 만든 이름을 쓰면 ERD를 즉시 불러올 수 있습니다. 너무 편리하죠!

 

이대로 기획서에 넣으면 끝 'ㅁ'/

반응형