Mysql 简单数据库设计

Mysql 简单数据库设计,mysql,database-design,Mysql,Database Design,我想开发一个系统,在这个系统中,用户可以使用AJAX动态地获取数据,而无需重新加载页面。。但是,这并不重要 我的情况是这样的。我有这个表,我称之为玩家,在这个玩家表中,我将存储玩家信息,如,玩家姓名,级别,经验等 每个玩家可以有不同的衣服,从上衣、底裤、鞋子和发型开始,每个玩家可以有1件以上的上衣、底裤、鞋子等 我犹豫不决或不是很确定的是,您通常如何存储数据?我目前的设计是这样的: Player Table ============================================

我想开发一个系统,在这个系统中,用户可以使用AJAX动态地获取数据,而无需重新加载页面。。但是,这并不重要

我的情况是这样的。我有这个表,我称之为玩家,在这个玩家表中,我将存储玩家信息,如,玩家姓名,级别,经验等

每个玩家可以有不同的衣服,从上衣、底裤、鞋子和发型开始,每个玩家可以有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 | ...
我不确定这个设计是否好。如果您是数据库设计师,您将如何设计数据库?或者你将如何储存它们

请告知。
谢谢

看来你对这个还不熟悉

请阅读维基百科上关于数据库规范化的这篇文章:


就我个人而言,我不会像上面的例子那样做,因为每次添加或删除T恤时,你都必须更新球员表。

简言之:你应该制作一个表,连接两张表的球员和衣服,而不是把这一列放进去

你会得到

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共享的文章

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

您通常不希望这样:

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
....

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

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 | ...
玩家

布匹

布匹


一旦您创建了需要关联此数据的表,您只需要id\u player值。

是的,我已经读到了第3级的规范化。我可以知道,你将如何为我的上述案例进行设计吗?我在这里有一个问题,你说:每次添加或删除T恤时,你都必须更新球员表,但每当用户添加/删除衣服时,我都需要更新一些表,对吗?根据@nanne的回答,我仍然需要更新表中的玩家,那么有什么不同呢?谢谢你的设计。我很难理解标准化。我已经读了半天了:在数据库设计方面还有什么额外的技巧吗?比如如何设计出像你这样的设计?当然,我需要了解规范化至少到第三级的基本技巧是:您不希望在字段->中使用逗号分隔的值,该字段->应位于新表中,如果您在多行中看到双值,例如name、lastname、address,则该字段也应位于1表中,这意味着,我应该删除玩家表中的tops列吗?创建一个类似于player_top table的表格来存储player的上衣?好吧,很难全部解释,这就是我提供上述示例的原因。我再给你举一些你不想要的例子,但范围有点广哦,我忘了告诉你一件事。我使用JSON jquery动态地获取数据,所以当我选择player_tops表时,我想会有一个巨大的列表?我想我需要开始一个新问题。谢谢你的回答。你的设计和nanne相似吗?他有一个额外的服装类型表,但是的,我会说它是相似的,你现在一定已经读到有几个标准化级别,这基本上是不同的。我明白了。我仍然在理解规范化的过程中。我可以知道,在实践中,我应该在数据库设计中规范化到哪个级别吗?这取决于您的需要,规范化级别越高并不意味着它越好。我通常上二楼
id_player   //1
id_clothe   //5
id_cloth    // 5
type        // hat
description // very warm