Isso aí, chave primária é só uma chave, não precisa ser a "sua" principal chave no modelo. No caso dos ORM's que gostam de usar os famigerados "ID's", deixe que eles usem isso, vc usa as suas chaves e doutrina os seus desenvolvedores.
Em 25 de agosto de 2016 14:54, Guimarães Faria Corcete DUTRA, Leandro < l...@dutras.org> escreveu: > 2016-08-25 14:41 GMT-03:00 Tiago José Adami <adam...@gmail.com>: > > > > Mas o uso de UK's (você se refere a UNIQUE INDEXES, certo?) > > Na verdade, chaves alternativas. Uma relação tem n chaves, onde n >= > 1. Assim, além da chave primária pode haver o outras chaves, onde o > >= 0. É irrelevante qual das chaves se escolhe como primária, esse > conceito de chave primária está obsoleto e é vazio. > > > > > não > > garante a integridade lógica entre as tabelas, apenas entre os > > registros de uma só tabela. > > Não exatamente, a função das chaves alternativas, além de documentar o > modelo, tornando-o mais transparente (de fácil compreensão), é > justamente possibilitar a convivência de chaves naturais e artificial; > nos raros casos em que há exagero de consumo de memória por uso de > chaves naturais complexas se reproduzindo em tabelas filhas muito > maiores que as pais, pode-se ‘exportar’ a chave artificial, garantindo > a integridade referencial, enquanto as naturais seguem garantido a > unicidade. Mas há que se lembrar que cada chave artificial é um > atributo e um índice a mais, custando não apenas memória mas também > E/S. > > Creio que não é esse caso que exemplificaste abaixo, é? > > > > Por exemplo, eu poderia ter a tabela de > > reservas como antes: > > > > CREATE TABLE reserva ( > > /* PK artificial, única */ > > id_reserva SERIAL NOT NULL, > > > > /* FK tabela ITEM_RESERVA */ > > id_item_reserva INTEGER NOT NULL, > > > > /* FK tabela PESSOA */ > > id_pessoa INTEGER NOT NULL, > > > > (...) > > ) > > > > Uma das regras do sistema é que apenas servidores do próprio campus > > possam fazer reservas dos itens do seu campus. > > > > Nesse modelo com chaves artificiais acima, mesmo que haja um índice > > único não impede de fazer uma reserva de um item do campus A para uma > > pessoa do campus B. Só se você implementar um TRIGGER que valide isso > > e retorne uma exceção, mas aí já começa a complicar demais o modelo. > > > -- > 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 >
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral