我在试着回答下面的问题。。“解释构成外键的列中出现NULL时出现的问题。讨论ANSI如何尝试使用使用连接外键时可采用的三个'匹配规则'来解决此问题。”谁能告诉我这些“匹配规则”是什么?我最初以为它们指的是外部连接,但我现在不确定了。任何建议都将不胜感激。谢谢。
hxzsmxv21#
如果我没记错的话,这些规则是关于复合外键的。例如,考虑如下定义的地址表:
deliveryaddressid - order - orderline - street - ...
其中(order,orderline)是订单行表的外键。匹配规则决定当外键的一部分为NULL时联接的行为。例如,如下行:
32 - null - 1123 - 'Main Street 1' - ...
这里有一个article about partial foreign keys(PDF下载,6页)相关的部分似乎是:ANSI SQL 92允许并且数据库(如Oracle)支持组合外键的替代匹配规则,包括:·完全匹配-不允许外键部分为空。外键的所有组成部分必须为空,或者外键中包含的值的组合必须显示为引用表的单行的主键值或唯一键值。[默认值]·部分匹配-允许部分为空的复合外键。外键的所有组成部分必须为空,或者外键中包含的非空值的组合必须出现在被引用表中单行的主键值或唯一键值的相应部分中。·Match None-允许部分为空的复合外键。如果复合外键的任何列为空,则键的非空部分不必匹配父键的任何对应部分。
1条答案
按热度按时间hxzsmxv21#
如果我没记错的话,这些规则是关于复合外键的。例如,考虑如下定义的地址表:
其中(order,orderline)是订单行表的外键。匹配规则决定当外键的一部分为NULL时联接的行为。例如,如下行:
这里有一个article about partial foreign keys(PDF下载,6页)相关的部分似乎是:
ANSI SQL 92允许并且数据库(如Oracle)支持组合外键的替代匹配规则,包括:
·完全匹配-不允许外键部分为空。外键的所有组成部分必须为空,或者外键中包含的值的组合必须显示为引用表的单行的主键值或唯一键值。[默认值]
·部分匹配-允许部分为空的复合外键。外键的所有组成部分必须为空,或者外键中包含的非空值的组合必须出现在被引用表中单行的主键值或唯一键值的相应部分中。
·Match None-允许部分为空的复合外键。如果复合外键的任何列为空,则键的非空部分不必匹配父键的任何对应部分。