2010-02-12 19 views
0

是否有可能建立一個基於網絡的PHP/mySQL遊戲,其中每個用戶都有自己的數據庫和他/她的賬戶數據。基於PHP的遊戲 - 給每個用戶自己的數據庫

這是一款單人管理遊戲,每個用戶都需要擁有自己的數據庫。或者至少,這就是我看到這個的方式。這是否是正確的解決方案,並且這將在服務器帶寬等方面起作用。

你可以把它看作遊戲的保存文件。每個用戶都有一個保存文件,他自己的數據庫。遊戲的基本面都是1個數據庫中的商店。 savefile數據庫只包含積分榜,生成的角色和使他的savefile/game獨一無二的東西。

+1

這是爲什麼你看到它?每次創建或不活動用戶時,都可以隨時創建和刪除數據庫? – Peter 2010-02-12 08:52:10

+0

看看http://en.wikipedia.org/wiki/Multitenancy – Gordon 2010-02-12 08:53:38

+0

這是正確的彼得。 – Bas 2010-02-12 12:37:17

回答

7

您應該閱讀關於關係數據庫的更多信息。然後想一想更多。您不需要創建單獨的數據庫,也不需要單獨的用戶。你應該有一個用戶表,每個用戶有一個主鍵id,然後其他表表示其他數據位的每個表都有一個所有者userid列(無論你想命名它),其中每行放它的所有者的ID。例如,如果要存儲玩家的庫存,則需要一個名爲InventoryItems的表以及列「id,userid,itemtypeid,numberOfItems」。 itemtypeid是ItemTypes表中某一行的ID,其中包含圖像,名稱和該類型項目的統計信息。然後,用戶清單中的每個項目在該表中都有一行。

這是非常基本的數據庫設計,我認爲你太習慣平面文件。再次強烈建議您閱讀關於數據庫系統和關係數據庫設計的更多知識,學習諸如一對多關係,多對多關係(通過鏈接表)等技術。當你閱讀時,你可能會有許多「啊哈」的時刻,你想到解決你的問題的新方法。

或者,你知道,回到平面文件。那也可以...

9

有可能:是的。但這是否是正確的解決方案:絕對不是。

假設你想更新一個表,使用你提出的方法,你將不得不修改數量巨大的數據庫,而不是一個。看到問題了嗎?

+3

系統中的每個用戶都需要他們自己的實體來存儲他們的相關信息,但這正是一個數據庫中的一個表中的行,不需要那麼高的分離水平。 +1 – nortron 2010-02-12 08:54:30

-1

你不想爲每個會發瘋的用戶設置一個數據庫,爲了有效擴展,你需要1個master和一些slave數據庫。

0

聽起來不太可能 - 而不是專門用於遊戲。 每個用戶的表格會很奇怪,並且每個用戶的列會太...

除非您的遊戲是類似phpmyAdmin,在這種情況下,每個用戶一個數據庫將不夠用!

0

雖然這可能適用於多達10個左右的用戶,但對於200多個解決方案而言,這個解決方案變得混亂且難以管理。

爲什麼你不能在單個數據庫中使用不同的行來存儲不同玩家的細節?

C.

0

也許你說錯了。如果你想要一些本地存儲,你可以在每臺客戶端機器或DOM存儲或SQLite數據庫中擁有本地數據庫。