2011-01-11 59 views
0

我想開發一個系統,其中用戶將動態獲取數據(我的意思是動態是,沒有重新加載頁面,使用AJAX ..但是,沒關係)。MYSQL - SImple數據庫設計

我的情況是這樣的。我將這張桌子叫做「玩家」,在這個玩家桌上,我將存儲玩家信息,如玩家名字,等級,經驗等。

每個玩家可以有不同的衣服,從上衣(襯衫) ,底部,鞋子和髮型,每個球員可以有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 | ... 

我不確定這個設計是否好。如果你是數據庫設計師,你將如何設計數據庫?或者你將如何存儲它們?

請指教。 謝謝

回答

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分享!

編輯:根據要求,一些提示:

你不想這一般:

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

感謝您的設計。我很難理解正常化。我已經閱讀了半天:( )數據庫設計中是否還有其他技巧?(比如如何設計像你的設計?當然,我需要理解標準化至少達到第三級) – sequelDesigner 2011-01-11 12:58:13

0

似乎你是新來的。

請閱讀這篇文章在維基百科上有關數據庫規範化:

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


個人而言,我不會做它喜歡在上面的例子中,因爲你必須每天更新玩家的表時間一些T恤被添加或刪除。

+0

是的,我已經閱讀標準化到第三級。我可以知道,你將如何爲我的案例設計? – sequelDesigner 2011-01-11 12:47:53

+0

我在這裏有一個問題,你說:「每次添加或刪除某件T恤衫時,你都必須更新玩家的桌子」,但是無論何時用戶添加/刪除衣服,我都需要更新某個表格。 (基於@nanne答案,我仍然需要更新「players_tops」表),那麼最新的差異是什麼? – sequelDesigner 2011-01-11 13:42:34

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值。