Oracle - 外键中的NULLS?

时间:2009-05-18 11:04:05

标签: oracle null ansi

我正在尝试回答以下问题......

“解释在构成外键的列中存在NULL时出现的问题。讨论ANSI如何尝试使用连接外键时可以采用的三个”匹配规则“来解决此问题。”

有人能指出我正确的方向,这些'匹配规则'是什么?我最初认为他们指的是OUTER JOINS,但我不确定了。

任何建议都将不胜感激。 感谢。

1 个答案:

答案 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,然后   密钥的非空部分   不必匹配任何相应的   父键的一部分。