본문 바로가기

게임 개발

기획에서의 DB와 서버의 DB

평소와 같이 게임 DB를 만들고 있었는데, 문득 이런 생각이 들었다.

 

지금 작성하고 있는 DB도 Database인데, 그러면 서버의 DB에 적용되는 규칙인 데이터 정규화 규칙이 똑같이 적용되어야하나?

 

 

 

데이터 정규화(Normalization)는 간단히 말하자면 DB의 이상 현상을 방지하고 중복을 최소화하며, 데이터의 일관성과 무결성을 유지하기 위해 여러 정규형(NF, Normal Form) 단계로 분해하는 과정이다.

 

아래와 같이 데이터가 있다고 가정해보자.

이름 좋아하는 것 다니는 학교 학교 위치
김OO 축구 A고등학교 서울
이OO 책 읽기 B대학교 대구
박OO 운동 C중학교 춘천

 

여기서 사람들의 다니는 학교를 확인하고 싶을 때는 바로 확인할 수 있지만 학교 위치는 굳이 확인하지 않아도 된다.

그렇기 때문에 다니는 학교와 위치는 따로 분리해서 DB를 만드는 것이다.

이름 좋아하는 것 다니는 학교
김OO 축구 A고등학교
이OO 책 읽기 B대학교
박OO 운동 C중학교
학교 이름 학교 위치
A고등학교 서울
B대학교 대구
C중학교 춘천

이러한 이유 때문에 게임의 DB를 작성할 때도 데이터가 중복이되는 경우도 존재하고 어떠한 경우에는 하나의 데이터의 값을 위해 불필요하게 컬럼을 추가하기도 하며 과연 이렇게 하는게 정답인가? 라는 생각을 하게되었다.

 

결론적으로, 게임에서의 DB는 게임을 제작하는 것에 있어서 필요한 데이터의 집합이라고 생각하면 된다.

 

 

 

예를들어 상점에서 판매하는 아이템의 DB가 아래에 있다.

판매 아이템 ID 구매 가격 판매 가격 필요 레벨
#10001 100 50 0
#10103 340 170 10

 

여기에서 상점을 구성하기 위해서는 모든 정보가 필요하다.

처음에 예시로 들었던 학생의 학교만 확인하고 학교의 위치는 필요없는 경우가 아닌, 모든 정보가 있어야 상점에서 이 아이템을 판매할 수 있다는 것이다.

 


반대로, 처음 예시와 같이 학생의 학교와 학교의 지역과 같은 경우는 서비스를 할 때 플레이어의 정보를 저장하기 위한 경우 등에 해당한다.

 

플레이어가 얼마나 돈을 가지고 있었으며, 어떤 아이템을 얼마에 샀고, 현재 어떤 아이템을 장착 중이며, 현금 재화는 얼마나 가지고 있고 ... 이런 정보를 저장할 때 정규화 규칙을 적용하는 것이다.

 


 

즉, 게임 기획적 측면에서 DB는 게임을 구성하기 위해 사용되는 데이터의 집합이며, 그 외의 경우엔 데이터를 저장하기 위한 용도로 사용되는 것이다.

'게임 개발' 카테고리의 다른 글