唯一标识原则
数据库设计时,如果表A要记录表B的一些数据,考虑到以后的可扩展性,应将B本身的唯一标识放入到A,而非数据库B本身自动生成的唯一标识放入到A。
举个例子:做一个答疑平台,表answer应记录用户表A的logName(唯一)和userName,而不是userId和userName。因为以后考虑到答疑平台的迁移,要融入其他应用的用户表B的数据,id可能是相同的,那么会很麻烦(我也不知道什么麻烦)。但是如果logName相同,那还是有处理办法的。而且id可能是自增长,也有可能是uuid,类型可能是int,也有可能是varChar.
索引的设置
字段属性设为 not null
eg:
假设user表name属性可以为空,现有四个user,其中三个user.name为null,剩下一个为'Jack'.
使用sql语句查询name != 'Jack' 的个数。
select count(1) from user where name <> 'Jack'
结果为0.
这是因为使用 != 和 <> 进行查询时结果集是不包括null的行的。
网友评论