2011-04-08 111 views
1

我最近開始使用PHP和mysql數據庫創建一個'遊戲'。 在這個遊戲中,有船隻,每個玩家可以建立和控制。有沒有更有效的方法?

現在我有幾個這個成立於我的數據庫是這樣的:

船舶表,包含有列: ID,名稱,學分費,礦產品成本,建造時間,描述,速度,力量,盾牌

的用戶表保存: Ship_01_amount .... ship_08_amount

其中數字對應於船舶的ID。

我想知道是否有更有效的方式來做到這一點,而不是搞砸了。

從現在起,如果我想添加一艘新船,我必須改變我的表格。

在此先感謝。

+0

用戶表中包含哪些數據? – 2011-04-08 08:04:52

回答

3

您必須將有關用戶及其船隻的信息分解爲第三個表格。所以,你將有如下表:

t_ships: ship_id, name, credit_cost, mineral_cost, etc 
t_users: user_id, name, etc 
t_user_ships: ship_id, user_id, amount 

添加上你將只是在表t_user_ships更新量時,此方式。

+0

在't_user_ships.user_id','t_users/user_id','t_user_ships.ship_id'和't_ships.ship_id'上添加索引將是有益的。 – SimonDowdles 2011-04-08 08:13:52

1

搜索「什麼是多對多關係」。

或檢查相關提問/回答:resolve-many-to-many-relationship

像所有其他已經回答,「中等」或「中間」表的關鍵解決方案。任何關於特定用戶的特定船舶的信息(如您擁有的金額)都可以作爲該表中的字段添加。無論您的遊戲需要如何,您都可以添加旗幟升起,當前速度,船長姓名,首次駕駛日期等。

0

是的,你可以通過在用戶和船舶User_has_ship(userId,shipId)之間建立一個新的表格映射來使用many-to-many relationship。 您可以在MYSQL中使用foreign key constraints來檢查用戶和船隻是否存在。

用戶船隻Altough檢查現在需要一個表連接,所以你必須做這樣的

SELECT * FROM User u, User_has_ship us WHERE u.Id = us.userId and userId=? 

此時應更換?在userId中,用戶正在檢查的用戶的ID。

0

將其基本分成三個表格。

  • 表1:您當前的船舶表。
  • 表2:用戶表(用戶數據+用戶ID等)。
  • 表3: Ships_User_META

    SHIP-ID | USER ID 
    --------+-------- 
        1 | 1 
        2 | 1 
        3 | 1 
        1 | 2 
    

...等等。

因此,您可以輕鬆地向用戶添加和移除船隻。

0

您似乎有一張帶有統一的船舶描述的表格,以及一張擁有對船隻作爲列的參考的表格。你在這裏有什麼是你的用戶和船舶參考之間的關係。擴展這個需要改變你的表模式。 您告知: 有三列創建一個表user_ships: - 爲user_id場, - 一個ship_id場, - 量場

每當你需要知道屬於單個船舶的時間量玩家可以在用戶,船舶和用戶表上進行SELECT操作。 當用戶構建一個新的造船模型時,在user_ships表中插入一條記錄。 當用戶丟失或建造更多船隻時,更新相應的記錄。 就是這樣!

相關問題