我需要在标准SQL中使用集合。我需要描述列类型,例如从(Example Color=[Red, Green, Blue] )
集合中选择。我可以使用check constraint或使用树记录创建查找表 - 红色,绿色,蓝色。每种方法的优点和缺点是什么?我需要使这个解决方案具有通用性并尽可能地使用SQL服务器。
答案 0 :(得分:2)
如果您需要它是通用的,那么使用查找表。
检查约束并未在MySQL中完全实现(语法已被接受,但未经过检查)。
查找表的另一个优点是,为人们添加新选项提供管理工具变得更加容易,而无需动态重写所有相关的检查约束。
检查约束对查找表的优势在于优化器可能会使用矛盾检测。在SQL Server中,对WHERE Colour = 'Purple'
的查询可能甚至不会读取表,因为SQL Server在编译时可以告诉这是不可能的,因为检查约束会阻止它。