2011-08-20 2 views
0

게임용 데이터베이스 테이블을 만들려고하고 있는데 어떤 것이 가장 좋은 방법인지 알고 싶습니다.많은 데이터베이스 디자인 문제가 발생했습니다

나는 많은 몬스터를 보유하고 있으며, 각 몬스터는 공격 숫자가 있으며, 몬스터는 반드시 같은 공격을하지는 않습니다.

각 괴물마다 HP, mp 및 기타 통계가 다릅니다.

각 괴물의 공격력은 속도와 속도 및 다른 능력을 가지고 있습니다.

누구든지이 테이블을 디자인 할 수 있습니까?

데이터베이스에 MySQL을 사용하고 있습니다.

+0

이것은 데이터베이스 디자인 문제이며 게임 개발에만 국한된 것은 아닙니다. – Kev

답변

2

필요한 테이블 : MONSTER, MONSTER_ATTACKS.

DROP DATABASE IF EXISTS MONSTER_GAME; 
CREATE DATABASE MONSTER_GAME; 
USE MONSTER_GAME; 
CREATE TABLE MONSTER (
     id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
     hp VARCHAR(64), 
     mp VARCHAR(64), 
     stats1 VARCHAR(64) 
    ) TYPE=innodb; 

CREATE TABLE MONSTER_ATTACKS (
     id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
     monster_id INT, 
     power INT, 
     speed INT, 
     Foreign Key (monster_id) references MONSTER(id) 
    ) TYPE=innodb; 

중요한 부분 : 괴물 아이디의 기본 키를 가지고 MONSTER_ATTACKS는 괴물의 ID로 다시 의미 monster_id의 외부 키를 가지고있다.

+0

나는 그렇게 하겠지만, 데이터베이스를 거대하게 만들지는 않을 것이며 아마도 게임에 뒤떨어 질 것인가? – saadlulu

+0

데이터베이스가 어떻게 커질까요? 어쨌든 MySQL은 적절한 인덱스와 캐싱을 제공한다면 많은 양의 레코드와 상당히 잘 작동하므로 걱정하지 않아도됩니다. – EdoDodo

+0

죄송합니다, 나는 MOSTER_ATTACKS 테이블을 의미했지만, 당신 말이 맞습니다. – saadlulu

0

나는 예를 들어, 몬스터에 대해 하나 개의 테이블을 가지고 추천 할 것입니다 :

attacks 
---------- 
attack_id 
attack_monster #This field links to the monster_id field of other table 
attack_power 
attack_speed 
:
monsters 
---------- 
monster_id 
monster_hp 
monster_mp 

그런 다음 monster_id에 의해 위의 표에 연결되어있는 몬스터의 공격과 다른 테이블을 가지고

물론 더 많은 필드가있을 것입니다.하지만 아이디어를 얻으실 수 있습니다.

+0

그래, 내가 할거야, 고마워. – saadlulu

관련 문제