1.表及字段的命名规则
(1).可读性原则:使用大小写来格式化的库对象名字以获得良好的可读性。例如:使用custAddress而不是custaddress来提高可读性。
(2).表意性原则:对象的名字应该能够描述它所表示的对象。例如:对于表,表的名称应该能够体现表中存储的数据内容;对于存储过程,存储过程应该能够体现存储过程的功能。
(3).长名原则:尽可能少使用或者不使用缩写,适用于数据库(DATABASE)名之外的任一对象。
2.数据库字段类型选择原则
1.列的数据类型一方面影响数据存储空间的开销,另一方面也会影响数据查询性能。当一个列可以选择多种数据类型时,应该优先考虑数字类型,其次是日期或者二进制类型,最后是字符类型。对于相同级别的数据类型,应该优先选择占用空间小的数据类型。
2.以上选择原则主要是从下面两个方面考虑。
(1)在对数据进行比较(查询条件、JOIN条件、排序)操作时:同样的数据,字符处理往往比数字处理慢。
(2)在数据库中,数据处理以页为单位,列的长度越小,利于性能提升。
3.char与varChar如何选择
1.如果列中要存储的数据长度差不多是一致的,则应该考虑用char;否则应该考虑用varChar。
2.如果列中的最大数据长度小于50byte,则一般也考虑用char(如果这个列很少用,则基于节省空间和减少I/O的考虑,还是可以选择用varChar)。
3.一般不宜定义大于50byte的char类型列。
4.decimal与float如何选择
1.decimal用于存储精确数据,而float只能用于存储非精确数据。故精确数据只能选择用decimal类型。
2.由于float的存储空间开销一般比decimal小(精确到7位小数只需要4个字节,而精确到15位小数只需要8字节)故非精确数据优先选择float类型。
5.时间类型如何存储
1.使用int来存储时间字段的优缺点
(1)优点:字段长度比datetime小。
(2)缺点:使用不方便,要进行函数转换。
(3)限制:只能存储到2038-1-19 11:14:07 即:2147483648。
2.需要存储的时间粒度
年、月、日、小时、分、秒、周
6.如何选择主键
1.区分业务主键与数据库主键
(1)业务主键用于标识业务数据,进行表与表之间的关联。
(2)数据库主键为了优化数据存储(Innodb会生成6个字节的隐含主键)。
2.跟踪数据库的类型,考虑主键是否要顺序增长,有些数据库是按主键的顺序逻辑存储的。
3.主键的字段类型所占空间要尽可能的小,对于使用聚集索引方式存储的表,每个索引后都会附加主键信息。
7.避免使用外键约束
1.降低数据导入的效率。
2.增加维护成本。
3.虽然不建议使用外键约束,但是相关联的列上一定要建立索引。
8.避免使用触发器
1.降低数据导入的效率。
2.可能会出现意想不到的数据异常。
3.使业务逻辑变得复杂。
9.关于预留字段
1.无法准确的知道预留字段的类型。
2.无法准确的知道预留字段中所存储的内容。
3.后期维护预留字段所要的成本,同增加一个字段所需要的成本是相同的。
4.严禁使用预留字段。