摘要:
目标:限定列的有效值,即字典库反模式: 1、在列定义上指定可选值 create table Bugs(status varchar(20) check(status in('new','in progress','fixed')))。 2、使用触发器 还有使用域或者用户自定义类型(UDT)等方法。 缺点: 1、无法获取所有的值,无能用select distinct status from Bugs,因为可能有的status目前还没有存储。 维护不好的话,还有可能造成列表和数据库存储的值,不一致。 2、增加一个值,需要修改数据库定义或者触发器。 3 阅读全文
摘要:
目标:使用小数取代整数反模式:使用float float类型是使用二进制格式编码实数数据。并不是所有的十进制数都能用二进制存储,所以浮点数通常是舍入到了一个非常接近的值。 比如: select rate from A where id=123 --Result:59.95 select * from A where rate=59.95 --Result:empty set;no rows match. select * from A where ABS(rate-59.95)<0.000001 --这个才能正确查出数据!识别反模式: 使用float、real。合理使用反模式: ... 阅读全文