如何在 SAP 字典表中查找外键?

How to find ForeignKey in SAP Dictionary tables?

Table AUFK has a column called ADRNRA.

ADRNRA 列中的值在 table ADRC.

中具有匹配的行

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

可能是我眼瞎了,看来AUFK-ADRNRA没有明确的外键。

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

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

数据库管理系统不需要您为外键建模。仅当您想要强制执行 "must refer to a row in the other table" 等约束和级联删除 ("delete this row if its 'parent' row in the other table is deleted") 等自动反应时才这样做。

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

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

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

还有一些尝试检测关系的实验性机器学习算法; google "foreign key discovery" 了解更多信息。

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

确实该字段未标记为 table ADRC 字段 ADDRNUMBER 的外键,但您是否应该查看字段 ADRNRA 的域在 table AUFK 中,您会在几秒钟内找到参考。

域(在本例中为 AD_ADDRNUM)具有明确指定的值 table,即惊喜,惊喜,ADRC