一对多的数据库设计问题

时间:2011-08-20 15:10:20

标签: mysql database-design

我正在尝试为我的游戏创建一个数据库表,并希望看到最佳方法。

我有很多怪物,每个怪物都有多少攻击,怪物不一定有同样的攻击。<​​/ p>

每个怪物都有不同的hp,mp和其他属性。

每次怪物攻击都有力量,速度和其他属性。

有人可以帮我设计一下这张桌子吗?

我正在使用MySQL作为我的数据库。

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分: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

当然,你可能会有更多的领域,但你明白了。