数据库设计规范

数据仓库设计规范文档 数据仓库设计规范文档 版本 更新内容 备注 v1.0 创建文档 2020-08-11 一. 数仓建设 1.1. 数据模型架构规范 分层是为了解决 ETL 任务及工作流的组织、数据的流向、读写权限的控制、不同需求的满足等各类问题。 总体来说,数仓划分为操作数据层、数据仓库层和数据集市层三部分 数据层次的划分 ODS:Operational Data Store,操作数据层,在结构上其与源系统的增量或者全量数据基本保持一致。它相当于一个数据准备区,同时又承担着基础数据的记录以及历史变化。 阅读详情

1.数据库设计规范:

①数据库命名规范:

①所有数据库对象名称必须使用小写字母并用下划线分割

②所有数据库对象名称禁止使用MySQL保留关键字

③数据库对象的命名要能做到见名识意,并且最好不要超过32个字符。例如 用户表:mc_userdb

④临时表必须一tmp为前缀,时间为后缀。

⑤备份库、备份表必须以bak为前缀,日期为后缀

⑥所有存储相同数据的列名和列必须一致

②数据库基本设计规范

①所有的表必须以lnnodb存储引擎。(5.6以后的默认引擎,支持事务,行级锁,更好的恢复性,高并发下性能更好)。

②数据库和表的字符集统一使用UTF8(避免乱码问题)(UTF8字符集汉字占3个字节,ASCII码占有一个字节)。

③所有的表和字段都需要添加注释。(方便以后对数据字典的维护)。

④尽量控制单表数据量的大小,建议控制在五百万以内。(这种限制取决于存储设置和文件系统),尽量做到冷热数据分离,减小表的宽度。减少磁盘IO,保证热数据的内存缓存命中率

⑤禁止在表中建立预留字段

⑥禁止在数据库中存储图片,文件等大的二进制数据

⑦禁止在线上做数据库压力测试

⑧禁止从开发环境,测试环境直连生产环境数据库

 

③ 数据库索引设计规范

①限制每张表上的索引数量,建议单张表索引不超过五个

(索引并不是越多越好,可以降低也可以提高效率。禁止给表中的每一列都建立单独的索引)

②每个Innodb表必须有一个主键(不使用更新频繁的列作为主键,不使用多列主键)

③不使用UUID、MD5、HASH,字符串列作为主键(后面的主键值不一定大于前面的,增加IO操作)

④主键建议使用自增ID值

常见索引列建议:

如何选择索引列的顺序:

 避免建立冗余索引和重复索引:

 对于频繁查询的索引优先考虑覆盖索引:(覆盖索引:包含了所有查询字段的索引)

尽量避免使用外键:

④数据库字段设计规范: 

①优先选择存储需要的最小的数据类型

②避免使用TEXT,BLOB数据类型

③避免使用ENUM数据类型

④尽可能把所有列定义为NOT NULL 

⑤不建议字符串存储日期型数据

⑥使用TIMESTAMP或DATETIME类型存储时间

QI

⑦同财务相关的金额类数据,必须使用decimal类型

 

 ⑤数据库SQL开发规范

①在程序中建议使用预编译语句进行数据库操作

②数据库SQL开发中避免数据类型的隐式转换

 

 ③充分利用表上已经存在的索引

④程序连接不同的数据库使用不同的账号,禁止跨库查询 

⑤禁止使用SELECT *必须使用SELECT<字段列表>查询

 ⑥禁止使用不含字段列表的INSERT语句

错误:

正确:

⑦禁止使用子查询,可以把子查询优化为join操作

⑧避免使用JOIN关联太多的表

 ⑨减少数据库的交互次数

⑩使用in代替or

⑪禁止使用order by rand()进行随机排序

⑫WHERE语句禁止对列进行函数转化和计算

 

⑬在明显不会有重复值是使用UNION ALL 而不是UNION

 

 ⑭拆分复杂的大SQL为多个小SQL

⑥数据库操作行为规范

①超过100万行批量写操作,要分批多次进行写操作

②对于大表使用pt-online-schema-change修改表结构

 

 ③禁止为程序使用的账号赋予super权限

 ④对于程序连接数据库账号,遵循权限最小原则

 

 

 

 

 

 

 

 

数据仓库设计规范 ○ 指标相关: 区分是否可累加指标,比如pv 为可累加指标「尽量控制在15个以内」,uv不可累加指标「尽量控制在5个以内,因为不可累加的指标需要按cube来组合运算」,不算衍生指标。○ 该层为维度数据,维度是对具体分析对象的分析角度,维度要具备丰富的属性,历史信息的可追溯性,对通用的维表要保持一致性,避免维度二义性。○ 按业务主题组织高度汇总数据,产出通用的指标数据,统一指标计算口径和方法,避免指标冗余计算导致数据不一致。○ 该层接收来源不同源的数据,主要分流量日志,业务日志,业务数据,API第三方数据。 阅读详情

相关推荐

数据库设计规范-命名规范.docx

数据库设计规范-命名规范全文共4页,当前为第1页。数据库设计规范-命名规范全文共4页,当前为第1页。数据库设计规范(命名规范) 数据库设计规范-命名规范全文共4页,当前为第1页。 数据库设计规范-命名规范全文共4页,当前为第1页。 1 目的 规范数据库设计。 2 概述 从数据库的设计原则 设计文档几方面论述数据库设计的规范思想及命名规则。 3 数据库应用结构 根据对一般业务系统的分析,将数据库和程序系统统一进行整体描述,展示数据库的 表之间以及与程序模块间的关系。 3.1 数据表和程序模块的分类 根据"处理特点",将数据表和程序模块进行分类如下: 数据表分类:业务数据表、基本编码表、辅助编码表、系统信息表、累计数据表、结 算数据表、决策数据表。 程序模块分类:初始化、业务处理、完整性检测与修正、结算处理、统计处理。 3.1.1 数据表分类说明 业务数据表:记录业务发生的过程和结果。如,合同、出仓单、申请单、凭证。 基本编码表:描述业务实体的基本信息和编码。如,产品、客户、供应商、雇员。 辅助编码表:描述属性的列表值。如,合同类型、职称、民族、付款方式。 系统信息表:存放与系统操作、业务控制有关的参数。如,用户信息、权限、用户配 置信息、成本核算方式。 累计数据表:存放业务的当前值和累计值。如,当前库存、当前存款、累计销售、累 计支出、应收账款。 结算数据表:存放各个时期末的结存数。如,月末库存、月末银行存款、应收账款月 结。 决策数据表:存放各个时期内发生的统计值。如,月销售统计、月回款统计、出入库 统计。 3.1.2 程序模块分类说明 初始化:系统运行前对系统进行数据的初始化。如,库存初始化。 业务处理:业务过程的控制和结果记录。如,合同录入、费用审批、出入库。 完整性检测与修正:对累计数据表进行检查并自动修正。如对当前库存、当前存款、 累计销售的检查和重新计算。 结算处理:计算并记录各个时期末的结存数。库存月结、应收账款月结。 统计处理:计算并记录各个时期内发生的统计数。如,统计月销售、统计月回款、统 计出入库。 3.2 数据表间的关系 业务数据表<-->基本编码表 主-外键关系。如,合同表<-->客户编码表; 业务数据表<-->辅助编码表 主-外键关系。如,合同表<-->付款方式; 业务数据表、累计数据表、结算数据表:累计数据表=结算数据表(上期末) + 业务数 据表(本期内发生)。如当前库存=上月末库存数+(本月入库数-本月出库数); 决策数据表<-->业务数据表 决策数据表的数据是由业务数据表中数据导出(统计)的; 数据库设计规范-命名规范全文共4页,当前为第2页。数据库设计规范-命名规范全文共4页,当前为第2页。3.3 数据表与程序模块间的关系 由一个例子(仓库管理)来说明数据表与程序模块之间的关系: . 系统使用前,由初始化模块对库存数(累计数据表)和上月末库存数(结存数据表)进 行初始化; . 当有入库业务发生时,由入库模块(业务处理)将入库单录入并保存到入库单明细帐( 业务数据表)中,同时将入库数累加到库存数(累计数据表)中; . 定期或不定期,库存数核算模块(检查完整性检测与修正)根据上月末的库存数(结存 数据表)、本月已发生数(业务数据表)检查当前的库存数(累计数据表)是否符合,不符合 则给出提示,可手工或自动进行更正(当前库存数=上月末库存数+本月入库数-本月出库数 ); . 每月初,进行上月的月结处理。月结模块(结算处理)根据上月初的库存数(结存数据 表)、上月发生数(业务数据表)计算出上月末的库存数(累计数据表)。公式为:上月末库 存数=上月初库存数+上月入库数-上月出库数; . 每个月月结后,库存业务月统计模块(统计处理)统计上月的各种库存商品的入库和 出库数,便于查询和生成报表,也作为决策支持的数据基础。 3.4 数据表命名时对数据表分类的考虑 . 业务数据表:t_d_<系统标识>_<表标识>。如销售系统的合同表 t_d_SH_Contract 或 t_d_SH_合同; . 基本编码表:t_b_[<系统标识>]_<表标识>。如客户编码表t_b_Customer 或 t_b_客 户; . 辅助编码表:t_a_[<系统标识>]_<表标识>。如合同类别t_a_ContType 或 t_a_合同 类别; . 系统信息表:t_s_[<系统标识>]_<表标识>。如用户表t_s_User 或 t_s_用户; . 累计数据表:t_t_<系统标识>_<表标识>。如当前库存表t_t_SO_Stock 或 t_t_SO_ 库存; . 结算数据表:t_c_<系统标识>_<表标识>。如库存月结表t_c_SO_StockMonth 或 t_c_SO_库存月结; . 决策数据表:t_w_<系统标识>_<表标识>。如月销售统

MySQL企业使用规范

基础规范 表存储引擎必须使用 InnoDB 表字符集默认使用 utf8,必要时候使用 utf8mb4 通用,无乱码风险,汉字 3 字节,英文 1 字节 utf8mb4 是 utf8 的超集,有存储 4 字节例如表情符号时,使用它 禁止使用存储过程,视图,触发器,Event 对数据库性能影响较大...

LAf_HUAZAI的博客 344

拒绝无意义刷屏,打造高效率热点追踪,极空间部署『TrendRadar』

今天的这个项目确实不错,通过部署在极空间NAS之后,我们就能一直不间断的获取到自己想要看到的新闻或者信息。项目的设置项其实有很多,有兴趣的小伙伴可以在部署之后自己慢慢挖掘~目前年终大促正在火热进行中,极空间NAS不管是新品还是之前在售的畅销型号都有专属的优惠,并且还能叠加国补、平台优惠等福利,享受180天换新以及2年质保服务 ,更有抽奖、晒单等活动,喜欢的小伙伴赶快冲吧!

qq_63499861的博客 2290

别再花钱买插件了!手把手教你实现UE5运行时动态导入FBX模型(附完整源码解析)

本文详细解析了UE5运行时动态导入FBX模型的全过程,从FBX SDK集成配置到核心解析流程,再到引擎资源转换和性能优化。通过多线程加载架构和内存优化技巧,开发者可以高效实现动态模型导入,避免购买昂贵插件。文章还提供了完整源码解析和高级功能扩展,帮助开发者深入理解UE5的底层资源管理机制。

weixin_27033895的博客 377

数据工程师——ETL

文章摘要 ETL(数据抽取、转换、加载)是数据处理的核心流程,负责将分散数据源整合为高质量数据。ETL与ELT的主要区别在于转换步骤顺序,分别适用于不同规模数据场景。数据仓库通过ETL从多个数据源集成数据,支持分析决策。维度建模中的事实表记录业务指标,维度表提供上下文信息。缓慢变化维度(SCD)处理随时间变化的维度数据,常见类型包括直接覆盖型、新增版本型等。数据清洗解决数据缺失、重复、错误等问题,确保数据质量。数据血缘记录数据流转路径,便于问题排查和影响分析。常用ETL工具如Kettle通过转换和作业实现数

weixin_45729710的博客 1559

银行数据仓库数据模型设计规范:让数据管理更高效

银行数据仓库数据模型设计规范:让数据管理更高效 【下载地址】银行数据仓库数据模型设计规范 本开源项目深入解析银行数据仓库的数据模型设计规范,提供从概念模型到物理模型的完整设计指南。概念模型阶段聚焦主题划分,帮助清晰组织数据;逻辑模型阶段细化主题,归纳总结关键数据点;物理模型阶段则实现逻辑结构,涵盖表命名、字段类型等细节。...

gitblog_06761的博客 1165

【机器视觉】Halcon 最新版本安装教程(HALCON 24.11.1.1 Progress-Steady)

注:如果使用评估版本,下载前先了解最新评估授权密钥所支持的版本。。近几年不同版本安装过程类似,均可参考本教程。

OpenSeek的博客 3万+

数据结构(数据库)设计规范

为什么80%的码农都做不了架构师?>>> ...

weixin_34152820的博客 2135

YOLOv11改进 | 损失函数改进篇 | EIoU、SIoU、WIoU、DIoU、FocusIoU等二十余种损失函数

这篇文章介绍了YOLOv11的重大改进,特别是在损失函数方面的创新。它不仅包括了多种IoU损失函数的改进和变体,如SIoU、WIoU、GIoU、DIoU、EIOU、CIoU,还融合了“Focus”思想,创造了一系列新的损失函数。这些组合形式的损失函数超过了二十余种,每种都针对特定的目标检测挑战进行优化。文章会详细探讨这些损失函数如何提高YOLOv11在各种检测任务中的性能,包括提升精度、加快收敛速度和增强模型对复杂场景的适应性。

Snu77的博客 6194

用 XCO_CP_XLSX 在 ABAP 中写 Excel:从写入访问到样式控制的完整指南

本文介绍了在 ABAP 环境中使用 XCO_CP_XLSX 模块导出 Excel 报表的完整实践方案。文章从获取写入访问权限开始,详细讲解了基于 row_stream 的批量数据写入和基于 cursor 的精细控制两种方法,并提供了创建新文档、添加工作表、设置样式等关键操作示例。通过分层抽象的工作簿-工作表-单元格模型,开发者可以灵活应对企业应用中常见的报表导出需求,特别是在 SAP BTP 和 S/4HANA Cloud 环境下实现高效可靠的 Excel 文件生成与处理。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 163

银行数据仓库数据模型设计规范

银行数据仓库数据模型设计规范 【下载地址】银行数据仓库数据模型设计规范 本开源项目深入解析银行数据仓库的数据模型设计规范,提供从概念模型到物理模型的完整设计指南。概念模型阶段聚焦主题划分,帮助清晰组织数据;逻辑模型阶段细化主题,归纳总结关键数据点;物理模型阶段则实现逻辑结构,涵盖表命名、字段类型等细节。通过这份规范,您将...

gitblog_06775的博客 491

【算法】克里金kriging参数值预测模型

模型中特征值2个,目标值1个,data数据集如图所示。搭建kriging参数值预测模型。

weixin_48618536的博客 5059

常用数据库设计规范总结

数据库设计规范: 一 命名规范: 1、所有数据库对象名称必须使用小写字母并用下划线分割 2、所有数据库对象名称禁止使用MySQL保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 3、数据库对象的命名要做到见名识意,并且最好不超过32个字符 4、临时表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀 5、所有存储相同数据的列名和列类型必须一致 二:数据库基本设计规范 1、所有表必须使用Innodb存储引擎(MySQL5.5之前默认使用MyIsam,5.6以

shassd的博客 3065

华为OD机考双机位C卷 - 两个字符串间的最短路径(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 两个字符串间的最短路径(OD上机考试双机位C卷)。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 835

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

DB 设计规范汇总

数据库命名规范 1、数据库名称全部使用小写; 2、名称只允许使用a-z、0-9及下划线的组合,不允许出现其他字符; 3、使用有意义的名称,能做到观其名知其意,比如:order_db; 4、年份固定格式为YYYY四位;月份固定为MM两位; 5、如果按百库十表方案分库,则名称为标准库名+下划线+编号后缀,其中编号长度固定为2位,取值范围从00到99,如order_db_00……order_db_99; 6、如果按照月份分库,则库名为标准库名+下划线+年月编号,其中年月格式为YYYYMM,固定6位长度,如ord

闲狗的博客 1819

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

数据仓库设计规范(更新中)

文章目录设计规范逻辑架构技术架构分层设计主题划分分级管理命名规范层级任务表字段模型规范建模方法建模工具血缘关系维度退化元数据管理开发规范脚本注释字段别名脚本格式流程规范 设计规范 逻辑架构 数据采集 数据存储 数据计算 数据展现 技术架构 数据采集→Kafka→hdfs→Flink→HBase 分层设计 ods→dw→dws→sh→ 主题划分 面向主题域管理 为了提高指标管理的效率,你需要按照业务线,主题域,和业务过程三级目录方式来进行指标管理 划分原子指标和派生指标 原子指标+原子指标=派生指

数据飓风 1834

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MongoDB数据库的设计规范

MongoDB是非关系型数据库的典型代表,DB-Engines Ranking 数据显示,近年来,MongoDB在NoSQL领域一直独占鳌头。MongoDB是为快速开发互联网应用 而设计的数据库系统,其数据模型和持久化策略就是为了构建高读/写的性能,并且可以方面的弹性拓展。

hongjian006的博客 967

数据库设计规范,我的数据库我做主

从数据库理论的抽象角度看,数据库设计是指对于一个给定的应用环境,构造出某种数据库管理系统支持的优化的数据库模式,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求(包括信息管理要求和数据处理要求)在数据库表设计中,虽然没有固定的规定,但可以根据广泛接受的数据库设计原则和最佳实践来总结出一些关键规定。这些规定涵盖了从命名约定到性能优化的各个方面,遵循这些规定可以帮助您创建一个结构良好、高效和易于维护的数据库。

我哎GIS博客 2558

【MySQL】数据库设计规范

范式和反范式

Yes_water的博客 448

1.数据仓库模型设计规范

从数据的时间跨度来说,通常是DWD层的一部分,主要的目的是为了满足用户分析的需求,而从分析的角度来说,用户通常只需要分析近几年(如近三年的数据)的即可。同时也可以用于少量的、且对刷新时间不是非常敏感的指标统计需要,比如交易的关闭和发货,在当前事务型事实表不支持,且只有少量的统计指标,可以基于累计快照事实表计算。事务事实表记录的事务层面的事实,保存的是最原子的数据,也称“原子事实表”。属于数据的公共层建设。周期快照事实表的粒度是每个时间段一条记录,通常比事务事实表的粒度要粗,是在事务事实表之上建立的聚集表。

HelloWowofei的博客 541
上一篇: 七、快速入门Git之配置公钥免密登录
下一篇: 1.电商项目之MySQL数据库设计
LemonSnm
博客等级 码龄8年 66粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值