Re: [pgbr-geral] Relacionamento Ternário com Foreign Key?

2012-12-13 Por tôpico Alexsander Rosa
Em 12 de dezembro de 2012 20:56, Renato Augusto renato@gmail.com escreveu:
 Boa noite

 Tenho uma estrutura semelhante as tabelas abaixo:


Cadê o Leandro? :-)


-- 
Atenciosamente,
Alexsander da Rosa
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Relacionamento Ternário com Foreign Key?

2012-12-13 Por tôpico Euler Taveira
On 12-12-2012 20:56, Renato Augusto wrote:
 A questão é a seguinte, tanto a tabela Device com a tabela Channel tem Foreign
 Key para Application, agora preciso fazer o relacionamento entre elas, que
 teoricamente seria um relacionamento binário entre as 2 chaves
 primárias(device_id, channel_id), porém preciso consistir que tanto Device
 quanto Channel sejam da mesma application, não sei se isto seria um
 relacionamento ternário, pois pelo modelo relacional correto não posso e nem
 consigo implementar app_id nesta tabela de junção.
 
Você não explicou para que precisa fazer esse relacionamento entre Device e
Channel... É alguma regra de negócio? Você não pode implementar isso a nível
de transação (digo, a cada operação que modifica dados você garante que a
outra tabela está sendo modificada também)? Por último, procure evitar
relacionamentos circulares; eles complicam o seu modelo e as regras de negócio.


-- 
   Euler Taveira de Oliveira - 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] Relacionamento Ternário com Foreign Key?

2012-12-13 Por tôpico Euler Taveira
On 13-12-2012 12:19, Renato Augusto wrote:
 Um Devices pode assinar vários Channel's da mesma Application em que ambos
 estão relacionados, assim como um Channel pode ser assinado por vários 
 Devices.

Até aí o modelo abaixo contempla:

Device  App  Channel

 Indiferente de regra de negócio, a questão é como consistir que em uma tabela
 associativa entre Device e Channel que eles pertençam a mesma Application. Eu
 poderia, sim, implementar app_id na PK de Devices e Channels, mas aí eu teria
 que ter uma chave composta e caso fizesse um FK tanto para Device quanto para
 Channel, teria que exportar toda a chave composta, deixando assim a estrutura
 mais poluída nas tabelas relacionadas.
 O que importa não é a regra de negócio, mas sim o problema em questão. E se a
 FK de Channel para Application fosse opcional? Como poderia consistir que,
 caso o Channel tivesse relação com Application, fosse a mesma Application de
 Device?
 Acredito que somente através de trigger.
 
Você está querendo desassociar o modelo das regras de negócio? Isso é um erro
de projeto! O modelo é feito a partir das regras de negócio (senão não haveria
a necessidade de modelar cada sistema; podíamos utilizar o modelo para
aquela determinada aplicação).

Deixa eu ver se consegui entender onde você quer chegar...

Device  AppDeviceChannel  Channel
v
|
|
   App


PS evite top-post e responda no contexto. Isso foi discutido semana passada 
[1].


[1] 
http://listas.postgresql.org.br/pipermail/pgbr-geral/2012-December/033763.html


-- 
   Euler Taveira de Oliveira - 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


[pgbr-geral] Relacionamento Ternário com Foreign Key?

2012-12-12 Por tôpico Renato Augusto
Boa noite

Tenho uma estrutura semelhante as tabelas abaixo:

Table Application
- app_id (PK)
- app_name

Table Device
- device_id (PK)
- device_name
- app_id (FK)

Table Channel
- channel_id (PK)
- channel_name
- app_id (FK)

A questão é a seguinte, tanto a tabela Device com a tabela Channel tem
Foreign Key para Application, agora preciso fazer o relacionamento entre
elas, que teoricamente seria um relacionamento binário entre as 2 chaves
primárias(device_id, channel_id), porém preciso consistir que tanto Device
quanto Channel sejam da mesma application, não sei se isto seria um
relacionamento ternário, pois pelo modelo relacional correto não posso e
nem consigo implementar app_id nesta tabela de junção.

Se alguém já passou por uma situação semelhante ou tem alguma luz, agradeço.


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


Re: [pgbr-geral] Relacionamento Ternário com Foreign Key?

2012-12-12 Por tôpico Tiago Adami
Em 12/12/2012 20:56, Renato Augusto renato@gmail.com escreveu:

 Boa noite

 Tenho uma estrutura semelhante as tabelas abaixo:

 Table Application
 - app_id (PK)
 - app_name

 Table Device
 - device_id (PK)
 - device_name
 - app_id (FK)

 Table Channel
 - channel_id (PK)
 - channel_name
 - app_id (FK)

 A questão é a seguinte, tanto a tabela Device com a tabela Channel tem
Foreign Key para Application, agora preciso fazer o relacionamento entre
elas, que teoricamente seria um relacionamento binário entre as 2 chaves
primárias(device_id, channel_id), porém preciso consistir que tanto Device
quanto Channel sejam da mesma application, não sei se isto seria um
relacionamento ternário, pois pelo modelo relacional correto não posso e
nem consigo implementar app_id nesta tabela de junção.

 Se alguém já passou por uma situação semelhante ou tem alguma luz,
agradeço.


Qual a relação de cardinalidade entre Channel e Device? 1-n, n-1,n-n? Se
por exemplo, Device for precedente a Channel, a pk de Device deve incluir
app_id e Channel deve ter uma fk com origem em Device, e não em App.

Enviado do meu Galaxy NOTE
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Relacionamento Ternário com Foreign Key?

2012-12-12 Por tôpico Tiago Adami
Em 12/12/2012 21:42, Renato Augusto renato@gmail.com escreveu:

 A cardinalidade entre Device e Channel é N-N, não existe precedência
entre elas. Ambas tem FK para Application

Inclua app_id na pk de Channel e Device e crie uma 4a tabela de
relacionamento referenciando ambas tabelas, mas com 3 colunas e todas na
pk: app_id, channel_id e device_id.

Enviado do meu Galaxy NOTE
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral