Re: [pgbr-geral] Definição

2017-11-24 Por tôpico Marcio A. Sepp


> Em 24 de nov de 2017, às 21:06, Leandro Guimarães Faria Corcete DUTRA 
>  escreveu:
> 
>> Le ven. 24 nov. 2017 à 19:09, Marcio A. Sepp  
>> a écrit :
>> o campo c2t2 ele eh a chave natural para a tabela. Soh pensei em talvez 
>> utilizar os dois campos na chave por motivo de acoplamento para as tabelas 
>> que se referenciarem a t2
> 
> Então realmente está errado.  Uma chave natural deve ser a primária, 
> geralmente; de qualquer maneira, declarar uma chave que inclua a primária e 
> mais atributos é um erro grave.  Basta declarar o outro atributo como chave 
> estrangeira para a outra relação (tabela).
> 
> 
Muito obrigado.


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Definição

2017-11-24 Por tôpico Leandro Guimarães Faria Corcete DUTRA
Le ven. 24 nov. 2017 à 19:09, Marcio A. Sepp 
 a écrit :
o campo c2t2 ele eh a chave natural para a tabela. Soh pensei em 
talvez utilizar os dois campos na chave por motivo de acoplamento 
para as tabelas que se referenciarem a t2


Então realmente está errado.  Uma chave natural deve ser a primária, 
geralmente; de qualquer maneira, declarar uma chave que inclua a 
primária e mais atributos é um erro grave.  Basta declarar o outro 
atributo como chave estrangeira para a outra relação (tabela).



--
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (61)  3546 7191 gTalk: xmpp:leand...@jabber.org
+55 (61) 99302 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

Re: [pgbr-geral] Definição

2017-11-24 Por tôpico Marcio A. Sepp


> Em 24 de nov de 2017, às 17:13, Leandro Guimarães Faria Corcete DUTRA 
>  escreveu:
> 
>> Le vendredi 24 novembre 2017 à 16:46 -0200, Márcio A. Sepp a écrit :
>> 
>> create table t2
>> ( c1t1 integer,
>>  c2t2 integer,
>>  c3t2 integer,
>> primary key (c1t1, c2t2),
>> foreign key (c1t1) references t1 (c1t1),
>> unique (c2t2));
> 
> Chave primária (PRIMARY KEY) e alternativa (UNIQUE) são conceitualmente
> equivalentes — ambas são chaves candidatas.
> 
>Assim, pergunto-me se faz sentido que uma chave composta também
> contenha uma outra chave; em outros termos, que uma chave composta seja
> constituída de uma chave (c2t2) e mais outro atributo (c1t1).
> 
>Como teu modelo está com nomes opacos (não significativos) e
> não está comentado, não consigo entendê-lo.
> 
> 
Desculpe, eu omiti uma informação importante. No caso o campo c2t2 ele eh a 
chave natural para a tabela. Soh pensei em talvez utilizar os dois campos na 
chave por motivo de acoplamento para as tabelas que se referenciarem a t2

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Definição

2017-11-24 Por tôpico Leandro Guimarães Faria Corcete DUTRA
Le vendredi 24 novembre 2017 à 15:58 -0300, Tiago Brasil a écrit :
> 
> create table t2
> ( c1t1 integer,
>   c2t2 integer,
>   c3t2 integer,
> primary key (c1t1, c2t2),
> foreign key (c1t1) references t1 (c1t1),
> unique (c2t2)); **n necessita dessa linha visto que primary key ja
> sao unique e not null por padrão

Não, no caso o que é chave primária é a combinação dos dois atributos. 
O que está curioso é que um desses atributos também é chave; isso
parece estranho, mas não é simples redundância: que dois atributos
sejam chave não significa que um deles isoladamente também o seja.


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (61) 3546 7191  gTalk: xmpp:leand...@jabber.org
+55 (61) 9302 2691ICQ/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

Re: [pgbr-geral] Definição

2017-11-24 Por tôpico Leandro Guimarães Faria Corcete DUTRA
Le vendredi 24 novembre 2017 à 16:46 -0200, Márcio A. Sepp a écrit :
> 
> create table t2
> ( c1t1 integer,
>   c2t2 integer,
>   c3t2 integer,
> primary key (c1t1, c2t2),
> foreign key (c1t1) references t1 (c1t1),
> unique (c2t2));

Chave primária (PRIMARY KEY) e alternativa (UNIQUE) são conceitualmente
equivalentes — ambas são chaves candidatas.

Assim, pergunto-me se faz sentido que uma chave composta também
contenha uma outra chave; em outros termos, que uma chave composta seja
constituída de uma chave (c2t2) e mais outro atributo (c1t1).

Como teu modelo está com nomes opacos (não significativos) e
não está comentado, não consigo entendê-lo.


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (61) 3546 7191  gTalk: xmpp:leand...@jabber.org
+55 (61) 9302 2691ICQ/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

Re: [pgbr-geral] Definição

2017-11-24 Por tôpico Fabrízio de Royes Mello
Em 24 de novembro de 2017 16:58, Tiago Brasil 
escreveu:
>
>
> create table t2
> ( c1t1 integer,
>   c2t2 integer,
>   c3t2 integer,
> primary key (c1t1, c2t2),
> foreign key (c1t1) references t1 (c1t1),
> unique (c2t2)); **n necessita dessa linha visto que primary key ja sao
unique e not null por padrão
>
> De resto está correto.
>

Depende, porque se a cardinalidade do modelo for 1:1 então ele precisará
essa restrição, ou melhor, colocar ela como PK na t2.

Att,

--
   Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Definição

2017-11-24 Por tôpico Tiago Brasil
create table t2
( c1t1 integer,
  c2t2 integer,
  c3t2 integer,
primary key (c1t1, c2t2),
foreign key (c1t1) references t1 (c1t1),
*unique (c2t2)); **n necessita dessa linha visto que primary key ja sao
unique e not null por padrão*

*De resto está correto.*

2017-11-24 15:46 GMT-03:00 Márcio A. Sepp :

>
>
> Boa tarde,
>
>
> Por favor, está correta esta definição ou estou fazendo algo que não
> deveria
> ser feito pelo campo justamente ser chave?
>
> create table t1
> ( c1t1  integer,
>   c2t1  integer,
> primary key (c1t1));
>
>
> create table t2
> ( c1t1 integer,
>   c2t2 integer,
>   c3t2 integer,
> primary key (c1t1, c2t2),
> foreign key (c1t1) references t1 (c1t1),
> unique (c2t2));
>
>
>
> Att.
> Márcio A. Sepp
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
*Tiago Menezes Brasil*

*Oracle Database 12c - Administrator Certified Associate*
*Bacharel em Ciências da Computação* (*BCC*) - CESUPA
*Linkedin: http://www.linkedin.com/in/dbatiagomnzs
*
--* Belém - PA - Brasil* --
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral