在数据库中数据之间的关联关系有哪几种,试举例说明

在数据库中数据之间的关联关系有哪几种,试举例说明,第1张

关系的完整性主要包括域完整性、实体完整性和参照完整性三种。

1.域完整性

域完整性是对数据表中字段属性的约束,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。

2.实体完整性

实体完整性是对关系中的记录唯一性,也就是主键的约束。准确地说,实体完整性是指关系中的主属性值不能为Null且不能有相同值。

3.参照完整性

参照完整性是对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就是对外键的约束。准确地说,参照完整性是指关系中的外键必须是另一个关系的主键有效值,或者是NULL。

SQL 的表关联关系主要有四种 inner join,left join,right join和full join,其区别和使用场景如下:

• inner join(内连接),在两张表进行连接查询时,只保留两张表中完全匹配的结果集。

• left join,在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。(一般left join 和right join 中都选择left join)

• right join,在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。

• full join,在两张表进行连接查询时,返回左表和右表中所有没有匹配的行。

full join 和union的功能一样,可以把两张表里没有匹配的行关联在一起。

在进行模型设计时,选择用哪种表关联方式会影响到你最终的物理表数据是否齐全,所以需要深刻理解每一种关联方式最终返回的值有哪些。

在模型设计时,要考虑业务场景,选择以哪张事实表作为主表。当门店流量表里某一天的数据为空时,意味着当天门店没有客流量,但是依然会产生房租水电等固定成本,所以选择门店流量表作为主表时,采取left join 的方式关联财务指标汇总表时,不会返回对应的房租水电等数据。 当有业务场景能够满足主表无数据产生,子表会有数据产生的情况表之间通过FULL JOIN 或者 UNION的方式 。

现在确定表之间用FULL JOIN 的方式进行关联了,返回表中对应门店流量表无数据产生给空值,源表为财务指标汇总表的数据展示其对应数据。我们的物理表门店成本月度分析表如图所示,日期和门店编码作为主键。可能会有人有疑问,为什么日期和门店字段有多个来源表和多个来源字段。还是用门店流量表和财务指标汇总表以门店和日期进行全关联,那么2张表中都有的门店日期字段,现在合并为一张表,只展示一个门店日期字段。我们可以想象取客流量的数据时需要门店流量表的门店日期字段才能匹配出对应数据,同理房租水电费也需要对应的财务指标汇总表里的日期门店才能匹配出对应的数据。这样是是不是很好理解为啥物理表的主键字段需要多个来源表和来源字段了。我们的物理表即门店月度分析表的 源表有几张就需要有几个门店日期字段作为来源字段。

属性的表间关系有三种类型:一对一、一对多和多对多。

字串7

如果指的是表的参照完整性,则是:主外键关系。

如果是某些数据库 *** 作上的相关性,则是:级联关系。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9917376.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存