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