数据库设计方法

【从零开始学习计算机科学】数据库系统(三)关系数据库设计 数据库设计就是根据业务系统的具体需求,结合我们所选用的数据库,建立好表结构及表与表之间的管理关系,为这个业务系统构造出最优秀的数据存储模型的过程。使之能有效的对应用的数据进行存储,并高效的对已经存储的数据进行访问。数据库设计是数据库系统中的重要组成部分。一个良好的数据库可以给系统带来清晰的数据统计与数据的详细分析,给系统带来方便直观的数据。不良的数据库设计,必然会造成很多问题,轻则增减字段,重则系统无法运行。为什么要强调先设计再创建数据库和表? 阅读详情

在做后端开发之前是没有完整的接触过数据库的(非科班的遗憾),之后做移动开发一般都是把数据库做缓存使用(移动端的数据库使用是比较简单的),随着对后端学习的深入,逐渐发现后端的数据库设计是很重要的一个话题,数据库是整个应用的基石,需要考虑的场景涵盖的内容都会很复杂。所以近期又系统的学习了数据库相关的知识,遂有本文的总结。
历史

在数据库诞生之前使用最多的是文件系统,常用的格式是 CSV - CommaSeperatedValues 格式,典型的CSV文件:
Year,Make,Model
1997,Ford,E350
2000,Mercury,Cougar

这种数据格式以,号作为分隔符,可以用EXCEL之类的表格处理软件打开。使用文件系统存在的典型问题是:如果需要从表中查找到 Year 为 2000 这一行的数据,就需要把文件全部读入内存,然后在内存中做搜索(或者是开一个文件流,每次读一行检查一次)。
这种方式不利于大量内容的管理,所以有了数据库技术(偷懒了直接上wiki链接):

1960s, navigational DBMS

1970s, relational DBMS
Integrated approach
Late 1970s, SQL DBMS
1980s, on the desktop
1990s, object-oriented
2000s, NoSQL and NewSQL

现在看来,最终遗世独立的只有两种:基于SQL的RelationalDBMS和NoSQL。前者有Oracle、SQLServer、DB2等大厂作品,也有MySQL、PgSQL等开源实现。后者细分为几类,面向KV存储的如Redis,面向列存储的如HBase,面向文档的MongoDb,这类数据库这几年在互联网领域也应用广泛。
关系型数据库-印象

以MySQL为例
关系型数据库的特点是表和表之间的关系。表存储的是一行一行的结构化数据,比如:
mysql> select * from user;
±--------±----------±---------±-----------±--------+
| user_id | user_name | password | last_visit | last_ip |
±--------±----------±---------±-----------±--------+
| 1 | admin | 123456 | NULL | NULL |
±--------±----------±---------±-----------±--------+

表与表之间是有关联的,这会通过外键来实现。上面的user表仅仅是一个孤零零的,没有任何关联的表。假如我们还需要记录用户的地址,那么可以再创建一个地址表,然后把地址表关联到用户表,这个例子可以体现表之间的关联关系。
// 创建一个新的表 addr - 记录地址信息
mysql> select * from addr;
±—±---------±-------±-------±-------+
| id | province | city | area | street |
±—±---------±-------±-------±-------+
| 1 | 江苏 | 苏州 | 吴中 | 1003 |
±—±---------±-------±-------±-------+

// 修改 user 表,添加一列 addr,这一列记录的是 addr 表的 id
mysql> select * from user;
±--------±----------±---------±-----------±--------±-----+
| user_id | user_name | password | last_visit | last_ip | addr |
±--------±----------±---------±-----------±--------±-----+
| 1 | admin | 123456 | NULL | NULL | 1 |
±--------±----------±---------±-----------±--------±-----+

在这个例子中,通过修改 user 表添加了一列 addr,并用这列记录 addr 表的 id,如此,如果需要查询 “admin” 的地址的话,可以先通过user表的addr 列拿到地址的索引,然后再在 addr 表中找到 id=1 的那一行获取地址。
这就是典型的关系型数据库,表是结构化的,表与表之间是有关联的。看到这里没有学过关系型数据库相关知识的同学可能会疑惑为什么不直接把地址的数据库存在user表中而是存在addr表再索引过来,这不是很麻烦吗?问题确实是“很麻烦”,但是这样做的一个直接好处是数据隔离的更清楚了,并且可以减少数据冗余。在关系型数据库的发展中,逐渐发展出一系列的最佳实践,这些“最佳实践”演化成关系型数据库设计的基本规则 - 范式(NormalForms)。
范式

关系型数据库中共有“六”种范式,每满足一级对数据库的设计要求都会拔高。范式的定义是非常晦涩的,常用的是前4种范式(第四种是也叫3.5NF),如下:

1NF - First Normal Form 符合1NF的关系中的每个属性都是原子的不可再分。

2NF - Second Normal Form 满足1NF,数据库表中的每列都完全依赖于主键。

3NF - Third Normal Form 满足2NF,要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

BCNF - Boyce–Codd Normal Form 满足3NF,主属性内部不能部分或传递依赖

对范式的理解,仅仅看上面的简短说明还是无法有切身体会的,网络上有很多人已经对此做过图文并茂的说明,可以参考:

知乎问题:解释一下关系数据库的第一第二第三范式?
数据库范式那些事

注:范式真的好难理解

关系

在关系型数据库中,弄清各个模块(或者叫实体或者叫表)之间的关系非常重要。关系型数据库中有三种基本关系:

1 - 1,比如一个国家对应一个首都
1 - N,比如一个分类下可以有多个商品,一个班级有多个学生,这种关系往往存在从属关系
N - N,比如学生和课程,一个学生可以选多门课,不同的学生也可以选择同一门课

对于这三种关系的理解往往并不像上面描述的那样简单(为了便于理解,举了比较简单的例子),在真实的系统模块之间的关系往往含混不清的。1-1和1-N关系是比较明确的(1-N关系通常在现实意义中存在从属关系)。比较复杂是N-N的关系界定和实现,还是用上面的学生和课程的例子说明,我们会发现几个问题:

学生和课程之间没有必然联系 在没有开始选课之前学生和课程是可以独立演进,互不相干的
无法直接建立两个表之间的N-N关系 N-N的关系,只能通过第三张表来实现把N-N转换成两个1-N

这里的第三张表即为 “学生-课程” 关系表。“学生” 和 “学生-课程” 的关系为1-N,“课程” 和 “学生-课程” 的关系为1-N。此时如果从1-N的角度来理解 “学生”表和 “学生-课程” 关系表的关系,是很令人费解的 - 无法从直觉上鉴定出 “学生” 表和 “学生-课程” 关系表的1-N关系。如果把 “学生-课程” 更名为 “课程选择表”,表中的每一列认为是 “课程选择” 结果,从直观上更有利于理解。这样的话,可以认为一个学生对应了多个课程选择操作,特定的课程选择操作只能属于一个学生,所以这是一个1-N的关系。同样,对于 “课程” 表来说,一个课程可以被选择多次,一次选择只能选择一个课程,所以这也是一个1-N的关系。
把 “学生-课程” 表更名成 “课程选择表” 方便理解了相关之间的1-N的关系,但是在开发环境中却会导致新的误解,对于开发人员来说,我们通常认为“表名1-表名2”结构命名的表是关系表。而“课程选择表”的重命名会让开发人员不能理解明白表的作用和含义。
下面再看一个用户-产品-订单的案例,这种关系变得更为复杂。从直观上理解:

用户-产品是N-N的关系,一个用户可以购买多个产品,一个产品也可以卖给多个用户
用户-订单是1-N的关系,一个用户可以下多个订单,但一个订单仅能属于一个用户
产品-订单是N-N的关系,一个产品可以被计入多个订单,一个订单也可以包含多个产品

按照这种思路,可以设计出下面的数据库结构:

Customer/Order/Product

但是略一思考,就会发现图中的问题 - 订单表实际上就是一张 “用户-产品” 的关系表而已,它记录的数据分别是 customer_id 和 product_id ,这分别是 Customer 表和 Product 表的索引。那么产品和订单的关系只能是1-N的关系,而不是图中所画的N-N,所以问题出在什么地方呢?
产品-订单真的是N-N的关系吗?仔细斟酌 “一个产品可以被计入多个订单,一个订单也可以包含多个产品” 这句话,会发现有一个概念被泛化了,这就是 “一个订单也可以包含多个产品”,在上图的设计中一个订单仅仅包含了一个产品(和数量),而不是多个。而被误解的“订单”实际上指的是整个订单表 - 即Order这张表。这个误解告诉我们在理解1-N和N-N关系的时候要注意,这里所指的单位都是表中的特定一列。
当我们发现一个订单仅包含一个产品之后会对整个表的结构有更清晰的认识。因为在购物网站中,一个订单往往会包含多个产品,为了达到这种效果,需要设计一个新的表来记录一次订单包含的所有产品 - BoughtItem 。

Customer/Order/Product/BoughtItem

在这种结构中,Order 得到简化,并添加了 BoughtItem 表(它实际上的作用是Order和Product的关联表)来记录一次购买的多个产品(注意:和产品是N-1关系)。订单(Order)和BoughtItem也是1-N关系,一个订单包含多个BoughtItem。

注:表名非常容易引起各种困惑,所以起好名字很关键(这里的BoughtItem起的并不好,或者该叫OderProduct)。

DB设计

DB的设计往往需要对需求有一个清晰的理解,否则后面会很难办(我刚入职某宝的时候,一个PM(ProjectManager)跟我说,我们走敏捷路线,先做技术后确定需求,于是我蒙了,那时候连要做什么都不知道,唯一知道的是我们要干一件大事 - 而PM要我们把代码先写好)。这会有以下几个阶段:

需求分析
ER设计
物理设计

需求分析阶段的最佳实践是头脑风暴,相关的同学在一起,把需求理解透彻。ER(EntiyRelation)设计阶段要确定各个模块和模块之前的关系,用来表达的语言就是ER图,就像上一节中画的图,可以让人清晰的了解到表的设计和关系。物理设计阶段,需要做具体的技术选型,选择合适的RDMS(比如Oracle、MySQL等等),设计表的字段类型,给表取一个 更好的名字。

这部分内容取自:慕课网上的一个教学视频 - 数据库的那些事。总共一个多小时,讲的挺不错的,循序渐进对于补充数据库的基础知识很有帮助。讲师虽然英语差了些,但是技术还是到位的,一些经验性的东西坦诚告之,分享的精神值得肯定。

下面记录一些物理设计阶段的最佳实践:
数据类型选择

数据类型选择 int > datetime > char > varchar
char 是定长字符, varchar 是变长字符,一般小于50个字节的时候推荐用 char (除了个别很少用到的字段,也可用varchar来节省空间)
int 分tinyint(1byte)\smallint(2byte)\mediumint(3byte)\int(4byte)
decimal类型可以存储精确的小数位,float比较粗略但是开销相对较少
使用int来存储时间只能存到2038-1-19 11:14:07年即2^32=2147483648,在使用的时候需要转换,如果需要经常使用还是用Datetime来存储

表设计

一般表除了“语义上”的主键之外最好有一个自增主键
避免使用外键约束,触发器
不要用预留字段
反范式设计提高效率

维护与优化

维护数据字典 使用 COMMENT 命令记录数据字典 (数据字典类似备注,java doc的机制)
维护索引 思路,可以从where,group by, order by 中的列做索引,索引中的列不要太长(每次插入数据会更新索引,那么过多的索引会导致写变慢)。索引中不要强制使用索引关键字

维护表结构更改

数据库尽量使用批量操作

禁止使用 Select *
控制自定义函数
尽量少使用数据库全文索引功能 (可以使用一些开源搜索引擎代替)

表的水平和垂直拆分

控制表的宽度 - 垂直拆分,把多列拆分成多张表每张表的列少一些(把经常会一起查询的列分在一张表中,大字段放在一张表中)
控制标的大小 - 水平拆分,CASE1:按照主键Hash的方式,把数据分流到子表

完

看了很多数据库设计的知识,依然设计不出一个典型电子商务网站的数据库,我突然明白一件事情,我对电商根本就不了解,所以无法得到抽象的模型也无法设计出具体的表。所以想了一个办法,强记下典型系统的表结构设计,来强化自身的设计能力。
操千曲而后晓声,观千剑而后识器, 所以有了下面的习题:

用户登录系统设计
权限系统设计
任务管理系统设计
流程引擎设计
电子商户系统设计
微博数据库设计

刷完这六关再谈数据库设计。

作者:ntop
链接:https://www.jianshu.com/p/f59d372ee201
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

关于ER图和UML图之间的对比 ER图与UML图 ER图:实体-联系图(Entity-Relation Diagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,ER图提供了表示实体(即数据对象)、属性和联系的方法,用来描述现实世界的概念模型   构成E-R图的基本要素是实体、属性和联系,其表示方法为:    实体型:用矩形表示,矩形框内写明实体名;    属性:用椭圆形或圆角矩形表示,并用无向... 阅读详情

相关推荐

分层设计数据仓库的架构和设计高效数据库系统的方法

高性能数据仓库的核心在于。

weixin_30777913的博客 1676

数据库设计

目前已有的数据库设计方法可分为四类,即直观设计法、规范设计法、计算机辅助设计 法和自动化设计法。 把数据库设计分为需求分析、概念结构设计、逻辑结构设计和物理结构设计 4 个阶段。 设计步骤分为 5 个阶段 (1)设计企业模式。利用上述得到的 3NF 关系模型画出企业模式。 (2)设计数据库逻辑模式。根据上一步得到的企业模式选定数据模型,从而得出适用于某个DBMS 的逻辑模式。 (3)设...

程序员杂谈 1699

22、设计安全数据仓库的方法与实践

本文探讨了设计安全数据仓库的方法与实践,涵盖了发现安全设计元素模式、安全软件开发方法、OLAP安全的概念建模方法以及使用OLS10g实现安全数据仓库的具体步骤。文章还分析了不同场景下的安全规则执行情况,并总结了安全数据仓库设计的优势、挑战以及未来发展趋势,为构建安全、高效的数据仓库提供了全面的指导。

cake8的博客 43

数据库的设计(E-R图,数据库模型图,三大范式)

一.数据库设计的概念 数据库设计是将数据库中的数据实体及这些数据实体之间的关系,进行规划和结构化的过程. 二.数据库设计的重要性 如果一个数据库没有进行一个良好的设计,那么这个数据库完成之后他的缺点是: 1.效率会很低 2更新和检索数据时会出现很多问题, 反之,一个数据库被尽心策划了一番,具有良好的设计,那他的优点是: 1.效率会很高. 2.便于进一步扩展. 3.使得应用程序的开发变...

Mr.pan felix的专栏 1万+

11、数据仓库设计与优化:质量驱动的方法论

本文深入探讨了以质量驱动为核心的数据仓库设计与优化方法,系统介绍了数据仓库的基本概念、设计方法论、源集成策略、多维数据模型与OLAP技术的应用,以及查询处理和性能优化的手段。同时,文章还涵盖了元数据管理、数据质量保证、数据仓库刷新机制等关键环节,并提出了基于质量因素的设计任务和持续改进的方法论,旨在为企业构建高效、稳定、可靠的数据决策支持系统提供全面指导。

honey的博客 76

数据仓库设计:维度建模与架构方法比较

本篇博文深入探讨了数据仓库设计中的两种架构方法及其优缺点:自顶向下方法和混合方法。详细分析了维度建模的概念、步骤和优势,以及它与实体关系建模的区别。特别强调了维度建模在业务分析中的灵活性和数据检索速度的优化。

weixin_36173034的博客 427

数据仓库设计方法

在以前的文章中,我们必须学习数据仓库对象 , 各种数据仓库模式和数据仓库基础知识 。 现在,我们该了解如何构建或设计数据仓库。 可以按照以下任一方法完成数据仓库的设计或构建。 这些方法尤其被称为: 自上而下的方法 自下而上的方法 这些方法由数据仓库的两个承担者Ralph Kimball和Bill Inmon定义 。 自上而下的方法 Bill Inmon提出了这种方法,他...

danpu0978的博客 1035

王爽《汇编语言》课程设计2(不涉及软盘版本)

assume cs:code,ds:data,ss:stack stack segment db 128 dup (0) stack ends data segment db 256 dup (0) data ends code segment start: mov ax,stack mov ss,ax mov sp,128 ...

weixin_41944412的博客 1178

数据仓库模型设计方法_数据仓库设计方法

数据仓库模型设计方法 在我们以前的文章中,我们必须学习数据仓库对象 , 各种数据仓库模式和数据仓库基础知识 。 现在,我们该了解如何构建或设计数据仓库。 可以按照以下任何一种方法来设计或构建数据仓库。 这些方法尤其被称为: 自上而下的方法 自下而上的方法 这些方法由数据仓库的两个承担者Ralph Kimball和Bill Inmon定义 。 自上而下的方法 Bill I...

danpu0978的博客 570

CUDA编译踩坑实录:如何正确设置-gencode参数适配你的GPU算力

本文深入解析CUDA编译中-gencode参数的核心原理与实战配置,帮助开发者解决常见的'Unsupported gpu architecture'错误。通过厘清虚拟架构与真实架构的区别,并提供多版本兼容的CMake配置方案,确保编译出的代码能精准适配不同GPU算力,兼顾性能与广泛兼容性。

weixin_28829903的博客 338

Python广度优先搜索BFS - 蓝桥13届省赛污染海域

请问这片N * M海域中有几块是没被污染的独立海域(没被污染的独立海域是指该块海域上下左右被已污染的海域包围,且N * M以外的海域都为已被污染的海域)有一片海域划分为N * M个方格,其中有些海域已被污染(用0表示),有些海域没被污染(用1表示)。第二行开始输入N行,每行M个数字(数字只能为1或者0,1表示没被污染的海域,0表示已被污染的海域)这块4 * 5的海域,有3块海域(绿色)没被污染,因为每一块的上下左右都被污染的海域包围。输出一个整数,表示N * M的海域中有几块是没被污染的独立海域。

m0_69865359的博客 265

介绍Inmon数据仓库设计方法。带具体项目

关键点说明Inmon 是自上而下设计先建统一的数据仓库,再做集市统一标准很重要但不能代替数据清洗实际数据很复杂来源多样、格式各异、存在错误清洗是必要步骤即使有了标准,仍需对数据做一致性处理类比学校成绩单制定统一评分标准 ≠ 成绩可以直接用,还需要核对、纠错、归档·确保一致性:如果某个老师写的是90分,教务会把他改成优秀。·特点:·前期工作量比较大·所有数据口径必须统一·数据整齐划一,方便分析Kimball。

2401_85549783的博客 545

保姆级教程:用Multisim仿真快速上手二极管、MOSFET和IGBT的开关特性

本文提供了一份详细的Multisim仿真教程,帮助读者快速掌握二极管、MOSFET和IGBT的开关特性。通过搭建实验电路、观察波形特征和参数影响分析,深入解析了反向恢复过程、米勒平台现象和拖尾电流效应。适合电力电子初学者和工程师通过仿真建立直观理解,提升电路设计能力。

weixin_29290863的博客 498

数据仓库模型设计及实施方法

1 数仓的分层 (1)如何分层? ODS层:原始数据层,存放原始数据,直接加载原始日志,数据,数据保持原貌不做处理 DWD层:数据明细层:结构和粒度保持原始表一致。主要作用是对ODS层数据进行清洗(去除空值NULL,脏数据,超过极限范围的数据如9999),当然也包括对原始解析处理,如串值的展开,json的解析等 DWS层:数据汇总层或数据服务层:依赖于DWD层数据,按天粒度进行汇总 DWT层:数据主题层:以DWS层为基础,按主题进行汇总。 ADS层:为各种展示及统计报表提供数据。 (2)为什么

石榴姐yyds 2010

4、基于球面波展开的近场/远场变换技术解析

本文深入解析了基于球面波展开的近场/远场变换技术,涵盖坐标系统选择、截断测量处理、高级SWE方法及实际应用场景。重点介绍了广义SWE、全探头补偿、平移SNF测量(TSWE)等关键技术,结合吸收材料与导电地板系统的误差处理方案,系统总结了各类方法的优缺点与适用场景,并通过流程图和案例分析展示了技术应用路径。该技术在汽车、通信和航空航天领域的天线测量中具有重要价值,可显著提升测量效率与精度。

dell8的博客 255

[VCS]门级仿真及SDF反标

摘要:门级仿真在STA工具普及后仍是验证的重要环节,主要用于检查SDC完备性、异步电路时序、网表完整性及为功耗分析提供波形。门级仿真分为不带时序反标的前仿和带SDF反标的后仿,后仿需加载SDF文件提供精确延时信息。VCS提供多种仿真选项控制时序检查行为,SDF反标可通过命令或系统函数实现。后仿需特别注意关闭notimingcheck选项以确保时序检查有效性,并建议检查SDF反标报告和波形验证延时一致性。

元直的博客 9792

Inmon与Kimball两种数据仓库设计方法-以及三种范式的要求。

优点数据一致性高,适合长期规划,适用于大型企业。缺点:建设周期长,变更成本高,灵活性较低。传递依赖会导致数据冗余和更新异常(如插入异常、删除异常和修改异常)。为了确保数据的一致性和完整性,我们需要将关系模式分解为更小的部分,以消除这些传递依赖。传递依赖是指非主键字段之间的间接依赖关系。它会导致数据冗余和更新异常。通过将关系模式分解为更小的部分,可以消除传递依赖,从而达到第三范式的要求。这种规范化过程有助于提高数据库的性能和可维护性。在有复合主键。

2401_85549783的博客 2151

《UDS协议从入门到精通》系列——到底什么是DTC?

到底什么是DTC?看这里,深度图解DTC格式,详述DTC状态位、快照信息和扩展信息!!

车载系统攻城狮 1万+

数据仓库(四):设计数据仓库--Inmon方法

(注意:本文参考的是Inmon的著作,因此主要介绍数据仓库设计的Inmon方法,即关系模型;关于维度模型,即Kimball方法可以参考本系列(二)(五)(六)等) 建数据仓库主要包括两部分工作:与操作型系统接口的设计和数据仓库本身的设计。此处用“设计”一词并不准确,在数据仓库之三中我们提到数据仓库是在启发方式下建造的,即螺旋式的开发过程:首先载入一部分数据供DSS分析员使用,然后根据反馈修改数据

__kingzone__的专栏 1万+

结构函数详解

C3M系列覆盖从1 kW到60 kW功率范围,器件Rdson低、开关速度快(Eon/Eoff低),支持高温工作(结温高达175–225°C)。型号电压 (V)Rdson (mΩ, 典型@25°C)电流 (A, 连续@25°C)封装类型典型应用功率 (kW)65012022TO-247-41–106506035TO-247-35–2065060355–2012002180TO-247-310–40120016100TO-247-420–601200。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 158

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

数据仓库数据库设计方法---关系模型和多维模型比较分析

  数据仓库中广泛采用的数据库设计模型有两种:关系型和多维型。普遍认为在数据仓库的设计方法中关系模型是“Inmon”方法而多维模型是“Kimball”方法。 先来看下关系模型,关系型数据以一种称为“标准化”的形式存在。数据标准化是指数据库设计会使数据分解成非常低的粒度级,标准化数据以一种孤立模式 存在,这种情况下对数据表里的数据关系要求很严格。一般遵循3NF范式。采用关系型设计的数据库一般...

weixin_30788619的博客 112

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

方法多维数据仓库(八):数据仓库中数据库设计的基本模型

文章结束给大家来个程序员笑话:[M] 普遍采用的数据库计划模型有两种:关系型和多维型。在数据仓库的计划方法中关系模型是“Inmon”方法,多维模型是“Kimball”方法。在建立数据仓库过程中,对于数据库计划而言,建立关系型数据库是最好的长期的方法;多维模型利于短期数据仓库,但这类方法适用的数据仓库的范围无限。 1 关系模型 数据库计划的关系型方法始于2...

weixin_30892987的博客 98

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

维度建模:数据仓库中的核心设计方法

维度建模是由 Ralph Kimball 等数据仓库专家提出的一种面向分析的数据库设计方法。它以“业务过程”为中心,通过直观、易于理解的方式组织数据,使非技术人员也能轻松进行数据查询和分析。与传统的规范化建模(如第三范式3NF)不同,维度建模强调可读性、查询性能和业务语义的清晰表达,更适合用于支持报表、仪表盘和即席查询等分析型应用。维度建模是构建现代数据仓库和商业智能系统的基石。它以业务为导向,通过简洁直观的结构帮助组织实现高效的数据分析。

weixin_40266856的博客 1万+

【贪玩巴斯】数据仓库与数据挖掘(四)——「数据仓库的设计」——系统设计的差异、设计的原则、设计的步骤、设计的方法论与例子2021-10-26

Data Warehouse Design 数据仓库与挖掘1. 引言2.系统设计的差异3.数据仓库设计的原则1. 面向主题原则2.数据驱动原则3. 原型法(比较适合开发的设计原则)4. 数据仓库的设计步骤5. 数据仓库设计方法论 EDW & DM引言why Data Mart方法创造者具体构建方法与例子 1. 引言 2.系统设计的差异 3.数据仓库设计的原则 面向主题 数据驱动 原型法设计 1. 面向主题原则 数据仓库从主题出发的,而在数据库中是从实体出发 例子

D16100的博客 335

数仓dw怎么建_原创:数据仓库建设3-数仓设计方法

2.数据仓库架构2.1.数据设计方法数据仓库建立之前,就必须考虑其实现方法,通常有自顶向下、自底向上和两者结合进行的这样三种实现方案。2.1.1.自顶向下实现自顶向下的实现需要在项目开始时完成更多计划和设计工作,这就需要涉及参与数据仓库实现的每个工作组、部门或业务线中的人员。要使用的数据源、安全性、数据结构、数据质量、数据标准和整个数据模型的有关决策一般需要在真正的实现开始之前就完成。2.1.2....

weixin_39699313的博客 307
上一篇: 德州扑克C++实现
下一篇: 单片机基础
陆标
博客等级 码龄9年 100粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值