2011-08-20 54 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; 

的重要部分:怪物有ID的主鍵,MONSTER_ATTACKS有monster_id的外鍵回指向怪物的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