首页 > 解决方案 > Oracle APEX:如何使用:m 关系连接两个表

问题描述

我有两个表:ServerHost。他们应该有 am:n 关系。我怎样才能连接它们?我是否必须使用这两个表的 PrimaryKeys设置第三个表Server_Host ?还是 APEX 会以某种方式自动执行此操作?

感谢您的帮助!

标签: oraclemany-to-manyrelationshiporacle-apex

解决方案


快速回答是“是”和“否”。

更长的答案:如果它真的是 M:M,那么它 在尊重正常形式的关系数据库中是必需的,并且这两个表必须具有来自其他两个表的 PK 作为 FK,尽管它们不必是 - 并且可以说/取决于在查询中的使用方式,不应该是 - 交集表的 PK 的一部分。

考虑使用 SQL Developer(免费)对三个表进行建模并创建 DDL。

而且,您确定只有一个交集表吗?良好的数据库设计要求您考虑关系属性。例如,Customer to Catalog Item 是 M:M - 但添加 Order 表并不能完全解析 M:M,因为 Order 和 Catalog Item 之间存在 M:M,因此它们之间需要另一个交集表 Line Item .

请考虑这一点,并指定服务器和主机之间关系的性质。例如。如果您没有指定要建模的关系的性质以及表和关系的属性,我不确定为什么在您的情况下服务器和主机是 M:M。服务器是否分配给主机?那么主机可以是 1:M 服务器的主机吗?M:M 怎么样?或者这是随着时间的推移或给定的时间点的关系?这也会影响模型。


推荐阅读