2013-12-15 85 views
0

我正在使用MYSQL存儲有關用戶訂單的數據。使用PayPal,某些訂單隻有一個交易ID,而其他訂單隻有一個配置文件ID。對於txn_id和profile_id有單獨的字段,根據順序,其中一個或另一個是否爲NULL,是否可憐的數據庫設計?字段相關的數據庫結構

回答

1

不,這並不是糟糕的設計。

根據具體情況,您有兩種情況,一種是NULL。當您嘗試強制執行時,出現問題的確切原因是NULL或至少一個不是NULL。爲了有效地做到這一點,您需要使用觸發器來檢查值。

0

如果總是隻有一個ID或另一個,可以考慮有兩個字段,一個是id_type,另一個是id_value(如果它們具有相同的數據類型)。

這可能會使查詢更簡單。

0

您有兩種基本選擇:

  1. 兩個領域,一個是交易,一個用於個人資料都交易和檔案,並有另一場,以確定是否
  2. 的字段是一個Transction ID或個人資料ID

我更喜歡1號(與您的基本相同),因爲您保留了字段的正確命名而不是通用命名。除此之外,如果其中一個是NULL,您總是可以使用COALESCE()或那種功能來檢索不是NULL

在這方面,這也意味着,你應該有一個人工主鍵將不能依賴Transction IDProfile ID