2016-06-12 34 views
0

我需要在標準SQL中使用集合。我需要描述列類型,比如從(Example Color=[Red, Green, Blue])的設置中選擇。我可以使用檢查約束或使用樹記錄創建查找表 - 紅色,綠色,藍色。每種方法的優缺點是什麼。我需要使這個解決方案具有通用性,並儘可能使用SQL服務器。檢查約束與合適的查找表

回答

2

如果你需要它是通用的,那麼使用查找表。

檢查約束沒有在MySQL中完全實現(語法被接受,但它們沒有被檢查)。

查找表的另一個優點是,爲人們提供管理工具以添加新選項而無需動態地重寫所有關聯的檢查約束變得更加容易。

檢查約束優於查找表的優點是,優化程序可能可以使用矛盾檢測。在SQL Server中,對於WHERE Colour = 'Purple'的查詢甚至可能不會讀取該表,因爲SQL Server可以在編譯時指出,由於檢查約束會阻止它,所以這是不可能的。

+0

「*未完全執行*」是輕描淡寫。在MySQL中完全沒有實現 –