Le mercredi 04 octobre 2017 à 17:36 -0300, Felipe Moura a écrit : > > A ideia é montar uma view usando union que busque pessoas ou unidade > então ficaria algo assim > > SELECT CODIGO, NOME, 1 as tipo FROM pessoa > UNION > SELECT CODIGO, NOME, 2 as tipo FROM unidade
Isso cria uma anomalia que normalmente evitamos em se tratando de relações armazenadas (base): o significado do atributo código depende do valor doutro atributo. Entretanto, como se trata duma relação derivada (visão), não vejo maiores problemas. Enquanto não for usar isso como base para outras relações, para transações, para operações… para meros relatórios e consultas, não deve causar nenhuma catástrofe. > Alguns colegas não acham legal que o campo codigo possa ser tanto > pessoa quanto unidade e sugeriram que o certo seria algo assim: > > SELECT CODIGO_PESSOA, 0 AS CODIGO_UNIDADE, NOME, 1 as tipo FROM > pessoa > UNION > SELECT 0 AS CODIGO_PESSOA, CODIGO_UNIDADE, NOME, 2 as tipo FROM > unidade Você evita o problema apontado acima, já que morre o código genérico; não sei se vale a pena o trabalho adicional. Se for base para transações, por exemplo, seria necessária a clareza adicional, mas de qualquer maneira misturar dois atributos numa única relação já não seria recomendável nem como base para outras relações, nem para operações. Resumindo, para meras consultas e relatórios, nenhuma das duas é muito ruim. -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 gTalk: xmpp:leand...@jabber.org +55 (61) 9302 2691 ICQ/AIM: aim:GoIM?screenname=61287803 BRAZIL GMT−3 MSN: msnim:chat?contact=lean...@dutra.fastmail.fm _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral