oracle - Oracle APEX:如何使用:m 关系连接两个表
问题描述
我有两个表:Server和Host。他们应该有 am:n 关系。我怎样才能连接它们?我是否必须使用这两个表的 PrimaryKeys设置第三个表Server_Host ?还是 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 怎么样?或者这是随着时间的推移或给定的时间点的关系?这也会影响模型。
推荐阅读
- angular - 笑话:无法设置未定义的属性“”(Angular)
- c# - 如何在我的代码中解决此问题。“参数 1:不能将字符串转换为布尔值”
- python - 使用 Pipenv 和 setup.py 将包发布并安装到 Github
- asp.net - 使用 ASP.NET Web Api 和 Angular 10 进行授权
- java - 如何Junit测试读取文件然后将内容存储到ArrayList
- amazon-dynamodb - awscli 在验证属性定义时不考虑全局二级索引
- azure - 逻辑应用程序 - 获取 http 请求的响应时间
- google-admin-sdk - Google Meet:可以通过审核日志 API 获得会议昵称吗?
- android-ble - 在 Android 上写入 BLE gatt 特性 — 错误状态 255
- ruby-on-rails - sidekiq 的任务是否有任何“组异步等待”?