Re: [pgbr-geral] Relacionamento Ternário com Foreign Key?
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?
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?
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?
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?
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?
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