基于他们的工作,您如何区分出优秀的SQL开发人员?
示例可能包括:
很少使用CURSOR,并试图将它们重构.
很少使用临时表,并试图将它们重构.
可以放心地处理OUTER JOIN中的NULL值.
避免未广泛实现的SQL扩展.知道如何优雅地缩进.
我发现一个优秀的SQL开发人员通常也是一个优秀的数据库设计师,并且更愿意参与数据库的设计和实现.这是因为糟糕的数据库设计可能会使最好的开发人员感到沮丧和阻碍 - 良好的SQL本能并不总能在病态设计或RI很差或不存在的系统中正常工作.因此,告诉优秀的SQL开发人员的一种方法是在数据建模上测试它们.
此外,一个优秀的DB开发人员必须冷却复杂的连接逻辑,并确切知道各种多路连接的结果在不同情况下会是什么.连接缺乏舒适性是SQL代码错误的第一原因(对于这个问题,SQL设计也很糟糕).
至于具体的语法,我会犹豫如下指令:
不使用CURSOR.
不使用临时表.
使用这些技术可能会让你分辨出一个危险的业余SQL程序员(当简单的关系谓词会好得多时使用它们)和一个不错的启动SQL程序员(谁知道如何在没有它们的情况下做大多数事情)之间的区别.然而,在现实世界中有许多情况,其中临时表和游标是完美的方式(有时是唯一的方法)来完成事情(没有移动到另一层来进行处理,无论如何有时更好).
因此,不禁止使用这些高级概念,但除非你明确地处理一个SQL专家正在解决一个非常棘手的问题,由于某些原因,它不适用于关系解决方案......是的,他们可能是警告标志.
我不认为游标,临时表或其他SQL实践本质上是坏的,或者它们的使用是数据库程序员有多好的明确标志.
我认为每种类型的问题都有合适的工具.当然,如果你只有一把锤子,一切看起来像钉子.我认为一个优秀的SQL程序员或数据库开发人员是一个知道在特定情况下哪个工具是正确的人.恕我直言,你不能概括除了特定的模式.
但经验法则可能是:一个优秀的数据库开发人员会发现比普通程序员更复杂的情况下更简洁和优雅的解决方案.