1、SQL是一种说明性语言,不是过程化语言。类似“检索->检查->插入->更新”的过程化步骤的顺序是没有意义的。应该以行集的方式思考,以描述一个逻辑的语言方式思考。
2、在设计数据库表字段时,一个行描述应该包含一个事实,而且是全部事实。例如考勤卡的设计,
不要设计为:[ userId, puchTime, eventFlag(in,out) ] --每行只是半个事实, 进门刷卡时间和出门刷卡时间被拆成两行。
应该设计为:[ userId, inPunchTime, outPunchTime ] --每行是完整的事实,进门刷卡时间和出门刷卡时间在同一行。