Antes de seguirmos adiante, devemos deixar claro que, em
nossa opinio (e na opinio de muitos outros autores tambm, bom acrescentar), nulos e !" so um equ#voco srio e no t$m lugar em um sistema %ormal limpo como o modelo relacional&* 'e(a como %or, no seria apropriado excluir de todo a discusso sobre nulos e !" de um livro desta nature)a* da# este cap#tulo& +nto, o plano do cap#tulo o seguinte& Ap,s a introdu-o, na 'e-o ./&0, suspenderemos a descren-a por algum tempo e mostraremos (da mel1or %orma poss#vel) as idias bsicas que regem os nulos e !", sem o%erecer muitas cr#ticas a essas idias& (2a verdade, no poss#vel criticar as idias de modo adequado ou (usto sem antes explicar quais so essas idias&) +m seguida, na 'e-o ./&, discutiremos algumas das conseq3$ncias mais importantes dessas idias, em uma tentativa de (usti%icar nossa posi-o de que os nulos so um equ#voco& A 'e-o ./&4 considera as implica-5es de nulos para c1aves primrias e estrangeiras& A 'e-o ./&5 %a) um digresso para considerar uma opera-o que em geral encontrada no contexto de nulos e de !", ou se(a, a opera-o de (un-o externa& A 'e-o ./&6 %a) uma breve considera-o sobre uma abordagem alternativa para o problema da %alta de in%orma-5es com o uso de valores especiais& A 'e-o ./&7 esbo-a os aspectos relevantes de '8"& Finalmente, a 'e-o ./&/ apresenta um resumo& 9m :ltimo comentrio preliminar; claro que existem muitas ra)5es pelas quais poder#amos ser incapa)es de inserir um valor de dados real em alguma posi-o dentro de alguma tupla < =valor descon1ecido> apenas uma ra)o poss#vel& ?utras incluem =valor no aplicvel>, =valor no existente>, =valor no de%inido>, =valor no %ornecido>, e assim por diante @./&5A&** Be %ato, na re%er$ncia @5&0C Dodd prop5e que o modelo relacional inclua no um, mas dois nulos distintos, um signi%icando =valor descon1ecido> e o outro =valor no aplicvel>, propondo ento que os 'EFBs devem lidar com uma l,gica de quatro valores em ve) de trivalorada& Dontestamos essa proposta em outro local @./&5A* neste cap#tulo, vamos limitar nossa aten-o a uma :nica espcie de nulo, o nulo =valor descon1ecido>, ao qual muitas ve)es < mas no invariavelmente < iremos nos re%erir como 92G (signi%icando descon1ecido < unHnoIn)& ./&0 9JA !K'L? E+MA" BA AF?MBAE+J B+ !" 2esta se-o, tentaremos explicar os componentes principais da abordagem !" para perda de in%orma-5es& !amos come-ar considerando o e%eito de nulos < signi%icando especi%icamente 92Gs < em express5es booleanas& +xpress5es booleanas C dissemos que qualquer expresso de compara-o escalar em que algum dos operandos 92G tem valor verdade descon1ecido, em ve) de verdadeiro ou %also, e portanto que estamos lidando com l,gica trivalorada (!")& Bescon1ecido (que %req3entemente, mas no invariavelmente, abreviaremos de agora em diante como unH) o terceiro valor verdade& +nto, aqui esto as tabelas verdade de !" para A2B, ?M e 2?N (v O verdadeiro, % O %also, u O unH); * Por exemplo, di)er que uma certa tupla de pe-a no contm nen1um valor de P+'? di)er < por de%ini-o < que a tupla em questo no absolutamente uma tupla de pe-a& Be modo equivalente, di)er que essa tupla no uma instancia-o do predicado aplicado& A verdade que a pr,pria a-o de tentar enunciar de %orma precisa o signi%icado do esquema de nulos , ou deve ser, su%iciente para mostrar por que a idia no muito coerente& 9ma conseq3$ncia que tambm di%#cil explicQla de modo coerente& Ditando a re%er$ncia @./&.R.; =Nudo %a) sentido se voc$ usa um pouco de imagina-o e no complica demais&> ** Porm, observamos que no existe nen1uma =omisso de in%orma-5es> como tal, em qualquer desses outros casos& Por exemplo, se dissermos que a comisso =no aplicvel> para o empregado Coe, estaremos di)endo de modo bem expl#cito que a propriedade de gan1ar uma comisso no se aplica aCoe* no 1 nesse caso nen1uma perda de in%orma-5es& (Dontudo, ainda o caso de que, se a =tupla de empregado> de Coe =contiver> um =nulo no aplicvel> na posi-o da comisso, ento essa tupla no 506 ser uma tupla de empregado < ou se(a, ela no ser uma instancia-o do predicado =empregados>&) A2B v u % ?M v u % v vu% v vvv u uu% u vuu u % %%% % vu% % v Por exemplo, vamos supor que A O , F O 4 e D 92G& +nto, as express5es a seguir t$m os valores verdade indicados; ASFA2BFSD ; %also ASF?MFSD ; unH A T F ?M F T D ; verdadeiro 2?N(AOD) ; unH Porm, A2B, ?Me 2?N no so os :nicos operadores booleanos de que necessitamos @./&...* outro operador importante JAUF+ (talve)) @./&5A, com a seguinte tabela verdade; Para ver por que JAUF+ dese(vel, considere a consulta =?bter empregados que possam ser < mas dos quais no se sabe positivamente se so < programadores nascidos antes de ./ de (aneiro de .R7., e com salrio menor que V 50&000W& Dom o operador JAUF+, a consulta pode ser enunciada de %orma bastante sucinta, como; +JP XY+M+ JAUF+ ( C?F O ProgramadorW A2B B?F T BAN+ Z.R7.Q.Q./W A2B 'A"[MK? T 50000,00 ('upomos que os atributos C?F, B?F e 'A"[MK? da varivel de rela-o +JP so dos tipos DYAM, BAN+ e MANK?2A", respectivamente&) 'em o operador JAUF+, a consulta poderia %icar assim; +JP XY+M+ ( K'92G ( C?F ) A2B B?F T BAN+ Z.R7.Q.Q./W A2B 'A"[MK? T 50000,00 ?M ( C?F O ZProgramadorW A2B K'92G ( B?F ) A2B 'A"[MK? T 50000,00 ?M ( C?F O ZProgramadorW A2B B?F T BAN+ Z.R7.Q.Q./W A2B K'92G ( 'A"[MK? ?M ( K'92G ( C?F ) A2B K'92G ( B?F ) A2B 'A"[MK? T 50000,00 ?M ( K'92G ( C?F ) A2B B?F T BAN+ Z.R7.Q.Q./W A2B K'92G ( 'A"[MK? ?M ( C?F O ZProgramadorW A2B K'92G ( B?F ) A2B K'\92G ( 'A"[MK? ?M ( K'KC2G ( C?F ) A2B K'KK2G ( B?F ) A2B . 'KC2G ( 'A"[MK? v % u JAUF+ % v u % t % 507 ('upomos a exist$ncia de outro operador de valor verdade, c1amado K' 92G, o qual toma um :nico operando de expresso escalar e retorna verdadeiro se esse operando tem o valor 92G, %also em caso contrrio&) A prop,sito, o que %oi dito no deve ser tomado como sugesto de que JAUF+ se(a o :nico operador booleano adicional necessrio para !"& 2a prtica, por exemplo, um operador NM9+\?M\ JAUF+ (verdadeiro ou talve)) poderia ser muito :til @./&5A& Donsulte a anota-o ] re%er$ncia @./&ll(, na se-o =Me%er$ncias e bibliogra%ia>& +^K'N' e F?MA"" Apesar do %ato de a maioria dos nossos exemplos neste livro se basear na lgebra e no no clculo, precisamos considerar as implica-5es da !" para os quanti%icadores de clculo +^K'N' e F?MA""& Domo explicamos no Dap#tulo 7, de%inimos os quanti%icadores +^K'N' e F?MA"" como ?M e A2B iterados, respectivamente& +m outras palavras, se (a) r uma rela-o com tuplas ti, t0, &&&, tm, e (b) ! uma varivel de intervalo que percorre essa rela-o e (c) p(!) uma expresso booleana na qual !ocorre com uma varivel livre, ento a expresso; +^K'N' v ( p ( ! ) ) de%inida como equivalente ] expresso %also?Mp(ti)?M&&&?Mp(tni) Be modo anlogo, a expresso F?MA"" ! ( p ( ! ) ) de%inida como equivalente ] expresso verdadeiro A2B p ( ti ) A2B &&& A2B p ( tm +nto, o que acontece se p(ti) tem o valor unH para algum i_ Domo exemplo, se(a a rela-o r, contendo exatamente as seguintes tuplas; ( ., 0, ( ., 0, 92G ) ( 92G, 92G, 92G ) Para simpli%icar, supon1a que (a) os tr$s atributos, da esquerda para a direita, se(am c1amados A, F e D, respectivamente* (b) todo atributo se(a do tipo K2N+E+M& +nto, as express5es a seguir t$m os valores indicados; +^K'N' li ( !&D S . ) ; verdadeiro +^K'N' ! ( !&F S 0 ) ; unH +^K'N' ! ( JAUF+ ( l`&A S ) ) ; verdadeiro +^K'N' ! ( K'92G ( !&D ) ) ; verdadeiro F?MA"" ! ( !&A S . ) ; %also F?MA"" ! ( !&F S . ) ; unH F?MA"" ! ( JAUF+ ( !&D S . ) ) ; %also 50/ +xpress5es calculadas Donsidere a expresso numrica; P+'? * 454 onde P+'? representa o peso de alguma pe-a, digamos P7& + se acontecer de o peso da pe-a P7 ser 92G_ < qual ser ento o valor da expresso_ A resposta que ele tambm dever ser considerado como 92G& Be %ato, consideramos em geral que qualquer expresso numrica escalar ten1a o valor 92G se qualquer dos operandos dessa expresso %or ele pr,prio 92G& Assim, por exemplo, se acontecer de P+'? ser 92G, todas as express5es a seguir tambm tero o valor 92G; P+'? a 454 454 a P+'? a P+'? P+'? < 454 454 < P+'? Q P+'? P+'? * 454 454 * P+'? P+'? ` 454 454 ` P+'? 2ota; talve) dev$ssemos di)er logo que o tratamento anterior para express5es numricas %a) surgirem certas anomalias& Por exemplo, a expresso P+'? < P+'?, que deveria claramente resultar em )ero, na verdade retorna 92G, e a expresso P+'?`?, que claramente deveria gerar um erro =diviso por )ero>, tambm retorna 92G (supondoQse em ambos os casos que P+'? se(a 92G, ,bvio)& Donsidera-5es anlogas se aplicam a todos os outros tipos de dados e operadores escalares, exceto (a) os operadores de compara-o (consulte as duas subse-5es anteriores), (b) o operador K'\92G discutido anteriormente e (c) o operador KF\92G a ser discutido no pargra%o seguinte& Assim, por exemplo, a expresso de strings de caracteres A . . F retorna 92G se A 92G ou F 92G, ou ambos& (Be novo, 1 certos casos anbmalos, cu(os detal1es omitimos aqui&) ? operador KF\92G toma dois operandos de express5es escalares e retorna o valor do primeiro operando, a menos que esse operando ten1a o valor 92G* nesse caso, a expresso retorna o valor do segundo operando (em outras palavras, o operador e%etivamente %ornece um meio para converter um 92G em algum valor no 92G)& Por exemplo, supon1a que se(am permitidos 92Gs para o atributo DKBAB+ de %ornecedores& +nto, a expresso; +^N+2B F ABB KF92G ( DKBAB+& Didade descon1ecida ) A' FDKBA?+ produ)ir um resultado em que o valor FDKBAB+ =Didade descon1ecida> para qualquer %ornecedor cu(a cidade se(a dada como 92G em F& A prop,sito, observe que NF\92G pode ser de%inido em termos de K' 92G& Para sermos espec#%icos, a expresso; KF92G ( expi, exp0 ) (onde as express5es expi e exp0 devem ser do mesmo tipo) equivalente ] expresso; KF K'92G ( expi ) NY+2 exp0 +"'+ expi +2? KF 92G no unH c importante entender que 92G (o nulo =valor descon1ecido>) e unH (o valor verdade descon1ecido) no so a mesma coisa&* Be %ato, essa situa-o conseq3$ncia imediata do %ato de unH ser um valor (especi%icamente, um valor verdade) enquanto que 92G no absolutamente um valor& 'e(amos um pouco mais espec#%icos& 'upon1a que ^ se(a uma varivel do tipo F??"+A2& +nto, ^ deve ter um dos valores verdadeiro, %also ou unH& Assim, a instru-o =^ unH> signi%ica exatamente que o valor de ^ con1ecido como unH& +m contraste, a instru-o =^ 92G> signi%ica que o valor de ^ descon1ecido& * Porm, a '8" considera que eles so a mesma coisa (consulte o Ap$ndice F)& 50R 9m dom#nio pode conter um 92G_ Nambm uma conseq3$ncia imediata de 92G no ser um valor o %ato de que 92Gs no podem apareQ cer em dom#nios (dom#nios so con(untos de valores)& Be %ato, se %osse poss#vel que um dom#nio contivesse um nulo, ento as veri%ica-5es de restri-5es de tipos para um determinado dom#nio nunca %al1ariamd Por outro lado, como dom#nios na verdade no podem conter 92Gs, uma =rela-o> que conten1a um 92G < qualquer que se(a ela < na realidade, no seria de modo algum uma rela-o, nem pela de%iniQ -o dada no Dap#tulo 5, nem pela de%ini-o original de Dodd que %oi dada na re%er$ncia @5&.A& !oltaremos a esse importante assunto na 'e-o ./&6, mais adiante& +xpress5es relacionais !amos voltar nossa aten-o agora para o e%eito de 92Gs sobre operadores da lgebra relacional& Para simpli%icar, nos limitaremos aos operadores produto, restri-o, pro(e-o, unio e di%eren-a (o e%eito de 92Gs sobre os outros operadores pode ser dedu)ido de seu e%eito sobre esses cinco)& +m primeiro lugar, o produto no a%etado& 'egundo, a opera-o de restri-o rede%inida (ligeiramente) para retornar uma rela-o cu(o corpo contm apenas as tuplas para as quais a condi-o de restri-o avaliada como verdadeira, isto , no %alsa nem unH& 2ota; %i)emos essa suposi-o tcita de rede%ini-o em nosso exemplo de JAUF+ na subse-o anterior =+xpress5es booleanas>& +m seguida, a pro(e-o& A pro(e-o, claro, envolve a elimina-o de tuplas duplicadas redundantes& Agora, na l,gica convencional de dois valores (0!"), duas tuplas so duplicatas uma da outra se e somente se t$m os mesmos atributos e os atributos correspondentes t$m valores iguais& Porm, em !", alguns desses valores de atributos podem ser 92G e 92G, (como vimos), no igual a nada, nem sequer a ele mesmo& 'omos ento %or-ados a concluir que uma tupla que conten1a um 92G nunca poder ser uma duplicata de nada, nem de si mesma_ 'egundo Dodd, a resposta a essa pergunta no; dois 92Gs, embora no se(am iguais entre si, ainda so considerados =duplicatas> um do outro para %ins de elimina-o de tuplas duplicadas @.&6A&* A contradi-o aparente explicada desta %orma @?s testes de igualdadeA para remo-o de duplicatas esto&&& em um menor n#vel de detal1e que a veri%ica-o de igualdade na avalia-o das condi-5es de uma busca& Portanto, poss#vel adotar uma regra di%erente& Beixamos para voc$ o trabal1o de (ulgar se essa explica-o ra)ovel ou no& Be qualquer modo, vamos aceitQla por enquanto e, em conseq3$ncia disso, aceitar a seguinte de%ini-o; e Buas tuplas so duplicatas uma da outra se e somente se (a) elas t$m os mesmos atributos, e (b) para cada um desses atributos, as duas tuplas t$m ambas o mesmo valor ou ambas t$m um valor 92G na posi-o desse atributo& Dom essa de%ini-o estendida de =tuplas duplicadas>, a de%ini-o original de pro(e-o se aplica agora sem altera-5es& Bo mesmo modo, a unio envolve a elimina-o de tuplas duplicadas redundantes e a mesma de%ini-o de tuplas duplicadas se aplica& Assim, de%inimos a unio de duas rela-5es ri e r0 (do mesmo tipo) como a rela-o r (mais uma ve) do mesmo tipo) cu(o corpo consiste de todas as tuplas t poss#veis tais que t uma duplicata de alguma tupla de ri ou de alguma tupla de r0 (ou de ambas)& Finalmente < embora no envolva qualquer elimina-o de duplicatas < a di%eren-a de%inida de modo anlogo* ou se(a, uma tupla t aparece em ri JK29' r0 se e somente se ela uma duplicata de alguma tupla de ri e no duplicata de alguma tupla de r0& (2o caso da interse-o, claro que ela no pri A re%er$ncia @.&6A %oi o primeiro dos artigos de Dodd a discutir o problema da perda de in%orma-5es (embora esse problema no ten1a sido o %oco principal do artigo < consulte o Dap#tulo .)& +ntre outras coisas, o artigo prop5e vers5es =talve)> dos operadores de (un-o f, sele-o ? (isto , restri-o) e diviso (ve(a o +xerc#cio ./&4), alm de vers5es =externas> dos operadores 5.0 de unio, interse-o, di%eren-a, (un-o ? e (un-o natural (consulte a 'e-o ./&5)& mitiva mas, por complete)a, observamos que ela tambm de%inida de modo anlogo* assim, uma tupla t aparece em ri K2N+M'+DN r0 se e somente se ela uma duplicata de alguma tupla de ri e de alguma tuQ pia de r0&) ?pera-5es de atuali)a-o Y dois pontos gerais a en%ati)ar aqui; .& 'e o atributo A da varivel de rela-o M permite 92Gs e se uma tupla inserida em M sem valor algum %ornecido para A, o sistema automaticamente colocar um 92G na posi-o A da tupla& 'e o atributo A da varivel de rela-o M no permite 92Gs, uma tentativa de criar uma tupla em M atravs de K2'+MN ou 9PBAN+ na qual a posi-o de A 92G ser um erro ( claro que estamos supondo em ambos os casos que no %oi de%inido nen1um valor padro no 92G para A)& 0& 9ma tentativa atravs de K2'+MN ou 9PBAN+ de criar uma tupla duplicada em r ser um erro, como sempre& A de%ini-o de =tuplas duplicadas> aqui a que %oi dada na subse-o precedente& Mestri-5es de integridade Don%orme explicamos no Dap#tulo /, uma restri-o de integridade basicamente uma expresso booleana que no deve ter o valor %also& Portanto, observe que a restri-o no considerada como violada se ela tem o valor unH (na verdade, estamos supondo tacitamente a validade de grande parte das nossas observa-5es anteriores nesta se-o a respeito de restri-5es de tipos)& + claro que, tecnicamente, devemos di)er em tal caso que no se sabe se a restri-o %oi violada mas, da mesma %orma que unH considerado %also para %ins de uma clusula XY+M+, ele tambm considerado verdadeiro para as %inalidades de uma restri-o de integridade (%alandoQse em termos bastante in%ormais)& ./& A"E9JA' D?2'+8gh2DKA' B? +'89+JA PM+D+B+2N+ A abordagem !" como %oi descrita na se-o precedente tem vrias conseq3$ncias l,gicas, nem todas imediatamente ,bvias& Biscutimos algumas delas e seus signi%icados nesta se-o& Nrans%orma-5es de express5es Primeiro, observamos que vrias express5es que sempre t$m valor verdadeiro na l,gica de dois valores (0!") no t$m necessariamente valor verdadeiro em !"& Bamos aqui alguns exemplos com comentrios& ?bserve que no pretendemos que a lista a seguir se(a exaustiva& e A compara-o x O x no resulta necessariamente em verdadeiro& +m 0!", qualquer valor x sempre igual a si mesmo& Porm, em !", x no igual a ele mesmo, no caso de ser 92G& e A expresso booleana p ?M 2?N (p) no resulta necessariamente em verdadeiro& 2esse caso, p por sua ve) uma expresso booleana& Agora, em 0!", a expresso p ?M 2?N (p) avaliada necessariamente como verdadeira, qualquer que se(a o valor de p& Dontudo, em !", se p tiver o valor unH, a expresso global ter o valor unH ?M 2?N (unH), isto , o valor unH ?M unH, que se redu) a unH, e no a verdadeiro& +sse exemplo em particular responde por uma propriedade antiintuitiva bem con1ecida de !", que ilustramos assim; se emitirmos a consulta =?bter todos os %ornecedores em "ondres>, seguida pela consulta =?bter todos os %ornecedores no em "ondres>, e tomarmos a unio dos dois resultados, no obteremos necessariamente todos os %ornecedores& +m ve) disso, precisamos incluir =todos os %ornecedores que possam estar em "ondres&* * Domo sugere a discusso precedente, uma expresso que sempre tem o valor verdadeiro em !" < isto , a anloga em !" da expresso de 0!" p ?M 2?N (p) Q p ?M 2?N (p) ?M JAUF+ (p)& 5.. c claro que a questo sobre esse exemplo que, embora os dois estados =cidade "ondres> e =cidade no "ondres> se(am mutuamente exclusivos e esgotem todas as possibilidades no mundo real, o banco de dados no contm o mundo real < em ve) disso, ele contm apenas um con1ecimento sobre o mundo real& Alm disso, 1 tr$s casos poss#veis, e no dois, relacionados com o con1ecimento sobre o mundo real; no exemplo, os tr$s casos so =sabeQse que a cidade "ondres>, =sabeQse que a cidade no "ondres> e =a cidade no con1ecida>& + claro que (como menciona a re%er$ncia @./&6A), evidentemente no podemos %ormular perguntas para o sistema sobre o mundo real* s, podemos %ormular perguntas sobre seu con1ecimento do mundo real, representado pelos dados no banco de dados& Portanto, a nature)a antiintuitiva do exemplo deriva de uma con%uso sobre remos; o usurio est pensando em termos do reino que o mundo real, mas o sistema est operando em termos do reino que seu con1ecimento sobre esse mundo real& 2ota; contudo, nos parece que tal con%uso sobre remos uma armadil1a na qual muito %cil cair& ?bserve que cada consulta isolada mencionada nos cap#tulos precedentes (exemplos, exerc#cios, etc&) %oi enunciada em termos =do mundo real>, no em termos de =con1ecimento sobre o mundo real> < e este livro certamente no di%ere de outros quanto a esse aspecto& e A expresso r C?K2 r no retorna necessariamente r& +m 0!", a %orma-o da (un-o de uma rela-o r com ela pr,pria sempre produ) a rela-o r original (isto , a (un-o idem potente)& Porm, em !", uma tupla contendo 92G em qualquer posi-o no %ar (un-o com ela mesma, porque a (un-o, di%erente da unio, se baseia em testes de igualdade =tipo acesso> e no em testes de igualdade de =tipo de duplicata>& e K2N+M'+DN( no um caso especial deC?K2& Ksso uma conseq3$ncia do %ato de que (novamente) a (un-o se baseia em testes de igualdade tipo de acesso, enquanto a interse-o se baseia em testes de igualdade do tipo de duplicatas& e A O F e F O D (untos no implicam necessariamente A O D& 9ma ilustra-o desse ponto particular dada a seguir, na subse-o =? exemplo de departamentos e empregados>& +m suma, muitas equival$ncias vlidas em 0!" ( no subsistem em !"& 9ma conseq3$ncia muito sria dessas quebras dada a seguir& +m geral, equival$ncias simples como rC?K2 r M esto no cerne das vrias leis de trans%orma-o usadas com a %inalidade de converter consultas para alguma %orma mais e%iciente, como explicamos no Dap#tulo .7& Alm disso, essas leis so usadas no apenas pelo sistema (ao %a)er a otimi)a-o), mas tambm pelos usurios (quando tentam decidir a =mel1or> maneira de enunciar uma determinada consulta)& + se as equival$ncias no so vlidas, ento as leis no so vlidas& 'e as leis no so vlidas, ento as trans%orma-5es no so vlidas& + as trans%orma-5es no so vlidas, ento receberemos respostas erradas do sistema& ? exemplo de departamentos e empregados Para ilustrar o problema de trans%orma-5es incorretas, discutiremos com algum detal1e um exemplo espec#%ico (retirado da re%er$ncia @./&RA* por ra)5es pouco importantes aqui, ele se baseia no clculo relacional e no na lgebra relacional)& !amos supor que nos se(a dado o banco de dados simples de departamentos e empregados mostrado na Figura ./&.& Donsidere a expresso; B+PN?&B+PN?i O +JP&B+PN?i A2B +JP&B+PN?i O B+PN?i ( Bl ) (que poderia ser parte de uma consulta, claro)* B+PN? e +JP so variveis de intervalos impl#citas& Para as :nicas tuplas existentes no banco de dados, essa expresso tem o valor unH A2B unH, isto , como unH& Dontudo, um =bom> otimi)ador observar que a expresso da %orma a O b A2B b O c, e por essa ra)o ir in%erir que a O c, e ento acrescentar uma restri-o adicional a O c ] expresso original (como discutimos no Dap#tulo .7, 'e-o .7&4), gerando a expresso; 5.0 F . E 9 MA . / & . ? banco de dados de departamentos e empregados Agora essa expresso modi%icada avaliada como unH A2B unH A2B %alsa, isto , %alsa (para as duas :nicas tuplas do banco de dados)& Portanto, decorre que a consulta (por exemplo); +JP&+JPi XY+M+ +^K'N' B+PN? ( 2?N ( B+PN?&B+PN?i O +JP&B+PN?i A2B +JP&B+PN?i O B+PN?i ( ZBlW ) retornar o empregado +l se =otimi)ada> no sentido anterior e no %ar isso em caso contrrio& +m outras palavras, a =otimi)a-o> na verdade no vlida& !emos assim que certas otimi)a-5es que so per%eitamente vlidas < e :teis < na l,gica convencional de dois valores ( no so vlidas sob a l,gica de tr$s valores& ?bserve as implica-5es do que vimos quanto a estender um sistema 0!" para admitir a !"& 2a mel1or das 1ip,teses, tal extenso provavelmente exigir uma certa dose de reengen1aria do sistema existente, ( que por-5es do c,digo otimi)ador podero ser invalidadas* no pior das 1ip,teses, introdu)iQ r bugs& Be %orma mais geral, observe as implica-5es para se estender um sistema que admita a l,gica de n valores a um sistema que admita a l,gica de (na.) valores, para qualquer n maior que um* certamente surgiro di%iculdades anlogas para cada valor discreto de n& A questo da interpreta-o !amos examinar agora com mais detal1es o exemplo de departamentos e empregados& Domo o empregado +l tem algum departamento correspondente no mundo real, o 92G representa algum valor real, digamos d& ?ra, ou d Bl ou no & 'e , ento a expresso original; B+PN?&B+PN?i O +JP&B+PN?i A2B +JP&B+PN?i O B+PN?i ( BlW avaliada (para os dados %ornecidos) como %alsa, porque o primeiro termo avaliado como %also& Domo outra alternativa, se d no Bl, ento a expresso tambm avaliada (para os dados %ornecidos) como %alsa porque o segundo termo tem o valor %also& +m outras palavras, a expresso original sempre %alsa no mundo real, qualquer que se(a o valor real representado por 92G& Assim, o resultado correto segundo a l,gica trivalorada e o resultado correto no mundo real no so a mesma coisad +m outras palavras, a l,gica de tr$s valores no se comporta de acordo com o mundo real* isto , a !" no parece ter uma interpreta-o ra)ovel em termos de como %unciona o mundo real& 2ota; a questo de interpreta-o est muito longe de ser o :nico problema resultante de nulos e da !" (consulte as re%er$ncias @./&.A a @./&... para ver uma extensa discusso de vrios outros problemas)& +le no nem mesmo o mais %undamental (consulte a pr,xima subse-o)& Dontudo, talve) se(a o :nico problema de signi%ica-o pragmtica maior* em nossa opinio, na verdade ele um desmanc1aQpra)eres& Predicados de novo 'upon1a que a rela-o que o valor atual da varivel de rela-o +JP contm apenas duas tuplas, (+0,B0) e (+.,92G)& A primeira corresponde ] proposi-o =+xiste um empregado identi%icado como +0 5. 0! " operadores mondicos operadores didicos 4 .6 ! " 07 .R&6/ 4! " 056 4&0R4&R67&0R6 n! " (n)**(n) (n)**(n0) no departamento identi%icado como B0W& A segunda corresponde ] proposi-o =+xiste um empregado identi%icado como +lW& ("embreQse de que di)er que uma tupla =contm um 92G> realmente di)er que a tupla no contm nada em absoluto na posi-o em questo* desse modo, a =tupla> (+l, 92G) < se ela na verdade uma tupla, o que em si mesmo uma no-o duvidosa < deve ser considerada como da %orma (+l)&) +m outras palavras, as duas tuplas so instancia-5es de dois predicados di%erentes e a =rela-o> no em absoluto uma rela-o, mas sim (em termos in%ormais) uma espcie de unio de duas rela-5es di%erentes contendo, em particular, dois cabe-al1os di%erentes& ?ra, poder#amos sugerir que poss#vel salvar a situa-o a%irmando que, a%inal de contas, s, existe realmente um predicado, e que esse predicado envolve um ?M; +xiste um empregado identi%icado como +i no departamento identi%icado como Bi ?M existe um empregado identi%icado como +i& Porm, observe que agora < gra-as ] Yip,tese de Jundo Fec1ado < a rela-o ter de conter uma =tupla> da %orma (+i,92G) para todos os empregados +id A generali)a-o dessa tentativa de salvamento para uma =rela-o> que =contm 92Gs> em vrios =atributos> di%erentes algo 1orr#vel demais para se contemplar& (+, em qualquer caso, a =rela-o> que resulta ainda no ser uma rela-o < ve(a o pr,ximo pargra%o&) +m outras palavras, se o valor de um determinado atributo dentro de uma dada tupla de uma certa rela-o = 92G>, ento (repetindo) a posi-o desse atributo no contm realmente nada &&& o que implica que o =atributo> no um atributo, a =tupla> no uma tupla, a =rela-o> no uma rela-o e a base para o que estamos %a)endo (se(a o que %or) no mais a teoria de rela-5es matemticas& +m outras palavras, 92Gs e !" minam toda a base do modelo relacional& ./&4 29"?' + DYA!+' 2ota; agora vamos descartar o termo 92G (em sua maior parte) e voltar, por ra)5es 1ist,ricas, ] terminologia mais tradicional de =nulos>& Apesar da mensagem da se-o anterior, o %ato que nulos e !" t$m suporte na maioria dos produtos, no momento em que escrevemos& Alm disso, tal suporte tem implica-5es importantes para c1aves em particular& Portanto, nesta se-o, vamos examinar rapidamente essas implica-5es& D1aves primrias Domo explicamos na 'e-o /&/, o modelo relacional costumava exigir que (pelo menos no caso de variveis de rela-5es bsicas) %osse escol1ida exatamente uma c1ave candidata como a c1ave primria para a varivel de rela-o em questo& As c1aves candidatas restantes, caso 1ouvesse alguma, eram ento consideradas c1aves alternativas& + ento, (untamente com o conceito de c1ave primria, o modelo inclu#a 1istoricamente a seguinte =metarrestri-o> ou regra (a regra de integridade de entidade); a Kntegridade de entidade; nen1um componente da c1ave primria de qualquer varivel de rela-o bsica deve poder aceitar nulos& As ra)5es para essa regra so mais ou menos as seguintes; (a) tuplas em rela-5es bsicas representam entidades no mundo real* (b) entidades no mundo real so identi%icveis por de%ini-o* (c) portanto, suas contrapartes no banco de dados tambm devem ser identi%icveis* (d) valores da c1ave primria servem como esses identi%icadores no banco de dados* (e) ento, valores da c1ave primria no devem ser =omitidos>& 'urgem pontos importantes; .& +m primeiro lugar, %req3entemente se imagina que a regra de integridade de entidade di) algo como =valores da c1ave primria devem ser exclusivos>, mas isso no ocorre& (+ verdade que valores da c1ave primria devem ser exclusivos, claro, mas esse requisito implicado pela de%ini-o bsica do conceito de c1ave primria em si&) 0& +m seguida, observe que a regra s, se aplica a c1aves primrias* as c1aves alternativas aparentemente podem ter nulos permitidos& Porm, se AG %osse uma c1ave alternativa com nulos permitidos, entoAG no poderia ser escol1ida como a c1ave primria, devido ] regra de integridade de entidade* ento, exatamente em que sentido AG seria uma c1ave =candidata>, a%inal_ Domo outra op-o, se tivermos de di)er que c1aves alternativas no podem ter nulos permitidos de modo algum, ento a regra de integridade de entidade se aplicaria a todas as c1aves candidatas, no apenas ] c1ave primria& Be qualquer modo, parece 1aver algo errado com a regra enunciada& & Finalmente, observe que a regra de integridade de entidade s, se aplica a variveis de rela-5es bsicas* outras variveis de rela-5es podem ter aparentemente uma c1ave primria para a qual nulos se(am permitidos& Domo um exemplo trivial e ,bvio, considere a pro(e-o de uma varivel de rela-o M sobre qualquer atributo A que tem nulos permitidos& Besse modo, a regra viola ? Princ#pio da Permutabilidade (de variveis de rela-5es bsicas e derivadas)& +m nossa opinio, esse seria um argumento %orte para re(eitQla (ainda que ela no envolvesse nulos, um conceito que re(eitamos de qualquer maneira)& 2ota; vamos supor que concordamos em descartar toda a idia de nulos e empregamos valores especiais para representar in%orma-5es perdidas (na verdade, da mesma maneira que %a)emos no mundo real < consulte a 'e-o ./&6 mais adiante)& +nto, podemos querer conservar uma verso modi%icada da regra de integridade de entidade < =2en1um componente da c1ave primria de qualquer varivel de rela-o bsica pode aceitar tais valores especiais> < como uma diretri), mas no como uma lei inviolvel (de %orma muito semel1ante, ] maneira como as idias de normali)a-o avan-ada servem como diretri)es mas no como leis inviolveis)& A Figura ./&0 mostra um exemplo (tirado da re%er$ncia @5&7A) de uma varivel de rela-o bsica c1amada P+'89K'A, para a qual podemos querer violar essa diretri)* ele representa os resultados de uma pesquisa de salrios, mostrando o salrio mdio, mximo e m#nimo por ano de nascimento para uma certa amostra de popula-o (A2?2A'DKJ a c1ave primria)& + a tupla com o valor especial de A2?2A'DKJ =____= representa pessoas que deixaram de responder ] pergunta =8uando voc$ nasceu_>& FKE9MA ./&0 A varivel de rela-o bsica P+'89K'A (amostra de valores) D1aves estrangeiras Donsidere uma ve) mais o banco de dados de departamentos e empregados da Figura ./&.& !oc$ pode no ter notado antes, mas deliberadamente no dissemos que o atributo B+PN?i da varivel de rela-o +JP naquela %igura era uma c1ave estrangeira& +ntretanto, vamos supor agora que se(a& +nto, claro que a regra de integridade re%erencial precisa de algum re%inamento porque agora as c1aves estrangeiras devem aparentemente ter permisso para aceitar nulos e valores nulos de c1aves estrangeiras sem d:vida violam a regra enunciada originalmente no Dap#tulo /; e Kntegridade re%erencial (verso original); o banco de dados no deve conter quaisquer valores de c1aves estrangeiras sem correspond$ncia& 5.5 P+'89K 'A A2?2A' DKJ 'A"J +B 'A"J A^ 'A"J K2 .R60 .R6. .R60 .R6 /5G /0G 77G 7/G .0G .05G RRG R7G G 0G 0G 5G .R70 _ ___ 0RG 56G 5G ..7G .0G 00G +xaminemos mais de perto esse exemplo& ?bserve a Figura ./&& 2essa %igura, a parte superior contm algumas amostras de valores de dados, a parte do meio mostra a correspondente (un-o interna e a parte in%erior mostra a (un-o externa correspondente& Domo indica a %igura, a (un-o interna =perde in%orma-5es> < em termos muito in%ormais < re%erentes a %ornecedores que no %ornecem pe-a alguma (no exemplo, o %ornecedor F5), enquanto a (un-o externa =preserva> tais in%orma-5es& 2a verdade, essa di%eren-a toda a ra)o para a (un-o externa& F . E 9 MA . / & Cun-o interna e (un-o externa (exemplo) Agora, o problema que a (un-o externa %oi criada para resolver < ou se(a, o %ato de que a (un-o interna ]s ve)es =perde in%orma-5es> < sem d:vida um problema importante& Alguns autores argumentaQ riam ento que o sistema deve %ornecer suporte direto, expl#cito, para a (un-o externa, em ve) de exigir que o usurio empregue circunl,quios para obter o e%eito dese(ado& Dodd, em particular, considera agora a (un-o externa como uma parte intr#nseca do modelo relacional @5&0A& 2o entanto, n,s mesmos no endossamos essa posi-o, pelas ra)5es seguintes, entre outras; & Primeiro, claro, porque a opera-o envolve nulos e somos contrrios a nulos, por numerosas e boas ra)5es& & +m segundo lugar, observe que existem di%erentes variedades de (un-o externa < a (un-o j exQ terna ] esquerda, ] direita e completa e a (un-o natural externa ] esquerda, ] direita e completa& ( As (un-5es =] esquerda> preservam in%orma-5es do primeiro operando, as (un-5es ] =direita> preservam in%orma-5es do segundo operando e as (un-5es =completas> de ambos* o exemplo da Figura ./& uma (un-o ] esquerda < mais precisamente, uma (un-o natural externa ] esquerda&) ?bserve ainda que no 1 um modo direto de derivar as (un-5es naturais externas das (un-5es j externas @./&7A& +m conseq3$ncia disso, no claro o modo exato como as (un-5es externas precisam ter suporte expl#cito& & Alm do mais, o problema da (un-o externa est longe de ser to trivial como poderia sugerir o exemplo simples da Figura ./&& 2a verdade, como mostra a re%er$ncia @./&7A, a (un-o externa so%re de vrias propriedades desagradveis, que (untas implicam que a tare%a de acrescentar o suporte para (un-o externa ] linguagem existente < em particular ] '8" < tende a ser algo di%#cil de se %a)er com elegkncia& !rios produtos de 'EFBs tentaram resolver esse problema e %al1aram lamentavelmente (isto , trope-aram nessas Propriedades Besagradveis)& !e(a na re%er$n ci @./&7. uma longa discusso dessa questo& 5.7 . F2?J+ 'NAN9' . DKBAB+ FP . ( Pi 8B+ . F0 . Cones lo Paris F0 . P. 00 F5 Adams 0 Atenas F0 P0 400 Cun-o (interna) comum; F2?J+ 'NAN9' DKBAB+ Pi 8B+ =Perde> in%orma-5es Cones .0 Paris P. 00 sobre o %ornecedor F5 Cones .0 Paris P0 400 Cun-o externa; =Preserva>in%orma-5es sobre o %ornecedor F5 F2?J + 'NAN9 ' DKBA B+ Pi 8B+ Cone s Cone s Adam s .0 .0 0 Pari s Pari s Aten as (@ P0 92 G 400 92G e Finalmente, os atributos com valor de rela-o %ornecem uma abordagem alternativa para a solu-o do problema < uma abordagem que no envolve nulos nem (un-o externa e (em nossa opinio) uma solu-o muito mais elegante& Por exemplo, considerandoQse a amostra de valores de dados da parte superior da Figura ./&, a expresso; XKNY ( F M+2AJ+ Fi A' ^ ) A' U +^N+2B U ABB ( FP XY+M+ Fi x ) A' P8 produ) o resultado mostrado na Figura ./&4& F . E 9 MA . / & 4 Preservando in%orma-5es sobre o %ornecedor F' (um modo mel1or) +m particular, observe que na Figura ./&4, o con(unto va)io dc pe-as %ornecidas pelo %ornecedor F5 representado por um con(unto va)io, e no (como na Figura ./&) por algum estran1o =nulo>& Mepresentar um con(unto va)io por um con(unto va)io parece ser uma idia boa& Be %ato, no 1averia necessidade de nen1uma (un-o externa se os atributos com valor de rela-o tiQ vessem suporte apropriado& !amos prosseguir com esse tema um pouco mais; a%inal, como devemos interpretar os nulos que aparecem no resultado de uma (un-o externa_ Por exemplo, o que eles signi%icam no exemplo da Figura ./&_ Dertamente, no querem di)er =valor descon1ecido> ou =valor no se aplica>* na verdade, a :nica interpreta-o que %a) algum sentido l,gico exatamente =valor o con(unto va)io>& Donsulte a re%er$ncia @./&7. para ver uma discusso mais pro%unda tambm desse problema& Donclu#mos esta se-o observando que tambm poss#vel de%inir vers5es =externas> de algumas outras opera-5es da lgebra relacional < especi%icamente, das opera-5es de unio, interse-o e di%eren-a @ .&6. < e, de novo, Dodd agora considera pelo menos uma delas, a unio externa, como parte do modelo relacional @5&0A& +ssas opera-5es permitem que uni5es (etc&) se(am executadas entre duas rela-5es, mesmo que essas rela-5es no se(am do mesmo tipo* basicamente, elas %uncionam estendendo cada operando de modo a incluir os atributos peculiares ao outro (de modo que os operandos agora se(am do mesmo tipo), inserindo nulos em cada tupla para todos esses atributos acrescentados e depois executando uma opera-o normal de unio, interse-o ou di%eren-a, con%orme se(a aplicvel&* Porm, no discutiremos em detal1es essas opera-5es, pelos seguintes motivos; e A interse-o externa retornar com certe)a uma rela-o va)ia, exceto no caso particular em que as rela-5es originais so do mesmo tipo e, nesse caso, a opera-o se redu) ] interse-o normal& * +ssa explica-o se re%ere ]s opera-5es como elas %oram de%inidas originalmente @.&6.& A re%er$ncia @5&0A mudou um pouco as 5./ de%ini-5cs; voc$ deve examinar nesse livro os detal1es espec#%icos (se dese(ar)& F i F2?J + 'NAN9 ' DKBAB + P 8 F 0 Cone s .0 Paris i P . 8B + 0 0 40 P 0 0 F 5 Adam s 0 Atena s P i 8B + & A di%eren-a externa retornar com certe)a seu primeiro operando, exceto no caso particular em que as rela-5es originais so do mesmo tipo e, nesse caso, a opera-o se redu) ] di%eren-a norQ mal& & A unio externa tem problemas importantes de interpreta-o (eles so muito piores que os problemas que surgem no caso da(un-o externa)& Donsulte a re%er$ncia @./&0A para ver uma discusso mais completa& ./&6 !A"?M+' +'P+DKAK' !imos a questo dos nulos no modelo relacional& Be %ato, vale a pena assinalar que o modelo relacional %uncionou per%eitamente bem sem nulos por de) anosd ? modelo %oi de%inido inicialmente em .R6R @ 5&.., e os nulos s, %oram acrescentados em .R7R @.&l(& Por esse motivo, supon1a que < como sugere a 'e-o ./&4 < concordamos em descartar toda a idia de nulos e, em ve) disso, usar valores especiais para representar in%orma-5es omitidas& ?bserve que usar valores especiais exatamente o que %a)emos no mundo real& Por exemplo, no mundo real, podemos utili)ar o valor especial =_= para denotar as 1oras trabal1adas por um certo empregado, se o valor real descon1ecido por alguma ra)o&* Besse modo, a idia geral simplesmente usar um valor especial apropriaQ do, distinto de todos os valores normais do atributo em questo, quando nen1um valor normal puder ser usado& ?bserve que o valor especial deve ser um valor do dom#nio aplicvel* ento, no exemplo de =1oras trabal1adas>, o tipo do atributo Y?MA'NMAFA"YABA' no simplesmente inteiro, mas sim inteiro somado a qualquer que se(a o valor especial& Agora, ser#amos os primeiros a admitir que o esquema precedente no muito elegante, mas ele tem a vantagem %undamental de no minar as bases l,gicas do modelo relacional& Por essa ra)o, no restante deste livro, simplesmente ignoraremos a possibilidade de suporte para nulos (exceto em certos contextos espec#%icos de '8", onde re%er$ncias ocasionais a nulos so inevitveis)& Donsulte a re%er$ncia @ ./&.0A para ver uma descri-o detal1ada do esquema de valores especiais& ./&5 M+D9M'?' B+ '8" ? suporte de '8" para nulos e !" segue as lin1as gerais da abordagem descrita nas 'e-5es ./&. a ./&5 anteriores& Assim, por exemplo, quando aplica uma clusula XY+M+ a alguma tabela N, a '8" elimina todas as lin1as de N para as quais a expresso nessa clusula XY+M+ tem valor %also ou unH (isto , no verdadeiro)& Bo mesmo modo, quando aplica uma clusula YA!K2E a alguma =tabela agrupada> E (consulte o Ap$ndice A), a '8" elimina todos os grupos de E para os quais a expresso nessa clusula YA!K2E tem valor %also ou unH (ou se(a, no verdadeiro)& Assim, simplesmente c1amamos sua aten-o para certos aspectos de !" espec#%icos para a '8" em si, em ve) de serem uma parte intr#nseca da abordagem de !" que discutimos anteriormente& 2ota; as implica-5es e rami%ica-5es do suporte de nulos de '8" so muito complexas& Para obter mais in%orma-5es, consulte o documento o%icial do padro @4&00A ou o tratamento tutorial detal1ado na re%er$ncia @4&.RA& Be%ini-o de dados Domo explicamos no Dap#tulo 5, 'e-o 5&5, colunas em tabelas bsicas em geral t$m um valor de%ault associado e esse valor de%ault %req3entemente de%inido de %orma expl#cita ou impl#cita, como nulo& Alm disso, colunas em tabelas bsicas sempre permitem nulos, a menos que 1a(a uma restri-o de integridade < provavelmente apenas 2?N 29"" < para a coluna em questo que os pro#ba expressamente& A representa-o de nulos dependente da implementa-o* contudo, ela deve ser tal que o sistema possa distin ?bserve que a :nica coisa que no %a)emos usar um nulo para esse prop,sito& 2o existe nada parecido com um nulo no mundo real& 5.R guir nulos de todos os valores no nulos poss#veis (embora a compara-o =nulo \ x> no resulte em verQ dadeirod)& +xpress5es sobre tabelas !imos no Dap#tulo 7, 'e-o 7&7, que o suporte expl#cito de C?K2 %oi acrescentado ] '8" com o padro '8"`R0& 'e a palavraQc1ave C?K2 tiver o pre%ixo "+FN, MKEYN ou F9"" (seguido opcionalmente pela palavra ?9N+M em cada caso), ento a (un-o em questo ser uma (un-o externa& Aqui esto alguns exemplos; F "+FN C?K2 FP ?2 F&Fi O FP&Fi F "+FN C?K2 FP 9'"2E ( Fi ) F "+FN 2AN9MA" C?K2 FP +ssas tr$s express5es so todas e%etivamente equivalentes, exceto pelo %ato de a primeira produ)ir uma tabela com duas colunas id$nticas (ambas c1amadas Fi) e as outras duas produ)irem uma tabela com apenas uma dessas colunas& A '8" tambm admite uma aproxima-o para a unio externa, que ela c1ama (un-o de unio (union (oin) ?s detal1es esto alm do escopo deste livro& +xpress5es condicionais Domo observamos no Dap#tulo /, as express5es condicionais so o anlogo de '8" para aquilo que estivemos c1amando de express5es booleanas (elas no explicadas em detal1es no Ap$ndice A)& 2o surpreende que essas express5es se(am a parte da '8" mais drasticamente a%etada por nulos e a !"& !amos nos contentar aqui com algumas observa-5es pertinentes& e Nestes para nulos; a '8" %ornece dois operadores de compara-o especiais, K' 29"" e K' 2?N 29"", para testar a presen-a ou a aus$ncia de nulos& A sintaxe ; Tconstrutor de lin1asS K' @ 2?N A 29"" (consulte o Ap$ndice A para ver os detal1es de Tconstrutor de lin1asS)& Y uma armadil1a para os no descon%iados; as duas express5es K' 2?N 29"" e 2?N (r K' 29"") no so equivalentesd Para ver uma explica-o, consulte a re%er$ncia @4&.R.& e Nestes para verdadeiro, %also, descon1ecido; se p uma expresso condicional entre par$nteses, ento as express5es a seguir tambm so express5es condicionais; p K' @ 2?N A NM9+ p K' t 2?N . FA"'+ p K' @ 2?N . 92G2?X2 ?s signi%icados dessas express5es so indicados pela tabela verdade a seguir; 500 P
verdade iro %also unH p
K ' NM9+ verdade iro %also %also p
K ' 2?N NM9+ %also verdade iro verdade iro p
K ' FA"'+ %also verdade iro %also p K 2?N verdade %also verdade ' FA"'+ iro iro p
K ' 92G2?X2 %also %also verdade iro p
K ' 2?N 92G2?X2 verdade iro verdade iro %also ?bserve, portanto, que as express5es p K' 2?N NM9+ e 2?N p no so equivalentesd 2ota; a expresso p K' 92G2?X2 corresponde ao nosso JAUF+(p)& & Dondi-5es de JANDY; a sintaxe de Tcondi-5es de matc1 S < consulte o Ap$ndice A < inclui uma op-o PAMNKA" us& F9"" (no mostrada e no discutida no Ap$ndice A) que pode a%etar o resultado se 1ouver nulos presentes; Tconstrutor de lin1asS JANDY @ 92K89+ . + PAMNKA" . F9"" A ( Texpresso de tabelaS Y ento seis casos di%erentes, dependendo de (a) a op-o 92K89+ ser especi%icada ou no, e (b) a op-o PAMNKA" vs& F9"" ser especi%icada ou no (e se %or, qual ela)& Porm, os detal1es so complexos e esto alm do escopo deste livro& Donsulte a re%er$ncia @4&.RA para ver uma discusso adicional& & Dondi-5es de +^K'N'; consulte a anota-o ] re%er$ncia @./&6A& +xpress5es escalares & ="iterais>; a palavraQc1ave 29"" pode ser usada como um tipo de representa-o literal de nulo ( por exemplo, em uma instru-o K2'+MN)& Porm, observe que essa palavraQc1ave no pode aparecer em todos os contextos nos quais os literais podem aparecer* como di) o padro, =no 1 TliteralS para um valor nulo, embora a palavraQc1ave 29"" se(a usada em alguns lugares para indicar que se dese(a um valor nulo> @4&00A& Assim, por exemplo, no poss#vel especi%icar explicitamente 29"" como um operando em uma compara-o simples < por exemplo, =XY+M+ ^ O 29""> no vlida& (A %orma correta , naturalmente, =XY+M+ ^ K' 29"">&) & D?A"+'D+; D?A"+'D+ o anlogo de '8" para nosso operador NF\92G (consulte a 'e-o ./&0)& & ?peradores de agregados; os operadores de agregados de '8" '9J, A!E, etc&, no se comporQ tam segundo as regras para operadores escalares explicadas na 'e-o ./&0* em ve) disso, simQ plesmente ignoram quaisquer nulos em seu argumento (exceto no caso de D?92N(*), onde nulos so tratados exatamente como se %ossem valores comuns)& Alm disso, se o argumento para um tal operador %or avaliado como um con(unto va)io, D?92N retornar )ero* todos os outros operadores retornaro nulo& (Domo observamos no Dap#tulo 7, esse :ltimo comportaQ mento logicamente incorreto, mas %oi assim que a '8"& %oi de%inida&) e ='ubconsultas escalares>; se uma expresso escalar na verdade uma expresso de tabela entre par$nteses < por exemplo, ('+"+DN F&DKBAB+ FM?J F XY+M+ F&Fi O ZFiW) < ento, em geral essa expresso de tabela ter de ser avaliada como uma tabela contendo exatamente uma coluna e exatamente uma lin1a& ? valor da expresso escalar ento tomado como, exatamente, o :nico valor escalar contido dentro dessa tabela& Porm, se a expresso de tabela %or avaliada como uma tabela de coluna :nica que no contm nen1uma lin1a, ento a '8" de%ine o valor da expresso escalar como nulo& D1aves As intera-5es entre nulos e c1aves em '8" podem ser resumidas assim; e D1aves candidatas; se(a D uma coluna componente de alguma c1ave candidata G de alguma tabela bsica& 'e G %or uma c1ave primria, a '8" no permitir que D conten1a nulos (em outras palavras, ela ir impor a regra de integridade de entidade)& Porm, se G no %or uma c1ave primria, a '8" permitir que D conten1a qualquer n:mero de nulos ((untamente com qualquer n:mero de valores no nulos distintos, claro)& 50. & D1aves estrangeiras; as regras que de%inem o que signi%ica (na presen-a de nulos) para um dado valor de c1ave estrangeira coincidir com algum valor da c1ave candidata correspondente so bastante complexas* omitimos os detal1es aqui, exceto para di)er que eles so basicamente os mesmos detal1es da condi-o de JANDY (ve(a a subse-o anterior)& ?s nulos tambm t$m implica-5es para as a-5es re%erenciais < DA'DAB+, '+N 29"" etc& < especi%icadas nas clusulas ?2 B+"+N+ e ?2 9PBAN+& ('+N B+FA9"N tambm admitida, com a interpreta-o ,bvia&) Jais uma ve), os detal1es so bastante complexos e esto alm do escopo deste texto* consulte a re%er$ncia @4&.RA para ver detal1es espec#%icos& '8" embutida & !ariveis indicadoras; considere o seguinte exemplo de uma instru-o ='+"+DN unitria> de '8" embutida (uma repeti-o do exemplo do Dap#tulo 4); +^+D '8" '+"+DN 'NAN9', DKBAB+ K2N? ;MA2G, ;DKBAB+ FM?J F XY+M+ Fi O ;EK!+2Fi * !amos supor que 1a(a uma possibilidade de o valor de 'NAN9' ser nulo para algum %ornecedor& +nto, a instru-o '+"+DN anterior %al1ar se o 'NAN9' selecionado %or nulo ('8"'NAN+ ser de%inida como o valor de exce-o 00000)& +m geral, se %or poss#vel que um valor a ser recuperaQ do se(a nulo, o usurio dever especi%icar uma varivel indicadora, alm da varivel de destino comum, assim; +^+D '8" '+"+DN 'NAN9', DKBAB+ K2N? ;MA2G K2BKDAN?M ;MA2GK2B, ;DKBAB+ FM?J F XY+M+ Fi O ;EK!+2Fi * KF MA2GK2B O Q. NY+2 ` 'NAN9' era nulo *` e&& * +2B KF 'e o valor a ser retornado %or nulo e uma varivel indicadora tiver sido especi%icada, ento essa varivel indicadora ser de%inida com o valor <. & ? e%eito sobre a varivel de destino comum ser dependente da implementa-o& & ?rdena-o; a clusula ?MB+M FU usada para impor uma ordena-o sobre as lin1as resultantes da avalia-o da expresso de tabela em uma de%ini-o de cursor& (+ claro que ela tambm pode ser usada em consultas interativas&) 'urge a questo; qual a ordena-o relativa para dois valores escalares A e F se A nulo, F nulo ou ambos_ A resposta de '8" a seguinte; .& Para %ins de ordena-o, todos os nulos so considerados iguais entre si& 0& Para %ins de ordena-o, todos os nulos so considerados maiores que todos os valores no nulos ou menores que todos os valores no nulos (a implementa-o de%ine qual das duas possibilidades se aplica)& ./&/ M+'9J? Biscutimos o problema da %alta de in%orma-5es e uma abordagem muito usada atualmente < embora muito ruim < para esse problema, baseada em nulos e na l,gica de tr$s valores (!")& +n%ati)amos o ponto de que nulo no um valor, embora se(a comum %alar como se ele %osse (por exemplo, di)endo que algum valor de atributo espec#%ico dentro de alguma tupla = nulo>)& 8ualquer compara-o na qual um comparando nulo avaliada como =o terceiro valor verdade> descon1ecido (abreviado como unH), o que (usti%ica o %ato da l,gica ser trivalorada& Nambm mencionamos que, pelo menos conceitualmente, podem existir muitos tipos di%erentes de nulos, e introdu)imos 92G como uma abrevia-o conveniente 500 (e expl#cita) para o tipo =valor descon1ecido>& +m seguida, exploramos as implica-5es de 92Gs e !" para express5es booleanas, os quanti%icaQ dores +^K'N' e F?MA"", express5es calculadas e os operadores relacionais produto, restri-o, pro(e-o, unio, interse-o e di%eren-a, e tambm os operadores de atuali)a-o K2'+MN e 9PBAN+& Kntrodu)imos os operadores K'\92G (que e%etua testes para 92G), KF\92G (que converte 92G em um valor no 92G) e JAUF+ (que converte unH em verdadeiro)& Biscutimos a questo de duplicatas na presen-a de 92Gs e observamos tambm que 92G e unH no so a mesma coisa& Bepois, examinamos algumas conseq3$ncias das idias anteriores& Primeiro, explicamos que certas equival$ncias so desmembradas em !" < isto , 1 equival$ncias vlidas em 0!"& mas no em !"& +m conseq3$ncia, tanto usurios quanto otimi)adores provavelmente cometero erros ao trans%ormar express5es& + mesmo que esses erros no se(am cometidos, a !" so%re do problema muito srio (=desmanc1aQpra)eres>) de no se a(ustar ] realidade < ou se(a, resultados corretos de acordo com a !", ]s ve)es so incorretos no mundo real& +nto, continuamos a descrever as implica-5es de nulos para c1aves primrias e c1aves estrangeiras (mencionando a regra de integridade de entidade e, em particular, a regra de integridade re%erencial revistada)& +nto, %i)emos uma digresso para explicar a (un-o externa& Porm, no recomendamos o suporte direto para essa opera-o (pelo menos no como ele usualmente entendido), porque acreditamos que existem solu-5es mel1ores para o problema que a (un-o externa pretende resolver < em particular, pre%erimos uma solu-o que %a-a uso de atributos com valor de rela-o& Jencionamos rapidamente a possibilidade de outras opera-5es =externas>, em particular a unio externa& +m seguida, examinamos o suporte de '8" para as idias anteriores& ? tratamento de '8" para a omisso de in%orma-5es amplamente baseado em !", mas ele consegue incluir um grande n:mero de complica-5es adicionais, a maioria delas alm do escopo deste livro& 2a verdade, a '8" consegue introdu)ir vrios de%eitos adicionais, alm dos de%eitos inerentes ] !" em si @./&6, ./&.0A& Jais ainda, esses de%eitos adicionais servem como mais um inibidor de otimi)a-o (como mencionamos no %inal do texto do Dap#tulo .7)& Finali)amos com as seguintes observa-5es; & !oc$ perceber que apenas arran1amos a super%#cie dos problemas que podem surgir de nulos e da !"& Porm, tentamos cobrir o assunto de maneira a deixar claro que os =bene%#cios> da abordagem da !" so bastante duvidosos& & Nambm devemos deixar claro que, mesmo que voc$ no este(a convencido dos problemas da !" em si, ainda seria recomendvel evitar os recursos de '8" correspondentes, devido aos =deQ %eitos adicionais> mencionados& & 2ossa recomenda-o para usurios de 'EFBs seria ento de que ignorassem completamente o suporte de !" do %ornecedor e usassem um esquema disciplinado de =valores especiais> (permanecendo assim %irmes na adeso ] l,gica de dois valores)& +sse esquema descrito em detal1es na re%er$ncia @./&.0A& Finalmente, repetimos o ponto %undamental a seguir, mencionado na 'e-o ./&6; se < em termos muitos in%ormais < o valor de um determinado atributo dentro de uma dada tupla em uma rela-o espec#%ica = nulo>, ento a posi-o desse atributo no conter na realidade absolutamente nada &&& o que implica que o =atributo> no ser um atributo, a =tupla> no ser uma tupla, a =rela-o> no ser uma rela-o e a base para o que estamos %a)endo (se(a o que %or) no ser mais a teoria das rela-5es matemticas& +^+MDlDK?' ./&. 'e A O 6, F O 5, D O 4 e B 92G, d$ os valores verdade das seguintes express5es; a& AOF?M(FSDA2BASB b& ASFA2B ( FTD?MK'92G (A<B)&) 50 c& ATD?MFTD?M2?N (AOD) d& F T ? ?M F O B ?M F S B e& JAUF+(ASFA2BFSD) %& JAUF+ ( K'92G ( B ) ) g& JAUF+ ( K'\92G ( A a F ) ) 1& KF92G(B,A)SFA2BKF92G(D, B)TF ./&0 'e(a a varivel de rela-o r que contm as seguintes tuplas; ( 6, 5, 4 ( 92G 5, 4 ) ( 6, 92G, 4 ) ( KC2G, 92G 4 ) ( 92G, 92G, KC2G ) Domo no texto do cap#tulo, supon1a que (a) os tr$s atributos, na ordem da esquerda para a direita , so c1amados A, F e D, respectivamente, e (b) todo atributo do tipo K2N+E+M& 'e ! uma varivel de intervalo que varia sobre r, d$ os valores verdade das seguintes express5es; a& +^K'N' ! ( !&F S 5 ) b& +^K'N' ! ( !&F S 0 A2B !&D S 5 ) c& +^K'N' ! ( JAUF+ ( !&D S ) d& +^K'N' ! ( JAUF+ ( K'92G ( !&D e& F?MA"" ! ( !&A S . ) %& F?MA"" ! ( !&F S . ?M K'92G ( !&F ) ) g& F?MA"" ! ( JAUF+ ( !&A S !&F ) ) ./& Falando em termos estritos, o operador K'\92G desnecessrio& Por qu$_ ./&4 2a re%er$ncia @.&6A, Dodd prop5e vers5es =talve)> de alguns (no todos) dos operadores da lgebra relacional& Por exemplo, o operador talve)Qrestri-o di%ere do operador normal de restri-o pelo %ato de retornar uma rela-o cu(o corpo contm as tuplas para as quais a condi-o de restri-o tem o valor unH em ve) de verQ dadeiro& Porm, tais operadores so estritamente desnecessrios& Por qu$_ ./&5 2a l,gica de dois valores (0!") 1 exatamente dois valores verdade, verdadeiro e %also& +m conseq3$ncia disso, 1 exatamente quatro operadores l,gicos mondicos (de um :nico operando) poss#veis < um que mapeia tanto verdadeiro quanto %also para verdadeiro, um que mapeia ambos para %also, um que mapeia verdadeiro para %also e viceQversa (esse 2?N, claro) e um que deixa os dois valores sem varia-o& + 1 exataQ mente .6 operadores didicos (de dois operandos) poss#veis, como indica a tabela a seguir; A / v v vvvvvvv%%%%%%%% v % vvvv%%%%vvvv%%%% v v vv%%vv%%vv%%vv%% v % v%v%v%v%v%v%v%v% Prove que, em 0!", todos os quatro operadores mondicos e todos os .6 didicos podem ser %ormulados em termos de combina-5es convenientes de 2?N e de A2B ou ?M (e portanto que no necessrio %ornecer suporte expl#cito para todos os vinte operadores)& ./&6 8uantos operadores l,gicos 1 em !"_ + em 4!"_ Be modo mais geral, quantos 1 em n!"_ ./&7 (Metirado da re%er$ncia @./&5A&) A Figura ./&5 representa alguns valores de amostra para uma ligeira varia-o sobre o banco de dados usual de %ornecedores e pe-as (a varia-o que a varivel de rela-o FP inclui um novo atributo M+Ji, e o atributo Pi nessa varivel de rela-o agora tem =92Gs permitidos>* a varivel de rela-o P irrelevante para o exerc#cio e %oi omitida)& Donsidere agora a consulta de clculo relacional; 504 F XY+M+ 2?N +^K'N' FP ( FP&Fi O F&Fi A2B FP&Pi O Pi ( ZP0W ) (onde F e FP so variveis de intervalos expl#citas)& 8ual das express5es a seguir (se 1ouver) uma interpreta-o correta dessa consulta_ a& ?bter %ornecedores que no %ornecem P0& b& ?bter %ornecedores sobre os quais no se sabe se %ornecem P0& c& ?bter %ornecedores sobre os quais se sabe que no %ornecem P0& d& ?bter %ornecedores sobre os quais ou se sabe que no %ornecem ou no se sabe se %ornecem P0& ./&/ Pro(ete um esquema de representa-o %#sica para tabelas bsicas de '8" nas quais as colunas podem conter nulos& FKE9MA . / & 5 9ma varia-o sobre %ornecedores e pe-as M+F+Mh2DKA' + FKF"K?EMAFKA . /& . +& F& Dodd; =Juc1 Ado about 2ot1ing>, em D& C& Bate, Melational Batabase Xritings . RR. Q. RR4& Meading, Jass&; AddisonQXeslem (.RR5)& Nalve) Dodd se(a o mais proeminente de%ensor de nulos e da !" como uma base para se lidar com in%orma-5es em %alta& +sse artigo contm o texto de um debate entre Dodd e o autor deste livro sobre o assunto& +le inclui este comentrio delicioso; =? gerenciamento de bancos de dados seria mais %cil se no existissem os valores em %alta> (Dodd)& ./&0 Yug1 BarIen; =Knto t1e 9nHnoIn>, em D& C& Bate Melational Batabase Xritings .R/5Q.R/R& Meading& Jass&; AddisonQXeslem (.RR0)& "evanta vrias outras quest5es com rela-o a nulos e !", das quais a seguinte talve) se(a a mais pro%unda; se (como dito na resposta ao +xerc#cio 5&R no Dap#tulo 5) NAF"+B++ corresponde a verdadeiro e NAF"+B9J corresponde a %also, e se NAF"+\B++ e NAF"+\B9J so as :nicas rela-5es poss#veis de grau )ero, ento o que corresponde a unH_ ./& Yug1 BarIen; =?uter(oin Iit1 2o 2ulls and FeIer Nears>, em D& C& Bate e Yug1 BarIen, MelationalBatabase Xritings . R/RQ . RR . & Meading, Jass& ; AddisonQXeslem (.RR0)& Prop5e uma variante simples de =(un-o externa> que no envolve nulos e que resolve muitos dos problemas que a (un-o externa deveria resolver& ./&4 D& C& Bate; =N1e ?uter Coin>, em Melational Batabases; 'elected Xritings& Meading, Jass& ; AddisonQXeslem (.R/6)& Analisa em pro%undidade o problema da (un-o externa e apresenta uma proposta para %ornecer suporte ] opera-o em uma linguagem como '8"& ./&5 D& C& Bate; =2?N Ks 2ot =2otWd (2otes on N1reeQ!alued "ogic and Melated Jatters)W, em D& C& Bate, Melation Batabase Xritings .R/5Q.R/R& Meading, Jass&; AddisonQXeslem (.RR0)& 'upon1a que ^ se(a uma varivel do tipo F??"+A2& +nto, ^ deve ter um dos valores; verdadeiro, %also ou unH& Assim, a declara-o =^ no verdadeiro> signi%ica que o valor de ^ unH ou %also& +m contraste, a declara-o =^ 2?N verdadeiro> signi%ica que o valor de ^ %also (ve(a a tabela verdade para 2?N)& 505 F FP F i F2? J+ 'NAN 9' DKBA B+ M+Ji . Fi Pi 8B+ M+J. Fi P. ( 00 M+J0 F0 P0 000 M+J F 92G 400 F i F 0 F
F 4 'mi t1 Con es Fla He Dla rH 00 .0 0 00 "ondres Paris Paris "ondres Assim, o 2?N de !" no o no da linguagem comum & & & +sse %ato ( %e) com que vrias pessoas (mcmsive os pro(etistas da '8" padro) trope-assem, e com certe)a isso acontecer outra ve)& ./&6 D& C& Bate; =+^K'N' Ks 2ot =+xistsWd ('ome "ogical FlaIs in '8"), em D& C& Bate, Melational Batabase Xritings .R/5Q .R/R& Meading, Jass& ; AddisonQXeslem (.RR0)& Jostra que o operador de '8" +^K'N' no o mesmo que o quanti%icador existenciam de !", porque sempre tem o vamor verdadeiro ou %also, nunca o valor unH, mesmo quando unH a resposta logicamente correta& ./&7 D& C& Bate; =Xatc1 ?ut %or ?uter Coin>, em D& C& Bate e Yug1 BarIen, Melational Batabase Xritings .R/RQ.RR.& Meading, Jass&; AddisonQXesmem (.RR0)& A 'e-o ./&5 deste cap#tulo mencionou o %ato de a (un-o externa so%rer de vrias =Propriedades Besagradveis>& +sse artigo resume tais propriedades da seguinte maneira; . & A (un-o j externa no uma restri-o do produto cartesiano& 0& A restri-o no distributiva sobre a (un-o externa& & =A \ F> no a mesma coisa que =A T F ?MA O F> (em !")& 4& ?s operadores de compara-o t no so transitivos (em !")& 5& A (un-o natural externa no uma pro(e-o da equi(un-o externa& +m seguida, o artigo considera o que est envomvido quando se acrescenta suporte para (un-o externa ] constru-o de '8" '+"+DNQFM?JQXY+M+& +le mostra que as Propriedades Besagradveis anteriores implicam que; .& +stender a clusula XY+M+ no %unciona& 0& 9sar opera-5es A2B em (un-5es externas e restri-5es no %unciona& & +xpressar a condi-o de (un-o na clusula XY+M+ no %unciona& 4& Cun-5es externas de mais de duas rela-5es no podem ser %ormuladas sem express5es anin1adas& 5& +stender a cmusula '+"+DN (apenas) no %unciona& ? artigo tambm mostra que muitos produtos existentes no mercado colidiram com tais considera-5es& ./&/ D& C& Bate; =Domposite Foreign Gems and 2ulls>, em D& C& Bate e Yug1 BarIen, Melational Batabase Xritings . R/RQ . RR . & Meading, Jass& ; AddisonQXeslem (.RR0)& ?s valores de c1aves compostas devem ter a possibilidade de serem total ou parcialmente nulos_ ? artigo discute essa questo& ./&R D& C& Bate; =N1reeQ!alued "ogic and t1e Meal Xormd>, em D& C& Bate e Yug1 BarIen, Melational Batabase Xritings . R/RQ . RR . & Meading, Jass& ; AddisonQXeslem (.RR0)& ./&.0 D& C& Bate; =?1 2o 2ot 2umls Again>, em D& C& Bate e Yug1 BarIen, Melational Batabase Xritings .R/RQ.RR.& Meading, Jass&; AddisonQXeslem (.RR0)& +sse artigo o%erece mais in%orma-5es sobre nulos do que voc$ talve) quisesse saber& ./&.. D& C& Bate; =A 2ote on t1e "ogical ?perators o% '8">, em Melational Batabase Xritings .RR.Q.RR4& Meading, Jass,; AddisonQXeslem (.RR5)& A !" tem tr$s valores verdade; verdadeiro, %also e unH (aqui abreviados como v, %e u, respectivamente)* assim, 1 * * O 07 operadores mondicos poss#veis em !", porque cada uma das poss#veis entradas, v, % e u, pode ser mapeada para cada uma das tr$s sa#das poss#veis, v, @e u& Amm disso, 1 R O .R&6/ operadores didicos poss#veis em !", como sugere a tabema a seguir; \\ v u % v v`u`% v`u`% v`u`% u v`u`% v`u`% v`u`% % v`u`% v`u`% v`u`% 506 Be modo mais geral, a l,gica de n valores envolve n elevado ] pot$ncia n operadores mondicos e n elevado ] pot$ncia n0 operadores didicos; Para qualquer n!" com n S 0, surgem as seguintes quest5es; & 8ual um con(unto adequado de operadores primitivos_ (Por exemplo, qualquer dos con(untos n2?N,A2Bo ou n2?N,?Mo um con(unto primitivo adequado para 0!"&) & 8ual um con(unto adequado de operadores :teis_ (Por exemplo, o con(unto n2?N,A2B,?Mo um con(unto :til adequado para 0!"&) +sse artigo mostra que o padro '8" (sob uma interpreta-o muito generosa) admite pelo menos, direta ou indiretamente, todos os .R&7.0 operadores de !"& Dontudo, devemos observar que em l,gica, os operadores operam sobre predicados, tanto quanto sobre proposi-5es, enquanto em '8" (mesmo sob a mencionada interpreta-o generosa) os operadores operam somente sobre proposi-5es& ./&.0 D& C& Bate; =Faults and Be%aults> (em cinco partes), em D& C& Bate, Yug1 BarIen e Bavid JcEoveran, Melational Batabase Xritings .RR4<.RR7& Meading, Jass&; AddisonQXeslem (.RR/)& Bescreve uma abordagem sistemtica para o problema de in%orma-5es perdidas baseada em valores esQ peciais e 0!", em ve) de nulos e !"& ? artigo argumenta com vigor que esses valores especiais so os que n,s usamos no mundo real < =no existe coisa nen1uma semel1ante a um nulo no mundo real> < e conseq3entemente, que seria dese(vel que nossos sistemas de bancos de dados se comportassem sob esse aspecto do mesmo modo que o mundo real& . / & . Bebabrata Bem e 'umit 'arHar; =A Probabilistic Melational Jodel and Algebra>, ADJ N?B' 0 . , 2:mero (setembro de .RR6)& Prop5e uma abordagem para a =incerte)a em valores de dados> baseada na teoria das probabilidades, em ve) de nulos e !"& ? =modelo relacional probabil#stico> uma extenso compat#vel do modelo relacional convencional& ./&.4 Dsar A& EalindoQ"egaria; =?uter(oins as Bis(unctions>, Proc& .RR4 ADJ 'KEJ?B Knt& Don%& on Janagement o% Bata, Jinneapolis, Jinn& (maio de .RR4)& o operador de (un-o externa em geral no um operador associativo @./&4.& +sse artigo caracteri)a (ustamente as (un-5es externas que so e as que no so associativas, e prop5e estratgias de implementa-o para cada caso& ./&.5 Dsar EalindoQ"egaria e Arnon Mosent1al; =?uter(oin 'impli%ication e Meordering %or 8uerm ?ptimi)ation>, ADJ N?B' 00, 2:mero . (mar-o de .RR7)& Apresenta =um con(unto completo de regras de trans%orma-o> para express5es envolvendo (un-5es exQ ternas& ./&.6 Pimus1 Eoel e Fala Kmer; ='8" 8uerm ?ptimi)ation; Meordering %or a Eeneral Dlass o% 8ueries>, Proc& .RR6 ADJ 'KEJ?B Knt& Don%& on Janagement o% Bata& Jontreal, Danad ((un1o de .RR6)& Domo a re%er$ncia @./&.5., esse artigo se relaciona com a trans%orma-o de express5es que envolvem (un-5es externas; =@2,sA propomos um mtodo para reordenar @umaA consulta de '8" contendo (un-5es, (un-5es externas e & & & agrega-5es && & @2,sA identi%icamos a necessidade de um primitivo e%iciente @ para auxiliar em tal reordena-o, que c1amaremosA sele-o generali)ada&> ./&.7 .& C& Yeat1; memorando interno da KFJ (abril de .R7.)& o artigo que introdu)iu o termo (e o conceito) =(un-o externa>& 507 0! " operadores inondicos operadores didicos 4 .6 ! " 07 .R&6/ 4! " 056 4&0R4&R67&0R6 && (n)**(n) (n)**() ./&./ GenQD1i1 "iu e Ma(s1eH1ar 'underraman; =Knde%inite and Jambe Kn%ormation in Melational Batabases>, ADJ N8B' .5, 2:mero . (mar-o de .RR0)& Dontm um con(unto de propostas %ormais para estender o modelo relacional de modo a lidar com in%orma-5es talve) (por exemplo, =a pe-a P7 talve) se(a preta>) e in%orma-5es inde%inidas ou dis(untivas (por exemplo, =a pe-a P/ ou a pe-a PR vermel1a>)& 'o introdu)idas tabelas . como um meio para representar in%orma-5es normais (de%inidas), in%orma-5es talve) e in%orma-5es inde%inidas& ?s operadores de restri-o, pro(e-o, produto, unio, interse-o e di%eren-a so estendidos para operar sobre tabelas .& ./&.R Bavid Jaier; N1e N1eorm o% Melational Batabases, MocHville, Jd&; Domputer 'cience Press (.R/)& ./&00 Bavid JcEoveran; =2ot1ing %rom 2ot1ing> (em quatro partes), em D& C& Bate, Yug1 BarIen e Bavid JcEoveran, Melational Batabases Xritings .RR4Q.RR7& Meading, Jass&; AddisonQXeslem (.RR/)& A Parte . dessa srie de quatro partes explica o papel crucial da l,gica em sistemas de bancos de dados& A Parte KK mostra porque essa l,gica deve ser especialmente a l,gica de dois valores (0!") e porque as tentativas de usar a l,gica trivalorada (!") so mal direcionadas& A Parte KKK examina os problemas que a l,gica de tr$s valores supostamente =resolveria>& Finalmente, a Parte K! descreve um con(unto de solu-5es pragmticas para os problemas que no envolvem a !"& ./&0 . 2ic1olas Mesc1er; JanmQ!alued "ogic& 2ova UorH, 2&U&; JcEraIQYill (.R6R)& ? texto padro& M+'P?'NA' A +^+MDlDK?' '+"+DK?2AB?' ./&. a& unH& b& verdadeiro& c& verdadeiro& d& unH (observe a nature)a antiintuitiva desse caso)& e& %also& %& %also (observe que K' 92G nunca retorna unH)& g& %also& 1& verdadeiro& ./&0 a& unH& b& unH& c& verdadeiro& d& %also& e& unH& %& verdadeiro& g& %also& ./& Bevido ] seguinte identidade; K'92G ( x ) JAUF+ ( x O x ) ./&4 Porque (por exemplo) =JAUF+ M+'NMKDN r XY+M+ p> o mesmo que =r XY+M+ JAUF+(p)>& ./&5 ?s quatro operadores mondicos podem ser de%inidos desta %orma (A o :nico operando); A 2?N(A) A ?M 2?N(A) A A2B 2?N(A) ?s .6 operadores didicos podem ser de%inidos da seguinte maneira (A e F so os dois operandos); A ?M 2?N(A) ?M F ?M 2?N(F?) A ?M 2?N(A) A2B / ?M 2?N(F) A 2?N(A) F 2?N(F) A ?M F A A2B F A ?M 2?N(F) A A2B 2?N(F) 2?N(A) ?M / 2?N(A) A2B / 2?N(A) ?M 2?N(F) 2?N(A) A2B 2?N(F) (2?N(A) ?M /) A2B (2?N(F) ?M A) (2?N(A) A2B F) ?M (2?N(F) A2B A) A prop,sito, para ver que no precisamos de A2B e ?M, observe que, por exemplo; 50/ A ?M / 2?N ( 2?N ( A ) A2B 2?N( F ) ./&6 !e(a a anota-o ] re%er$ncia @./&..A& ./&7 c& Para ver detal1es adicionais, consulte a re%er$ncia @./&5A& +xerc#cio complementar; apresente uma %ormula-o de clculo relacional para a interpreta-o b& ./&/ Bescrevemos rapidamente a representa-o usada no produto BF0 da KFJ& +m BF0, uma coluna que possa aceitar nulos representada %isicamente no banco de dados arma)enado por duas colunas, a pr,pria coluna de dados e uma coluna oculta de indicadores, com a largura de um bmte, a qual arma)enada como um pre%ixo para a coluna de dados real& 9m valor da coluna de indicadores %ormado por valores . em binrio indica que o valor correspondente da coluna de dados deve ser ignorado (isto , tomado como nulo)* um valor na coluna de indicadores %ormado por )eros binrios indica que o& valor correspondente na coluna de dados deve ser considerado genu#no& Porm, a coluna de indicadores est sempre ( claro) oculta do usurio& 50R Ai