5

AUFK有一个名为ADRNRA的列。

ADRNRA 列中的值在表ADRC中具有匹配的行。

在这种情况下,我找到了 ADRC,因为有人告诉了我解决方案。

也许我是盲人,但看起来 AUFK-ADRNRA 没有明确的外键。

有没有办法通过脚本或 SQL 进行自省并找到匹配的相关表(在此示例中为 ADRC)?

4

2 回答 2

7

实际上,该字段并未标记为表字段ADDRNUMBER的外键,ADRC但如果您查看ADRNRA了表字段的域,AUFK您将在几秒钟内找到引用。

域(在这种情况下AD_ADDRNUM)有一个明确指定的值表,即,surprise,surprise ADRC,。

领域

值表

于 2018-12-12T12:22:11.680 回答
3

不,没有简单的方法可以在 SAP 系统中显示外键。:-(

数据库管理系统不需要您为外键建模。仅当您要强制执行诸如“必须引用另一个表中的行”之类的约束以及诸如级联删除之类的自动反应(“如果删除该行在另一个表中的“父”行被删除时,则删除该行”)时才这样做。

较旧的 SAP 应用程序在应用程序层(即 ABAP 代码)中实现了类似的约束和反应。他们不需要建模关系,因此人们根本没有建模它们。

识别外键关系的常用方法有:

  • 询问有经验的用户或设计数据库模型的人。
  • 猜测,来自相同的列名和数据类型。
  • 检查应用程序代码并查看它加入了哪些表。

还有一些尝试检测关系的实验性机器学习算法;谷歌“外键发现”了解更多信息。

正如@Sandra 在她的评论中指出的那样,较新的 SAP 应用程序揭示了更多的关系,因为它们使用 CDS 视图。对关系进行建模有直接的好处,例如在 OData 服务中自动生成关联、选择关系以及使用它们对业务对象进行建模。

于 2018-12-11T22:07:44.047 回答