数据分析师

手机号

验证码

30天自动登录

数据分析师

在日常工作中数据关系的众多面孔

来源:CPDA数据分析师网 / 时间:2021-02-19

首先定义数据库
这只是一种组织信息的方式,因此您可以根据需要轻松地访问,管理和更新信息,如您所知,这些数据被组织成行,列和表,并且还被索引,以便您可以快速,轻松地找到所需的内容,到目前为止,如此明显,当我们谈论数据库中不同数据项之间的“关系”时,这指定了用于合并一个或多个表中数据的逻辑,您可以通过在两个或多个表之间连接字段来创建关系,并确定哪些数据反映在仪表板小部件(例如数据透视表)中,可以有3种类型的关系:

一对一关系–在这种情况下,用于连接两个表的字段在每一行中只有的值。
一对多关系–在这种情况下,一个表为每一行保存的值,但另一个表为个表中的任何或所有对应值保存重复的值。
多对多关系–在这种情况下,表的两边都有重复的值,从而导致针对该表进行的每个查询的计算量过多。

SQL,Python和R
了解M2M关系及其后果定义:您可以考虑以下一般规则:当两个或多个表中的字段包含相同的值,并且这些值在两个表中均重复时,将基于该字段建立连接,从而创建多对多关系,我们知道,这很令人困惑,因此这是一个业务案例示例:旅馆可以有一个包含预订数据的数据表和一个包含付款数据的表,在两个表中,都存储了来宾的名称,一个客人可以在他们的名字下进行多次预订,也可以在他们的名字下记录多次住宿。如果根据客人的姓名创建了预订表和付款表之间的关系,则会创建多对多关系(因为客人的名字在每个表中出现多次),负面后果:这种关系的问题在于,它可能创建复杂的数据集,这些数据集要么:不返回正确的结果,要么使用过多的计算资源,并且不返回任何结果。这两种情况都会导致数据混乱,例如创建重复项,错误的结果和性能滞后,这就是为什么许多人试图完全避免多对多关系的原因。

解决方案:有多种方法可以解决或绕过应根据业务模型和当前业务问题的逻辑选择的多对多关系。但是,步是测试以查看您是否正在处理多对多关系(请参阅下一节),然后根据架构逻辑应用解决方案。

确定您所处的关系类型
通过检查关系的数据模型并确定关系两边的值和重复值的确切数量,可以轻松测试关系是否为多对多,如果值和重复值都得到相同的值,那么就不会重复,并且这种关系是一对多或一对一的。继续我们的业务案例,这意味着所有来宾ID仅出现一次,从而使所有值,您可以在此阶段停止调查,因为即使关系的另一端具有重复ID值,您仍将处理“一对多”关系-值是“预订”端,而重复的值在“付款”端,如果重复值的数量大于值的数量,则关系的这一侧具有重复的值,您将需要研究关系的另一侧,如果关系的另一端产生值,则这是一对多关系,如果不是这样,并且有两个以上的表与此关系相关联,那么我们手中就有多对多关系。

解决M2M关系的方法
有许多方法可以解决M2M关系,但是这里有一些基于存在的M2M关系以及涉及的表数的常用方法。如果有两个表,一个关系,则的选择是,将此关系分为两个单独的一对多关系,创建一个汇总表,如果有两个以上的表,并且有多个关系,那么的选择是,使用查找功能可以从一个表中复制一个值,然后根据逻辑测试将其导入另一个表中,将两个表合并为一个,理解多对多关系的重要方面是要避免使用它们,以确保您拥有准确的数据,没有重复的值并且您的性能不会落后-M2M关系的负面后果将会破坏用户体验并阻止查询。在开始使用Sisense BI软件时,这里有5条建立关系的简单规则,可作为简短而精巧的指南,确保您与数据保持良好的关系。

多对多关系和SQL数据库
这是个好消息:由于SQL和其他关系数据库的参照完整性,它们为多对多关系提供了大量支持,这样可以使关系与基础实体正常工作,SQL非常擅长将其与查询结合,与大多数编程语言相比,这使SQL在处理多对多关系方面要好得多,因为大多数语言不支持使引用与引用对象保持一致或不支持简单遍历,考虑到这一点,现在让我们看一个简单的示例,该示例显示了如何可视化SQL数据库中的多对多关系,描绘一个数据库,该数据库被大学应用程序用来跟踪学生数据。这里包含的两个表是“学生”和“纸”,是指每个学生都可以参加的所有不同课程,每个学生将同时接受许多不同的论文。这本身就是一对多的关系。但是,每篇论文也同时由许多不同的学生进行研究。这使得这种多对多关系。

那么如何在结构化SQL数据库方面解决这一问题?

好吧这种关系将分解为中间表,在上面的示例中,这可能意味着存在第三个表,其中包含列“ Student_ID”,“ Paper_ID”,“ Semester”和“ Year”。然后,在特定年份的特定学期中接受特定论文的每个学生将在表中的新行中表示,许多学生可以与许多学科相关,或者让我们举另一个例子,您将需要在关系的两边创建多个实例,在电子商务网站上跟踪订单,每个客户都与一个订单相关,但是每个订单可以包含多个项目,另外每个项目可能以多个顺序出现,这使它成为多对多关系,在这种情况下,您将需要创建一个额外的表。假设您将此称为“已订购商品”。这称为联结表,其目的是通过为您提供这些值中的每个值都可以连接的位置来促进多对多关系。



返回列表