Ajuda com modelagem

PostgreSQL

13/09/2013

Tenho 3 tabelas referentes a produtos, [FERRAMENTAL], [ITENS DE CONSUMO], [EQUIPAMENTOS]. Estão em tabelas separadas pois armazenam dados diferentes (poucos campos são iguais).

Tenho uma terceira tabela [MOVIMENTAÇÃO] que registra a movimentação desses itens. O campo <item> pode se referir a qualquer uma das três tabelas, ou seja, pode ser tanto um FERRAMENTAL, um ITEN DE CONSUMO ou um EQUIPAMENTO.

Como ficaria esse relacionamento?
Matheus Sraiva

Matheus Sraiva

Curtidas 0

Respostas

Alan Mario

Alan Mario

13/09/2013

você citou as tabelas mas eu não entendi o banco como um todo, é de que? venda, cadastro...hospitalar...
GOSTEI 0
Matheus Sraiva

Matheus Sraiva

13/09/2013

nada nesse sentido, na verdade são itens de um almoxarifado.
As tabelas devem ficar separadas nessas categorias, pois a maioria dos campos necessários para cada uma delas são diferentes.
Meu objetivo é criar uma tabela única de movimentação desses materiais, não quero ter que criar uma tabela de movimentação para cada categoria de material. Exemplo

[MOVIMENTAÇÃO DE FERRAMENTAL], [MOVIMENTAÇÃO DE ITENS DE CONSUMO], [MOVIMENTAÇÃO DE EQUIPAMENTOS]

Não quero fazer isso.
GOSTEI 0
Alan Mario

Alan Mario

13/09/2013

tambem acho que vc deveria colocar tudo isso em um tabela, ficaria mais enxuto, coloca só algo relacionado a chave primaria dessa tabela.

[MOVIMENTAÇÃO DE FERRAMENTAL], [MOVIMENTAÇÃO DE ITENS DE CONSUMO], [MOVIMENTAÇÃO DE EQUIPAMENTOS]


GOSTEI 0
Matheus Sraiva

Matheus Sraiva

13/09/2013

De qualquer forma... Tem como fazer esse relacionamento da forma que eu quero ou é impossível?
GOSTEI 0
Alan Mario

Alan Mario

13/09/2013

liste todas as suas tabelas.
GOSTEI 0
Matheus Sraiva

Matheus Sraiva

13/09/2013

[url]http://img571.imageshack.us/img571/3991/eu57.png[/url]

Quero deixar as tabelas separadas como estão, e quero uma tabela única para movimentação das três. Não quero juntar.
Isso é praxe, se juntar tudo numa só o resto seria tranquilo e eu nem estaria aqui.

O desafio é fazer uma relacionamento dessa forma que eu estou propondo, se é que tem como relacionar.
GOSTEI 0
Marcos Saffran

Marcos Saffran

13/09/2013

Boa noite Matheus,

crie, na tabela de movimentação um campo para diferenciar de qual tabela pertence o produto.

tbMovimentacao
id_tbMovimentacao
id_Produto
tbOrigem (aqui você informa de qual tabela o produto pertence - pode ser o nome da tabela, ou mesmo um número que a identifique)
etc.
GOSTEI 0
Marcos Saffran

Marcos Saffran

13/09/2013

Boa noite Matheus,

crie, na tabela de movimentação um campo para diferenciar de qual tabela pertence o produto.

tbMovimentacao
id_tbMovimentacao
id_Produto
tbOrigem (aqui você informa de qual tabela o produto pertence - pode ser o nome da tabela, ou mesmo um número que a identifique)
etc.
GOSTEI 0
Matheus Sraiva

Matheus Sraiva

13/09/2013

Nesse caso então a tabela de movimentação não terá um relacionamento direto com as outras tabelas? Ou seja, não haverá chave estrangeira?

Boa noite Matheus,

crie, na tabela de movimentação um campo para diferenciar de qual tabela pertence o produto.

tbMovimentacao
id_tbMovimentacao
id_Produto
tbOrigem (aqui você informa de qual tabela o produto pertence - pode ser o nome da tabela, ou mesmo um número que a identifique)
etc.
GOSTEI 0
Marcos Saffran

Marcos Saffran

13/09/2013

Bom dia Matheus,

nesse caso não haverá chave estrangeira, apenas os campos referenciando a tabela e o código, imaginei que o gerenciamento dessas referências seja feito por um programa.

Outra ideia que tive é criar um produto em cada tabela com um código específico, por exemplo 1, então, na tabela de movimentação cria-se três chaves estrangeiras, cada uma ligando a uma tabela diferente, então ao criar a movimentação, o código do produto irá para a chave estrangeira correspondente e as outras duas recebem o código específico, 1.

Não sei se estou conseguindo ser claro, mas se tiver alguma dúvida me avise.
GOSTEI 0
Marcos Saffran

Marcos Saffran

13/09/2013

Bom dia Matheus,

nesse caso não haverá chave estrangeira, apenas os campos referenciando a tabela e o código, imaginei que o gerenciamento dessas referências seja feito por um programa.

Outra ideia que tive é criar um produto em cada tabela com um código específico, por exemplo 1, então, na tabela de movimentação cria-se três chaves estrangeiras, cada uma ligando a uma tabela diferente, então ao criar a movimentação, o código do produto irá para a chave estrangeira correspondente e as outras duas recebem o código específico, 1.

Não sei se estou conseguindo ser claro, mas se tiver alguma dúvida me avise.
GOSTEI 0
Matheus Sraiva

Matheus Sraiva

13/09/2013

um campo na tabela de movimentação que vai apontar com chave estrangeira para tabelas diferentes? várias chaves estrangeira em um mesmo campo?
GOSTEI 0
Marcos Saffran

Marcos Saffran

13/09/2013

Na tabela movimentação seriam 3 chaves estrangeiras, uma para equipamento, uma para itensconsumo e outra para ferramental.

Assim, se o código específico criado nas três tabelas seja o 1 e você movimente o produto de código 123 da tabela ferramental teremos:
fk_equipamento = 1
fk_itensconsumo = 1
fk_ferramental = 123,

se o produto movimentado for de código 123 da tabela equipamento, teremos:

fk_equipamento = 123
fk_itensconsumo = 1
fk_ferramental = 1
GOSTEI 0
Matheus Sraiva

Matheus Sraiva

13/09/2013

Ummm, então teria-se que acrescentar mais esses três campos na tabela de movimentação? Um campo que irá apontar (FK) para Ferramentas, ou que irá apontar (FK) para Itensdeconsumo e outro que irá apontar (FK) para Equipamentos?
Se assim for acho que é mais enxuto deixar o relacionamento a cargo da aplicação mesmo.
GOSTEI 0
Marcos Saffran

Marcos Saffran

13/09/2013

É isso mesmo, também acho melhor deixar a cargo da aplicação.
GOSTEI 0
POSTAR