打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Power Pivot数据建模基础:数据表间的4种基本关系类型

小勤:在前面《表间关系一线牵,何须大量公式拼数据》的文章里提到,如果产品表的产品名称重复的话,是不能建立表间关系的,这具体是什么情况?

大海:在数据处理的时候,我们经常需要对2张相关的表格建立表间关系,比如订单表和订单明细表,订单明细表里的产品和产品表……那么2张表之间总是要能够找到明确的逻辑关系,才能建立表间关系,比如订单表里的订单编号和订单明细表里的订单编号是对应的。

小勤:那一般2个表之间都有哪些类型的关系呢?好像很复杂的样子啊。

大海:其实2个表之间的关系类型也很简单,莫非就4种。

小勤:4种?

大海:嗯。我们接下来通过数据的方式来看各种关系具体是什么样子的。

1.     首先,最最常见的关系,一对多,比如订单表和订单明细表,即订单表里的1条数据,对应订单明细表里的n条数据。

2.     其次,就是多对多关系,比如你的订单明细表里因为只有产品名称,而产品表里的产品名称不是唯一的,两个表间通过产品名称来看的话,订单明细表里一条数据,可能在产品表里找到多条数据,而在产品表里的一条数据,也可能在订单明细表里找到多条数据。如下图所示:

这种情况下,两个表之间的数据关系其实是不清晰的,因为比如我要找订单明细表里的“小米”的供应商,我就不知道应该是“宏仁”的,还是“德昌”的。

另外,多对多关系还有一种情况,数据表之间的关系其实是明确的,但要靠多个字段共同来确定,比如上面的订单明细表和产品表,如果订单明细表里增加一列“供应商”的内容,那么这两个表之间,就可以通过产品名称和供应商2列一起确定两表之间的明确关系,如下图所示:

可惜,无论是哪一种多对多关系,Power Pivot里是不支持的。

3.     第三种关系是一对一关系,就是2个表中都有一列,他们之间的关系完全是一一对应,都没有多的重复的内容。比如下面2个产品表:

4.     最后,也是最简单的,但可能是最麻烦的,就是两个表间的关系是没有关系。比如订单表和产品表之间,就完全找不到关系。

小勤:知道了。那像多对多关系的情况下,Power Pivot里要怎么处理呢?

大海:一般来说,应该在订单明细表里使用产品ID,这样的话,就能明确订单明细表里的“小米”到底应该是产品表里的第9条还是第12条数据。或者,在实际就是转化为前面说的一对多关系。如果是订单明细表里有供应商字段的话,那么可以将产品名称和供应商连起来,构造一个新的字段,最终还是转换为一对多的关系。

小勤:啊,这有点像在Excel里用vlookup的时候,如果要通过多项内容联合查找的话,也要先连接起来一样。

大海:对的。

小勤:对了,为什么会有一对一这种关系呢?感觉好无聊啊,为什么不都放在一个表里搞定?不是没事找事吗?

大海:一般日常看到的数据通常数据量不大,都可以放到一个表里,那样数据也好处理,但是,随着数据量越来越大,有很多时候一张表可能很复杂,可能有几百上千列,如果都放在一张表里的话,可能会极大地影响数据的计算效率,所以,就会考虑将这些表进行拆分,比如将一些日常很少用的内容(字段)放到一张表,而一些需要经常更改调用的内容放到另一张表。

小勤:啊,原来这样。另外,对于没有关系的情况,实际上,订单表和订单明细表有关系,而订单明细表和产品表之间有关系,那他们算不算有间接关系呢?

大海:你真会牵线。也可以这么理解吧,所以在Power Pivot里你只要对订单表和订单明细表、订单明细表和产品表分别建立表间关系,那么就可以在订单表里通过一定的方法得到产品表的相关信息,或在产品表里通过一定方法获得订单表里的信息,不过这方面的内容比较复杂一些,在后续的数据建模中咱们再一起看。

小勤:好的。


将“我想做”的愿望,

变成“我在做”的行动。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
EXCEL中如何实现两个表格之间的数据自动匹配、补全、合并成一个表格?
EXCEL表中如何进行多个表格数据关联?
如何使用Excel表功能区中的按钮创建数据透视表?
为多个表创建数据透视表
所有Excel技巧都是基于这10条心法!
多表数据透视,1%高手的终极大招
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服