我有两个表:ZDEPARTMENT01
和ZEMPLOY01
。
ZDEPARTMENT01
有一个外键DEPHEAD
,其数据元素为域ZPERSONNEL_NO
的{{1}}(NUMC,10)。 ZPERSONNEL_NO
有一个主键ZEMPLOY01
,其数据元素为域EMP_NUM
的{{1}}(NUMC,10)。
ZEMP_NUM
是外键,ZEMP_NUM
是检查键,ZDEPARTMENT01-DEPHEAD
域ZEMPLOY01-EMP_NUM
具有值表:ZDEPARTMENT01-DEPHEAD
。
在为ZPERSONNEL_NO
设置检查表时,我收到错误检查表ZEMPLOY01没有关键字段,字段为DEPHEAD
即使两个域具有相同的数据类型和长度(但不同的域),系统也无法识别外键表并检查表关系。
该文档说明:系统尝试将检查表的关键字段分配给具有相同域的表的字段。这是否意味着除了数据类型和长度之外,外键表和检查表之间的域名应该相同?
如何解决这个问题?
答案 0 :(得分:4)
是的,这意味着什么。您有两个数据元素: ZEMP_NUM 和 ZPERSONNEL_NO 。如果在表中双击这些,则将导航到数据元素定义。在那里,您会看到分配给每个人的域。这些应该是相同的,所以使它们相同。
以这种方式思考: 域为可能出现在多个位置的数据提供结构一致性。您不会在某些地方拥有10位数的员工ID,而在其他地方则不会有8位数,否则会导致10位数的记录被截断。同样,如果您的数字用完并需要将员工ID扩展到11位数,那么您需要确保在每个使用过的表格中,它都会发生变化。 域名允许您这样做。域还允许您配置默认查找关系(值表)或可以选择的固定值(例如,Employee表)。
数据元素提供上下文相关性。您会注意到,除了提供数据元素的域之外,您还可以定义字段标签和标题,还可以分配自定义搜索帮助。这些允许您以与当前活动相关的方式向用户显示该字段。在这种情况下,您可以为员工"部门主管"贴上标签,因为如果有一个字段用于保存部门主管的ID并且仅显示为"员工&#34,则会令人困惑。 ;。您还可以添加一个搜索帮助,将Employee列表限制为仅标记为" Managers"。
答案 1 :(得分:2)
正如消息中已经说过的那样,您必须调整数据元素以使用相同的域:
检查表必须具有检查域的关键字段 字段已分配。
我对此并不完全确定,但我相信这背后的基本原理是,这将阻止您更改其中一个表字段定义,而不会同时更改另一个。
答案 2 :(得分:0)
我认为您的问题是关键字段定义。表' ZEMPLOY01'有关键领域' CARRIER'和' EMPNUM'如果你想要那个外键' DEPHEAD'表' ZDEPARTMENT01'如果你有两个选择:
更改表格' ZEMPLOY01'中定义的关键字段。只需设置“EMPNUM'作为你唯一的关键领域然后尝试建立关系。
添加字段' CARRIER'到表' ZDEPARTMENT01'然后尝试建立关系。
请确认。
希望它有所帮助。