我正在尝试回答以下问题......
“解释在构成外键的列中存在NULL时出现的问题。讨论ANSI如何尝试使用连接外键时可以采用的三个”匹配规则“来解决此问题。”
有人能指出我正确的方向,这些'匹配规则'是什么?我最初认为他们指的是OUTER JOINS,但我不确定了。
任何建议都将不胜感激。 感谢。
答案 0 :(得分:3)
如果我没记错,这些规则是关于复合外键的。例如,考虑一个定义如下的地址表:
deliveryaddressid - order - orderline - street - ...
其中(order,orderline)是订单行表的外键。匹配规则决定当外键的一部分为NULL时联接的行为方式。例如,一行如下:
32 - null - 1123 - 'Main Street 1' - ...
这是一个article about partial foreign keys(PDF下载,共6页)相关部分似乎是:
ANSI SQL 92允许和数据库等 作为Oracle支持替代匹配 复合外键的规则, 包括:
•匹配完整 - 部分为空外国 不允许使用钥匙。全部 外键的组件必须是 null或值的组合 包含在外键中必须 显示为主键或唯一键 一行的价值 参考表。 [默认]
•匹配部分 - 部分无效的复合材料 允许使用外键。全部 外键的组件必须是 null,或非null的组合 外键中包含的值 必须出现在相应的 主键或唯一键的一部分 。中单行的值 参考表。
•匹配无 - 部分为空的复合外键 是允许的。如果是任何一列 复合外键为null,然后 密钥的非空部分 不必匹配任何相应的 父键的一部分。