数据立方建立-如何实现一对多,多对多

我对维度表,实体表,事实表这三种表之间的关系和概念认知比较模糊,当时老大要我去设计一个关于设备的维度和事实表及实体表出来时,结果我就真的去傻乎乎的对设备进行各种维度表和事实表的设计,然后在给老大看的时候各种被怼,最后才认知到设备怎么可能设计的出一个维度表呢,它本身就是一个客观存在的事实,我们是不可能去把一个客观存在的事实做成一个维度去分析的,维度建模中只存在通过各种维度去分析一个事实,而不能通过别的事实角度去分析另一个事实,如果存在这种结构,也应该是指标值(度量值)而不是一个维度。

维度表:维度表可以看成是用户用来分析一个事实的窗口,它里面的数据应该是对事实的各个方面描述,比如时间维度表,它里面的数据就是一些日,周,月,季,年,日期等数据,维度表只能是事实表的一个分析角度。

实体表:实体表就是一个实际对象的表,实体表它放的数据一定是一条条客观存在的事物数据,比如说设备 ,它就是客观存在的,所以可以将其设计一个实体表。

事实表:事实表其实质就是通过各种维度和一些指标值得组合来确定一个事实的,比如通过时间维度,地域组织维度,指标值可以去确定在某时某地的一些指标值怎么样的事实。事实表的每一条数据都是几条维度表的数据和指标值交汇而得到的。

上面这张图就是设备表的一个实体表设计,它作为一个客观存在的事实它是无法建立一个维度表的,其实设备表本身也可以看成是一个事实表,只需要对生厂商,设备类型,时间,地点这几个点进行维度表设计就行了,这样就将一个设备表变成一个事实表了。

可能由于我本身对维度建模的接触时间比较短,在加上表达能力也不怎么行,对这三种关系理解的也不是很透切,导致文中对这三种表的关系及含义的描述可能会有错误或歧义,希望大家帮我指出,维度建模中的一个小白敬上。

————————————————

版权声明:本文为CSDN博主「沉默的迷茫」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/pttaoge/article/details/80880494

原文地址:https://www.cnblogs.com/peter-lau/p/12550133.html

时间: 2024-09-21 03:28:46

数据立方建立-如何实现一对多,多对多的相关文章

SQLAlchemy增删改查 一对多 多对多

一.前言: Python的ORM框架SQLAlchemy有些人相信也听过这个框架的大名了,也听说了SQLAlchemy没有Django的Models好用 我这里辟谣一下:Models仅仅只是配置和使用比较简单,因为他是Django自带的ORM框架,也正是因为Django原生的,所以兼容性远远不如SQLAlchemy,真正算的上全面的ORM框架必然是我们SQLAlchemy ORM框架,它可以在 任何使用SQL查询时使用,当然了,无论是使用什么ORM框架,都是为了方便不熟练数据库的同志们使用的,我

框架 day32 Hibernate,一级缓存,关联关系映射(一对多,多对多)

一级缓存 概念 *在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java集合构成了Session缓存. 只要 Session 实例没有结束生命周期, 存放在它缓存中的对象也不会结束生命周期 *当session的save()方法持久化一个对象时,该对象被载入缓存, 以后即使程序中不再引用该对象,只要缓存不清空,该对象仍然处于生命周期中. 当试图get(). load()对象时,会判断缓存中是否存在该对象,有则返回,此时不查询数据库.没有再查询数据库 *Session 能够在

Hibernate 集合映射 一对多多对一 inverse属性 + cascade级联属性 多对多 一对一 关系映射

1 . 集合映射 需求:购物商城,用户有多个地址. // javabean设计 // javabean设计 public class User { private int userId; private String userName; // 一个用户,对应的多个地址 private Set<String> address; private List<String> addressList = new ArrayList<String>(); //private Str

hibernate 一对多|多对一

一对多:(一个客户对应多个联系人) 客户实体:Customer.java package cn.future.domain; import java.util.HashSet; import java.util.Set; public class Customer { /* * CREATE TABLE `cst_customer` ( `cust_id` BIGINT(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)', `cust_name` VAR

多表利用DIH批量导入数据并建立索引注意事项

如果希望同时对多个表进行全文检索,那我们该如何处理呢?利用DIH导入数据并建立索引时.schema.xml中配置了uniqueKey为id <uniqueKey>id</uniqueKey> 如果多表主键都为id的话索引会被覆盖 <!--deltaImportQuery和deltaQuery为增量导入时使用.--> <entity name="case" pk="id" query="SELECT id,title

尽可能保留原有数据,建立UEFI与BIOS双启PE优盘

尽可能保留原有数据,建立UEFI与BIOS双启PE优盘1.确保优盘或者移动硬盘有一个FAT32分区,如果没有FAT32分区,就用傲梅分区助手或者ppm转换一个现有的分区到FAT32分区0x0C,或者新建一个FAT32分区,然后把支持UEFI启动的WIN8PE.ISO解压到该分区.2.用bootice把优盘或移动硬盘MBR写入grub4dos0.4.5c,然后把grldr,grldr.mbr,menu.lst拷贝到根目录,目录结构如下:X:\ │ grldr │ grldr.mbr │ menu.

数据立方原理

数据立方的产生缘由 数据可视化 数据分析中一个很重要的内容就是数据可视化,目的就是让人们能够对整体数据有一个非常直观清晰的了解. 那么传统数据库是如何处理数据可视化的呢?我们知道数据通常是多个维度的,数据库中的表格存储多个维度的数据,每一列代表一个维度.处理这些数据可以使用数据合并(grouping/aggregation)语句,包括AVG(),COUNT(), SUM()等.使用这些基本语句可以执行一些基本的数据运算,例如计算一个月的平均气温. 除了这些最基本的语法之外,某些系统允许用户使用预

DjangoORM一对多&多对多操作

简要说明 通过操作对象的方式操作数据库 详细步骤 models.py的结构是: 如果models.py中外键定义没有写 related_name='student_teacher', 可以直接用 studentList = teacher.student_teacher.all() 可以改写成: teacher = Teacher.objects.get(id = 1) studentList = teacher.student_set.all() =======================

PD 15.1 安装 破解 , 简单使用 (一对多,多对多关系生成sql脚本)

  1:运行  PowerDesigner15_Evaluation.exe 默认   2: 安装完毕后,不要执行,下面我们进行 破解 把 PowerDesigner15汉化+注册补丁  下的所有文件,覆盖 PD的安装目录下的文件 然后我们打开 PD,点击 帮助 –> About  看到下面窗口中红色方框,就表示已经破解 + 汉化成功 PD 15.1 安装 破解 , 简单使用 (一对多,多对多关系生成sql脚本)