• 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张表中都有的门店日期字段,现在合并为一张表,只展示一个门店日期字段。我们可以想象取客流量的数据时需要门店流量表的门店日期字段才能匹配出对应数据,同理房租水电费也需要对应的财务指标汇总表里的日期门店才能匹配出对应的数据。这样是是不是很好理解为啥物理表的主键字段需要多个来源表和来源字段了。我们的物理表即门店月度分析表的 源表有几张就需要有几个门店日期字段作为来源字段。
设置关联的两表或者多表、通过外键关联、外键字段是从表中的字段、外键(foreignkey)字段需要在主表做主键(primary
key)、
比如
学生表(学号
主键,姓名)
主表
课程表(课号
主键,课名)
主表
选了表(学号
外键,
课号
外键,成绩)
从表
这样三个表就关联了、记住建表顺序、先主表、再从表
然后可以使用代码或者图形界面管理器创建外键、创建完就关联了
外键的取值必须是主键的值
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)