我正在製作一個在線遊戲和我的數據庫中的一個表。最重要的一個也許。它開始變得非常大。我創建一個功能,您可以與多個用戶一起去爲我有一個表,這個樣子至今:MySQL數據庫中的表太大
CREATE TABLE `oc` (
`id` int(11) NOT NULL auto_increment,
`leader` varchar(40) NOT NULL default '',
`car` int(11) NOT NULL default '0',
`car_type` char(2) NOT NULL default '',
`seats` varchar(3) NOT NULL default '0',
`share` enum('1','2') NOT NULL default '1',
`location` varchar(100) NOT NULL default '',
`user1` varchar(40) NOT NULL default '',
`user2` varchar(40) NOT NULL default '',
`user3` varchar(40) NOT NULL default '',
`user4` varchar(40) NOT NULL default '',
`user5` varchar(40) NOT NULL default '',
`user6` varchar(40) NOT NULL default '',
`user7` varchar(40) NOT NULL default '',
`user8` varchar(40) NOT NULL default '',
`user9` varchar(40) NOT NULL default '',
`leader_gun` char(2) NOT NULL default '',
`user1_gun` char(2) NOT NULL default '',
`user2_gun` char(2) NOT NULL default '',
`user3_gun` char(2) NOT NULL default '',
`user4_gun` char(2) NOT NULL default '',
`user5_gun` char(2) NOT NULL default '',
`user6_gun` char(2) NOT NULL default '',
`user7_gun` char(2) NOT NULL default '',
`user8_gun` char(2) NOT NULL default '',
`user9_gun` char(2) NOT NULL default '',
`user1_inv` varchar(40) NOT NULL default '',
`user2_inv` varchar(40) NOT NULL default '',
`user3_inv` varchar(40) NOT NULL default '',
`user4_inv` varchar(40) NOT NULL default '',
`user5_inv` varchar(40) NOT NULL default '',
`user6_inv` varchar(40) NOT NULL default '',
`user7_inv` varchar(40) NOT NULL default '',
`user8_inv` varchar(40) NOT NULL default '',
`user9_inv` varchar(40) NOT NULL default '',
`user1_ready` enum('0','1') NOT NULL default '1',
`user2_ready` enum('0','1') NOT NULL default '1',
`user3_ready` enum('0','1') NOT NULL default '1',
`user4_ready` enum('0','1') NOT NULL default '1',
`user5_ready` enum('0','1') NOT NULL default '1',
`user6_ready` enum('0','1') NOT NULL default '1',
`user7_ready` enum('0','1') NOT NULL default '1',
`user8_ready` enum('0','1') NOT NULL default '1',
`user9_ready` enum('0','1') NOT NULL default '1',
PRIMARY KEY (`id`)
) TYPE=MyISAM ;
現在我不知道我的侷限性。有多達30個用戶可以一起玩,這將是一件很酷的事情,但我的桌子需要3倍的場地。 30 x user1_gun
30 x user1_inv
和30 x user1_ready
。
這個數據庫將被大量使用,因爲所有用戶在訪問頁面時都需要數據庫中的所有信息,以列出所有其他用戶名等。所有用戶也可以在表中更改至少3個值。
我應該限制我的表爲9個用戶還是我可以爲100個用戶製作一個表?我不知道。我可以編寫一些代碼,但現在從未管理過大型的mysql數據庫和服務器。
編輯:好的。只是要清楚。我有一個用戶表,包含我用戶的各種信息,連接到用戶表的汽車表,連接到我的用戶表的武器表。 這不是我唯一的桌子,最多有9名玩家可以玩這款遊戲!該oc表需要有用戶名和槍的字段,每個用戶已選擇和用戶已表示他們準備好了..我不認爲我需要數據庫正常化...
你在這裏正確的時間:你正在尋找一些嚴重的正常化。 :)(現在不能寫一篇文章,但我確定有人會寫。) – 2010-08-21 20:06:14
而不是將所有用戶的數據存儲在同一個表中。創建一個新表格並鏈接到該表格,以便可以在遊戲中存儲無限數量的用戶。閱讀更多關於維基百科或者數據庫規範化的信息:http://en.wikipedia.org/wiki/Database_normalization – Wolph 2010-08-21 20:07:44
這款遊戲的實時性如何? MySQL在這裏可能不是你最好的選擇。 – NullUserException 2010-08-21 20:13:11