数据库

作者: YQY_苑 | 来源:发表于2020-05-23 12:00 被阅读0次

    范式

    第一范式 1NF

    属性不可分割

    • 字段不可再分

    第二范式 2NF

    字段完全依赖于键

    • 在1NF的基础上,要有键(键可有多个字段组合)
    • 所有字段分别完全依赖于键
    • 如果键是多个字段组合,则不允许部分依赖于该键

    第三范式 3NF

    键中的属性也不存在间接依赖

    • 在1,2NF的基础上,一个表不能有两层依赖

    数据库设计经验

    1. 高内聚

    • 把相关的字段放在一起,不相关的分开建表
    • 如果两个字段能够单独建表,那就单独建表

    2. 低耦合

    • 如果表之间有弱关系
    • 一对一可放在一个表,也可两个表加外键
    • 一对多一般用外键
    • 多对多一般建中间表

    当关联自身存在属性时,需要建关联表

    关联 JOIN

    • Left join : 会保留右边的null,以保证左边都显示
    • Right join : 会保留左边的null,以保证右边都显示
    • Full outer join : 会保留两边的null,以保证两边都显示(一般为多表)

    缓存字段 => 事务

    假设,一个博客blog包含多个评论comments
    如何获取博客的评论数?

    select count(id) from comments where blog_ig=8 ???
    这样会很慢的,加入上百千万亿和博客,难道都要轮一遍计算?

    可以在blog表上加一个 comment_count 字段,
    每次添加comment则 +1 , 删除 -1
    此时,则会产生一个问题,如何保证添加了comment之后,comment_count +1 ,这两个动作能保证都完成了?(保证原子性)

    答:
    使用 事务

    相关文章

      网友评论

          本文标题:数据库

          本文链接:https://www.haomeiwen.com/subject/kyorcctx.html