2015-04-07 141 views
0

我有一個MYSQL表name,levelxp列,另一個與level,requiredxp。我想這樣做,如果用戶到達requiredxp與他們的xp價值他們改變他們的水平。在這種情況下是否需要使用外鍵?

是否有必要使用主鍵和外鍵進行此操作而無需將信息發送到服務器自動,請檢查xp,並設置功能有很多的if語句來檢查在該requiredxp其他表,然後如果它大於用戶xp更改level

我是比較新的MySQL的,所以請糾正我,如果我錯了的東西:)

+0

在你的用例中沒有外鍵是不必要的。在你的用例中,你只需要有一個子查詢或連接來根據需要的xp和當前用戶的xp來確定用戶的級別。您不希望將用戶級別分別存儲在用戶表中,因爲如果您希望更改某個級別所需的xp,可能會導致同步問題。 – hofan41

+0

這並不嚴格回答你的問題,但是,我的觀點是:不要依賴數據庫約束來強制執行你的應用程序的基本邏輯。在代碼中處理更改和奇怪邊緣案例(在您的域中,也許您會添加一個自動賦予額外級別的魔法項)比通過數據庫約束更靈活。 –

+0

因此,請不要使用任何外鍵或主鍵,並且..? – pedritoalfonso

回答

0

你可以有一個等級表有兩列:水平和requiredExp。然後,第二個表稱爲玩家與列:名稱,經驗,水平。

第一張表上的主鍵是關卡。第二張桌子上的主鍵是player_id或其他東西。 PLAYER表的列級別是引用LEVEL表的外鍵。這樣,在你的代碼中,你將能夠問,如果PLAYER x具有EXPERIENCE y,那麼你可以在PLAYER表上更新玩家的等級。

我希望這有助於!

相關問題