2014-01-22 69 views
0

我在卡表中存儲對信用卡和user_id的引用。我需要修改設計,以便用戶可以註冊多個卡。這樣做,我需要存儲哪個卡是默認的。mySQL中的默認信用卡標誌

用戶可以刪除他們所有的卡,並可以選擇哪個卡是默認卡。

我正在考慮像這樣在卡片表中添加一個標誌。

 
--Cards Table-- 

card_ref | user_id | default 
------------------------------ 
    72138 | 12 | 0 
    42356 | 12 | 1 

當用戶更改默認卡時,是否必須先將所有其他默認標誌設置爲0?我應該將全部設置爲0還是選擇默認值並將其設置爲0.

插入新卡時,是否必須檢查是否有現有卡,如果沒有,請將新卡設置爲默認卡?

+1

您還可以將默認信用卡存儲在用戶表中。然後,當默認更改時,您不必擔心多行更新。 –

回答

1

回答你的具體問題是:

沒有,你就不必執行與該用戶相關聯的所有卡片的更新。只有當前的默認卡和新的默認卡記錄需要更新。這當然假設你的記錄沒有被破壞,並且由於以前的失敗更新或代碼中的錯誤,一個用戶有多個默認卡。

可能,您的第二個問題最終是設計考慮。你需要有一張默認卡嗎?如果是這樣,那麼答案是肯定的,你需要查詢現有的卡片並相應地更新默認值。

Gordon Linoff提供了一個很好的選擇。

另一種替代方法是通過添加一個僅用於保存以用戶ID作爲主鍵的默認卡信息(用戶ID和卡ID爲字段)的新表來擴展您的模式。此替代方法的優點是,您不會隱式地公開新數據(也許您不希望現有數據使用者有權訪問)到現有代碼或執行查詢時拉取整個記錄的查詢。