数据库表结构设计方法

当我们设计一个数据库存储模式时,要仔细分析数据模式,不要一股脑的把所有的数据都放在一起。那样的话对系统的可用性,高效能,扩展性都会有严重的影响。当然你设计的系统非常小,完全可以用最简单的方法。

要通过对业务的熟练,从不同的角度对数据进行多维度分析,一般可以从如下几个方向分析:

1.       数据流向

2.       数据访问特点

3.       数据量的大小

4.       数据的增长量

5.       数据的生命周期

根据以上数据特点,综合数据模式对数据表进行分类:

1.       恒数表

2.       递增表

3.       流水表

4.       状态表

5.       核心表

6.       过程表

在我们进行大数据量系统的模型设计时,根据不同的数据表,必须要遵循这几个要点。

核心表:

核心表是系统访问最频繁的,在设计时要考虑访问的代价,一定要遵循范式,注意字段的个数和字段长度,注意范围查询。如果核心表的数据量很大的话,要根据分区表或表路由等方式进行数据归档,以保证核心表的性能。

过程表:

过程表顾名思义是用来记录某一过程的,一般指数据的生命周期;在设计过程表时要设计一个明显代表数据生命周期的字段,对于数据仓库系统更是要合理的利用生命周期字段,可以高效的统计不同生命周期的数据;在设计表时也要考虑增删改的代价,插入的代价最小,修改需要检索数据保留修改字段值,删除要保留整条记录,代价最为昂贵。

恒数表:

恒数表几乎很少变化,类似我们使用字典表,在设计这样的表时,要设计好表的参数,较小的表就不建议建立索引。

递增表:

递增表的增长是很快的,并不是所有的数据都是常用的,所以分区的大小要尽量均衡,严格区分核心数据和过程数据,索引的键值选择性尽量高,谨慎使用复合索引,按照关联关系设计合适的分区和索引。

流水表:

流水表类似记录log,记录些流水信息,流水表数据量一般都很大,信息几乎没有变更。在设计时要注意分区的粒度和选择,一般不建议建立太多的索引。

状态表:

状态表一般指记录某一行为的状态过程,生命周期很短,很容易和过程表混淆。可以简单区别它们,状态表是动作行为的轨迹;过程表是数据的生命周期。

数据库表结构设计方法相关推荐

  1. 转载:数据库表结构设计方法及原则

    在目前的企业信息系统中,数据库还是最佳的数据存储方式,虽然已经有很多的书籍在指导我们进行数据库设计,但应该那种方式是设计数据库的表结构的最好方 法.设计时应遵从什么样的原则.四个范式如何能够用一种方式 ...

  2. 导出 MySQL 数据库表结构设计文档

    第一种 :利用sql语句查询 需要说明的是该方法应该适用很多工具,博主用的是navicat SELECT TABLE_NAME 表名,COLUMN_NAME 列名, COLUMN_TYPE 数据类型, ...

  3. ezdml 支付mysql 吗_EZDML数据库表结构设计器_设计sql、oracle、mysql数据库表结构 V2.39 免费版...

    很多程序员或者网站站长在设计网站数据库的时候都要进行表结构设计,如果您不想操作原始的数据库工具之想简单设计一下数据库表结构,那么你不妨试试这款EZDML数据库表结构设计器,可以快速设计sql.orac ...

  4. 数据库表结构设计原则

    转载自:http://hi.baidu.com/yzx110/blog/item/0159fadc7b7839a4cd116686.html 数据库表结构设计浅谈 这篇文章如题所述,只打算谈一下数据库 ...

  5. php数据库表怎么删除,php删除数据库表的方法

    php删除数据库表的方法 发布时间:2020-08-24 10:48:04 来源:亿速云 阅读:70 作者:小新 php删除数据库表的方法?这个问题可能是我们日常学习或工作经常见到的.希望通过这个问题 ...

  6. java实体类生成mysql表_springboot+mybatis通过实体类自动生成数据库表的方法

    前言 本章介绍使用mybatis结合mysql数据库自动根据实体类生成相关的数据库表. 首先引入相关的pom包我这里使用的是springboot2.1.8.RELEASE的版本 org.mybatis ...

  7. mysql 数据库表结构设计与规范

    mysql 数据库表结构设计与规范 DDL(data difinition language)就是数据定义语言. 1.sql语句的界定符 [code]– 默认情况下" ; " 代表 ...

  8. 关于聊天记录数据库表结构设计

    1.首先表结构设计针对单个用户,然后拓展到n个用用户记录的存储. 2.这里会用msql数据库给出数据库表脚本,但是实际生产环境应该是在APP端生成sqlite数据库文件,把sqlite文件上传到ser ...

  9. mysql表结构设计_数据库表结构设计

    1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对 应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证 ...

最新文章

  1. 服务发现 注册中心 consul 的介绍、部署和使用
  2. android 之 Activity管理与Intent的六大属性
  3. 多线程:线程安全?如何实现?
  4. 简单实现vue验证码60秒倒计时功能
  5. 如何获取 docker 容器(container)的 ip 地址
  6. altium designer快捷键大全
  7. leetcode-205-Isomorphic Strings
  8. EIGRP sutb
  9. mysql workbench首页_MySQL Workbench是干什么的?
  10. python ipo模型是什么意思_IPO里的估值模型是什么情况?
  11. Hackintosh-OpenCore系列篇-Windows install
  12. android 平板原笔迹,iPad劲敌八:原笔迹输入你行吗?
  13. codeforces-1009D Relatively Prime Graph
  14. 成功解决3dmax打开或导入模型文件的时候,出现文件打开失败
  15. windwos服务器网站504,打开网站出现504 gateway time-out的原因及解决方法
  16. 数据结构 -- 魔王语言解释
  17. 苹果手机闹钟声音大小怎么调_苹果闹钟不响、声音小怎么办?
  18. sigar获取进程信息
  19. 【前端问题分析】从输入 URL 到浏览器接收的过程中发生了什么事情?
  20. (私人收藏)商务报告工作汇报PPT模板

热门文章

  1. python条形码_python3转换code128条形码
  2. android 两列菜单,【Android】实战开发之ListView同一个item显示2列的实现方法(仿2列商品列表)...
  3. iconfont 无法导入 svg_Figma绘制图标上传至iconfont的正确姿势
  4. mysql innodb row_format_INNODB物理行结构(ROW_FORMAT=COMPACT) | 学步园
  5. java xml 单标签,如何修改java中的xml标签特定值?
  6. Javascript七种继承方式
  7. 20200221:在排序数组中查找元素的第一个和最后一个位置(leetcode34)
  8. 2021年陕西高考成绩单招查询时间,2021年陕西高考录取结果什么时候出来,查询时间一览表...
  9. object string java_java实现Object转String的4种方法小结
  10. 点击查询后在表格中获取控件的值