2011-08-20 84 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