2011-08-20 6 views
0

私は自分のゲームのデータベーステーブルを作成しようとしていますが、何が最善のアプローチであるかを見たいと思います。1対多のデー​​タベース設計の問題

私は多くのモンスターを持っており、各モンスターには攻撃の数があり、モンスターには必ずしも同じ攻撃がありません。

各モンスターは、それぞれ異なる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にidの主キーを持っている、MONSTER_ATTACKSはMONSTERのidに戻って参照するmonster_idの外部キーを持っています。

+0

私はそれを行うだろうが、それはデータベースを巨大にし、おそらくゲームに遅れをとらないだろうか? – saadlulu

+0

データベースをどのように巨大にするのでしょうか?とにかく、MySQLは適切なインデックス作成とキャッシュを持っていれば、大量のレコードとかなりうまくいくので、私はそれについて心配しません。 – EdoDodo

+0

私はMOSTER_ATTACKSテーブルを意味して申し訳ありませんが、あなたは正しいです。 – saadlulu

0

私は、たとえば、モンスターのために一つのテーブルを持つ推薦:

monsters 
---------- 
monster_id 
monster_hp 
monster_mp 

その後monster_idにより、前のテーブルにリンクされているモンスターの攻撃、と他のテーブルがあります。

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

もちろん、そこにはもっと多くのフィールドがあるでしょうが、あなたはそのアイディアを得ています。

+0

ええ、私はそれを行うでしょう、ありがとう:) – saadlulu

関連する問題