none
Relacionamento Tabelas RRS feed

  • Pergunta

  • Olá tenho uma tabela Endereco que deve servir tanto para Funcionario quanto para Fornecedor: 
    1 Funcionario possui 1 Endereco
    1 Fornecedor possui 1 Endereco

    Estou com duvida de como crio este relacionamento sem ter inconsistências.

    quarta-feira, 4 de março de 2015 17:21

Respostas

  • Ou vc cria uma tabela intermediaria para cada tabela, ou seja, Uma tabela FonecedorEndereço e uma tabela FuncionarioEndereço ou vc adiciona o campo enderçoID dentro de cada tabela.. Desta forma voce gantente a unicidade da tabela endereço.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Andrey Mariano quinta-feira, 5 de março de 2015 10:29
    quarta-feira, 4 de março de 2015 18:01
  • Andrey,

    Vc deveria criar campos com a chave de endereço nas tabelas Funcionário e Fornecedor. Além disso, será necessário especificar ainda uma chave estrangeira a partir destes 2 novos campos, de forma a garantir a integridade dos dados.

    Segue um link com informações a respeito:

    https://msdn.microsoft.com/pt-br/library/ms189049.aspx

    quarta-feira, 4 de março de 2015 17:48
  • Neste caso eu diria que Fornecedor e Funcionario deveriam ter um campo endereço.

    Ficaria assim:

    Tabela Fornecedor

    ID ,Nome, EndereçoID, etc..

    Tabela Funcionario

    ID ,Nome, EndereçoID, etc..

    Tabela Endereço

    ID, Logradouro, Cidade, CEP, etc.

    No momento em que vc insere um novo funcionario ou fornecedor voce primeiro vai criar o registro do endereço e e recurepar o id deste. Depois vai criar o registro do funcionario ou fornecedor.

    Como o ID do endereço é unico voce nao tera problemas de conflito.

    NAso recomendo fazer o contrario, pois neste caso voce precisaria de dois campos a mais na tabela endereço (fonecedorid e funcionarioid) e criar uma complicada regra de negocio para adminsitrar esses dois campos

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Andrey Mariano quinta-feira, 5 de março de 2015 17:04
    quinta-feira, 5 de março de 2015 16:10

Todas as Respostas

  • É a tabela endereço que possui o codigo do funcionario ou fornecedor, ou é o funcionario ou fornecedor que tem o codigo do endereço?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quarta-feira, 4 de março de 2015 17:44
  • Andrey,

    Vc deveria criar campos com a chave de endereço nas tabelas Funcionário e Fornecedor. Além disso, será necessário especificar ainda uma chave estrangeira a partir destes 2 novos campos, de forma a garantir a integridade dos dados.

    Segue um link com informações a respeito:

    https://msdn.microsoft.com/pt-br/library/ms189049.aspx

    quarta-feira, 4 de março de 2015 17:48
  • Como garantir que um mesmo endereço não está sendo referenciado tanto em fornecedor quanto em funcionário?
    quarta-feira, 4 de março de 2015 17:55
  • Ou vc cria uma tabela intermediaria para cada tabela, ou seja, Uma tabela FonecedorEndereço e uma tabela FuncionarioEndereço ou vc adiciona o campo enderçoID dentro de cada tabela.. Desta forma voce gantente a unicidade da tabela endereço.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Andrey Mariano quinta-feira, 5 de março de 2015 10:29
    quarta-feira, 4 de março de 2015 18:01
  • Andrey,

    Quando temos este tipo de cenário, onde de um lado muitos funcionários podem ter mais de um endereço e do outro muitos fornecedores também podem ter mais de um endereço, isso é conhecido na Modelagem de Banco de Dados, com base, no Modelo Entidade Relacionamento de Relacionamento Muitos para Muitos, onde a próprio relacionamento se torna a entidade "tabela" que vai armazenar as informações sobre funcionários e fornecedores e seus respectivos endereços.


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 4 de março de 2015 23:24
  • mais é um relacionamento 1 para 1
    quinta-feira, 5 de março de 2015 10:28
  • Andrey,

    Neste caso, em uma das entidades "tabelas" você terá que adicionar o campo que será responsável em armazenar o código do funcionário ou fornecedor.


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 5 de março de 2015 14:33
  • Neste caso eu diria que Fornecedor e Funcionario deveriam ter um campo endereço.

    Ficaria assim:

    Tabela Fornecedor

    ID ,Nome, EndereçoID, etc..

    Tabela Funcionario

    ID ,Nome, EndereçoID, etc..

    Tabela Endereço

    ID, Logradouro, Cidade, CEP, etc.

    No momento em que vc insere um novo funcionario ou fornecedor voce primeiro vai criar o registro do endereço e e recurepar o id deste. Depois vai criar o registro do funcionario ou fornecedor.

    Como o ID do endereço é unico voce nao tera problemas de conflito.

    NAso recomendo fazer o contrario, pois neste caso voce precisaria de dois campos a mais na tabela endereço (fonecedorid e funcionarioid) e criar uma complicada regra de negocio para adminsitrar esses dois campos

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Andrey Mariano quinta-feira, 5 de março de 2015 17:04
    quinta-feira, 5 de março de 2015 16:10