数据库设计(三)(选择主键外键,数据库维护拆分,反范式化)

如何选择主键

    1.区分业务主键合和数据库主键
        业务主键用于标识业务数据,进行表与表之间的关联;
        数据库主键为了优化数据存储(Innodb会生成6个字节的隐含主键)
    2.根据数据库的类型,考虑主键是否要顺序增加
        有些数据库是按住建的顺序逻辑存储的(顺序增加对IO有帮助)
    3.主键的字段类型所占空间要尽量的小
        对于使用汇集索引方式存储的表,每一个索引后都会附加主键信息。数据库

避免使用外键约束

    1.下降数据导入的效率
    2.增长维护成本
    3.虽然不建议使用外键约束,可是相关联的列上必定要创建索引   函数

避免使用触发器

1.下降数据导入的效率。
2.可能会出现意想不到的数据异常。
3.使业务逻辑变复杂。工具

关于预留字段

    1.没法准确的知道预留字段的类型
    2.没法准确的指导预留字段中所存储的内容。
    3.后期维护预留字段所要的成本,同增长一个字段所须要的成本是相同的。
    4.严禁使用预留字段。性能


反范式化设计

    反范式化是针对范式化而言的,就是打破第三范式的规定,
    为了性能和读取效率的考虑而适当的对第三范式的要求进行违反,
    而容许存在少许的数据冗余,换句话来讲:反范式化就是实用空间来换取时间。优化

为何反范式化

    1.减小表的关联数量
    2.增长数据的读取效率
    3.反范式化必定要适度spa


数据库维护与优化

    维护和优化要作什么
    1.维护数据字典
    2.维护索引
    3.维护表结构
    4.在适当的时候对表进行水平拆分或垂直拆分
设计

    如何维护数据字典
    1.使用第三方工具对数据字典进行维护
    2.利用数据库自己的备注字段来维护数据字典。以MySQL为例 (COMMENT)增长注释索引

    如何维护索引
    如何选择合适的列创建索引?
    1.出如今WHERE从句,GROUP BY 从句, ORDER BY 从句中的列

    2.可选择性高的列要放在索引的前面
    3.索引中不要包括太长的数据类型
    注意事项:
    1.索引并非越多越好,过多的索引不但会下降写效率并且会下降读的效率
    2.按期维护索引碎片
    3.在SQL语句中不要使用强制索引关键字效率

    维护表结构
    注意事项:

    1.使用在线变动表结构的工具
    2.同时对数据字典进行维护
    3.控制表的宽度和大小
    数据库中适合的操做
    1.批量操做 VS 逐条操做
    2.禁止使用Select * 这样的查询
    3.控制使用用户定义函数
    4.不要使用数据库中的全文索引
    
    表的垂直拆分
    为了控制表的宽度能够进行表的垂直拆分
    好处:优化了I/O读取效率 由于数据库是以页的形式存储的,行越多就越快,
    可是列的增长就会是的宽度增长,行数很少,因此垂直拆分也减少了表的宽度
    1.常常一块儿查询的列放在一块儿
    2.text,blob等大字段拆分到附加表中数据类型

    表的水平拆分     为了控制表的大小能够进行表的水平拆分     解决了数据量大多的问题

相关文章
相关标签/搜索