1

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

“解释当组成外键的列中存在 NULL 时出现的问题。讨论 ANSI 如何尝试通过使用串联外键时可以采用的三个‘匹配规则’来解决这个问题。”

谁能指出这些“匹配规则”是什么?我最初以为他们指的是 OUTER JOINS,但我不确定了。

任何意见,将不胜感激。谢谢。

4

1 回答 1

3

如果我没记错的话,这些规则是关于复合外键的。例如,考虑一个定义如下的地址表:

deliveryaddressid - order - orderline - street - ...

其中 (order,orderline) 是 orderline 表的外键。当外键的一部分为 NULL 时,匹配规则决定连接的行为方式。例如,像这样的一行:

32 - null - 1123 - 'Main Street 1' - ...

这是一篇关于部分外键的文章(PDF下载,6页)相关部分似乎是:

ANSI SQL 92 允许,Oracle 等数据库支持复合外键的替代匹配规则,包括:

完全匹配——不允许部分为空的外键。外键的所有组件必须为空,或者外键中包含的值的组合必须作为被引用表的单行的主键值或唯一键值出现。[默认]
Match Partial – 允许部分为空的复合外键。外键的所有组件必须为空,或者外键中包含的非空值的组合必须出现在被引用表中单行的主键或唯一键值的对应部分中。
无匹配– 允许部分为空的复合外键。如果复合外键的任何列为空,则该键的非空部分不必匹配父键的任何对应部分。

于 2009-05-18T11:10:33.107 回答