MYSQL - 简单的数据库设计

时间:2011-01-11 12:42:36

标签: mysql database-design

我想开发一个系统,用户将动态获取数据(我的意思是动态,没有重新加载页面,使用AJAX ......但是,它并不重要)。

我的情况是这样的。我有这张桌子,我把它称为#34;播放器",在这个播放器表中,我将存储玩家信息,如玩家姓名,等级,经验等。

每个玩家可以穿上不同的衣服,从上衣(衬衫),下装,鞋子和发型开始,每个玩家可以拥有超过1个上衣,下装,鞋子等。

我犹豫或不确定的是,您通常如何存储数据?我目前的设计是这样的:

Player Table
===========================================================================================
id   |  name   | (others player's info)  |      wearing                   | tops | bottoms
===========================================================================================
  1  | player1 |                         | top=1;bottom=2;shoes=5;hair=8  | 1,2,3| 7,2,3


Tops Table
=====================
id  |  name   | etc...
=====================
 1  | t-shirt | ...

我不确定这种设计是否合适。如果您是数据库设计者,您将如何设计数据库?或者你将如何存储它们?

请指教。 感谢

3 个答案:

答案 0 :(得分:0)

好像你是新来的。

请阅读Wikipedia上有关数据库规范化的文章:

http://en.wikipedia.org/wiki/Database_normalization


我个人不会像上面的例子那样做,因为每次添加或删除一些T恤时你都必须更新玩家的桌子。

答案 1 :(得分:0)

简而言之:你应该制作一张连接2张桌子(玩家和衣服)的桌子,而不是将栏子“穿上”。

你会得到

players
id name
1  player1

clotheTypes
1  top
2  bottom

clothes
id  name   type
1   shirt1 1
2   shirt2 1
3   pants1 2

wearing
playerId ClotheId
1        1
1        2

但是,请阅读文章taht @badcat shared!

编辑:根据要求提供一些提示:

你通常不希望这样:

id name    computer
1  john    work, laptop, desktop, oldcomputer

因为你应该在一个单独的表中。现在,您可以在以后添加计算机的品牌和速度:您现在不能像现在这样做。

Person
id name
1  john

computer
id name    owner
1  work     1
2  laptop   1
3  desktop  1
....

答案 2 :(得分:0)

您需要为衣服创建一个额外的表格,如下所示:

<强>播放器

id_player  //1
name       //Jhon
level      //6
experience //13

<强> player_cloth

id_player   //1
id_clothe   //5

<强> cloth_types

id_cloth    // 5
type        // hat
description // very warm 

创建表格后,您需要关联此数据,您只需要id_player值。