首页 > 数据库技术 > 详细

数据库设计优化(一)--基础

时间:2020-08-14 02:21:14      阅读:48      评论:0      收藏:0      [点我收藏+]

设计遵循的基本原则

  • 范式原则 【参见:> https://www.cnblogs.com/Alicia-meng/p/13493506.html】
  • 命名风格--最好是模块功能的缩写 英文 首字母大写
  • 自增ID--数据库自增 int/bigint型 是sqlserver的默认聚集索引 一般作为主键 可以有业务意义【但是 多库环境、不同环境的数据库容易出现id冲突】
  • GUID--具有唯一性 可以避免错误join 【但是空间占用大--32位 非自增 没有聚集索引】
  • 外键-- 可保证数据完整性 类的关系也比较清楚
    • 外键可进行数据校验 级联删除 Eg:表User 具有外键CompanyId 就可确保
      1. user创建时 对应指定Company也存在【不存在时--先创建Company 再创建User 在同一事务中】;
      2. 如果Company删除 则对应关联的所有User也会被删除
      技术分享图片
    • 一般在有严格数据关系时 使用外键
    • 缺点--导入麻烦 增删改都需要额外操作 所以一般都通过程序 建立虚拟外键来完成
  • 数据库事务--多条Sql做一个整体提交 要么全部成功 要么全部失败 作为一个逻辑单元 具有以下特性
    • 原子性(atomicity):事务作为最小工作单元 要么全成功 要么全失败 即事务的原子性
    • 一致性(consistency):从一个一致性状态 转换到另一个一致性状态 即事务执行完 数据都是正确的(事务一旦出错 整个事务都不会提交)
    • 隔离性(isolation): 一个事务修改在最终提交之前,对其他事务是不可看见的; 两个事务A B同时操作一张表时 会通过锁表使A B依次执行
    • 持久性(durability):一旦事务提交 所做的修改就会永久保存到数据库中 即数据提交后 就固化了
    使用事务会存在一些问题
    • 比如高并发的系统 不可避免会出现死锁 想尽量减少死锁 可执行一下操作
      1. 按照固定顺序操作数据
      2. 事务尽量短 事务中避免任何等待 调整锁的隔离级别

数据库设计优化(一)--基础

原文:https://www.cnblogs.com/Alicia-meng/p/13493751.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!