2017-05-24 57 views
1

可以說我有一張桌子上盛放着鮮花,其中一列是「彩色」。我經常收到有關花朵數據的提要文件(可以說每個物種都有自己的ID,我檢查我的數據庫並更新該行。)從提要文件中,我也收到鮮花顏色(此對象在現實生活中不會改變,但對於爲了說明起見,我們可以說)現在我需要確保該顏色字段的值是一個有效的顏色,而不是「asdasd」例如。所以我的問題是如何以及在哪裏應該保持一個有效的顏色數組我檢查它以及如何將它們存儲在表格中(將這些名稱轉換爲數字並將它們存儲起來?)我知道顏色可以用rgb值表示,這使得它很容易,但可以說它來自feed作爲一個字符串。如何映射有效的SQL值?

SQL這些類型的「有效性檢查映射」應該作爲自己的表存儲還是作爲腳本中的常量?我知道這裏沒有一個正確的方法,但我很好奇聽到dif關於如何處理的不同方法。

+0

我想你可能想要在表示顏色的數據列上使用外鍵約束。這將嚴格執行該值是可用/有效選項之一。 – laylarenee

+0

至於如何檢查傳入的數據是否有效......我建議應用程序層執行驗證任務。 – laylarenee

回答

1

應SQL這些類型的「有效性檢查圖」被存儲爲自己的表

是。

或者可能作爲腳本中的常量?

沒有

我知道有沒有這個

好一個正確的答案,這一個有一個非常強的最佳實踐。有一個表格爲每種顏色存儲「有效」的顏色和ID。然後將顏色的ID存儲爲花表的一部分。

例如:

Colors table: 
ID Name 
---- ------- 
1  Red 
2  Blue 
3  Yellow 
... 

Flowers table: 
ID Type  ColorID 
--- ------ ------- 
1  Orchid 2  (Blue Orchid) 
2  Rose  1  (Red Rose) 

下一個步驟將是「非規範化」的類型爲好,但我並不想過於複雜太多。

+0

感謝您的迴應!如果有更多類似的字段,並且查詢開始使用越來越多的表,那麼你會如何處理數據庫負載?它是否可擴展?作爲常量,它們在進入表格之前將被驗證,並且不需要表格連接。假設有數百萬行,查詢可以返回50,000行 – Hedondrive