Pular para o conteúdo
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #78546
    drhoffman
    Participante

      boas pessoal, tou aqui com uma duvida . é o seguinte, tou a fazer um proj pa faculdade para uma seguradora automovel e a minha duvida consiste no seguinte! tenho um cliente( que é o que paga) e tenho um segurado(aquele a quem o seguro e dirigido) , num contrato de seguro o segurad e o cliente podem ser a mesma pessoa como podem ser pessoas diferentes! eu tinha criado uma tabela segurado e outra cliente mas o meu professor disse me para criar apenas uma tabela cliente pois se o cliente e segurado fossem a mesma pessoa ia haver repeticao de dados! a tabela cliente liga a seguros atraves de um relacionamento 1:n em que o n fica do lado do seguro! o que eu nao percebo é como se o cliente e o segurado forem pessoas diferentes como ´+e que eu apenas com uma tabela cliente consigo distinguir ambos! podiam me ajudar?

      #78547
      chduarte
      Participante

        Voce pode criar uma coluna person_type. Se ele for cliente, este campo sera -1, se nao sera o id principal.

        Tome como o seguinte exemplo a tabela:

        funcionarios (id, name, manager)

        id = 1 | name = Gerente geral | manager = -1
        id = 2 | name = Gerente de setor | manager = 1
        id = 3 | name = jose | manager = 2
        id = 4 | name = joao | manager = 2
        id = 5 | name = Gerente de loja | manager = 1
        id = 6 | name = Maria | manager = 5

        E assim por diante. Note que o Gerente geral nao tem manager, logo ele é o topo da raiz.

        Teremos entao:
        – Gerente geral
        — Gerente de setor
        —- jose
        —- joao
        — Gerente de loja
        —– Maria

        []

        #78549
        drhoffman
        Participante

          boas, mas eu tou na parte ainda do modelo relacional! tipo! o meu professor disse me pa criar uma tabela clientes ligada ao contrato! e que a tabela contrato ia receber o id_cliente e o id_segurado como chave estrangeira! nesta situacao a tabela cliente tem que ter uam chave primaria com id_cliente e id_segurado certo? mas o que nao consigo entender é quando o segurado e o cliente sao pessoas diferentes como eide registar!

          por exemplo

          tabela cliente

          id_cliente id_segurado morada
          1 1 rua….

          neste caso e facil! i cliente e o seguro sao a mm pessoa!

          mas por exemplo

          id_cliente id_segurado morada
          1 2 rua….

          nesta situacao a morada e do cliente ou e do segurado? e esta parte que nao consigo perceber! quando eles sao pessoas diferentes como vao ficar representados na tabela cliente?

          #78550
          chduarte
          Participante

            Exatamente como no modelo do primeiro post.

            id_cliente id_segurado rua


            1 0 rua 1
            2 0 rua 2
            3 1 rua 3
            4 1 rua 4
            5 2 rua 5

            No caso acima se o id_segurado = 0 significa que ele é segurado, senao ele é cliente do segurado xxx, veja o campo id_segurado. O cliente 3 é segurado do cliente 1. A rua do cliente 3 é rua 3 e do seu segurado é rua 1.

            A primary key sao os campos (id_cliente,id_segurado) e vc gera uma sequence para o campo id_cliente e uma trigger para inserir automaticamente neste campo.

            O campo id_segurado é default 0.

            []

            #78553
            itiburski
            Participante

              Você não vai distinguir o cliente e o segurado através da tabela de clientes, mas sim através dos campos id_cliente e id_segurado da tabela de contrato de seguros. A partir do momento que esses campos contenham códigos diferentes, você sabe que tratam-se de pessoas diferentes. No caso de você precisar fazer uma consulta SQL para retornar o nome do cliente e o nome do segurado, você vai precisar incluir duas “instancias” da tabela de cliente.

              SELECT CONT.NUMERO, CLI.NOME, SEG.NOME
              FROM CLIENTE CLI, CLIENTE SEG, CONTRATO_SEGURO CONT
              WHERE CLI.ID = CONT.ID_CLIENTE
              AND SEG.ID = CONT.ID_SEGURADO

              Dessa forma, pode-se distinguir quem é o cliente (CLI) e quem é o segurado (SEG).

              Espero ter clareado um pouco as coisas. Se não ficar claro, poste suas novas dúvidas.

              #80103
              tuche
              Participante

                Olá, uma dica crie um tabela chamada entidade com os campos comuns entre cliente e seguradora, depois crie duas tabelas fracas, ou seja, cuja a chave primária será composta pela chave da tabela entidade (relacionamento identificado), uma dessas tabela irá ser chamada de cliente, onde constará campos característicos do cliente, e outra será chamada de seguradora, com os campos característicos da seguradora. Depois crie uma tabela contrato, e relacione duas vezes a tabela entidade com a tabela contrato (relacionamento não identificado), mas para diferenciar os relacionamentos use rolenames para os relacionamentos. Ainda, poderia criar uma tabela contrato, e relacionar a tabela entidade (relacionamento não identificado – caracteriza a seguradora), em seguida cria uma tabela contratosegurado (entidade fraca), e relaciona as tabelas contrato e entidade (relacionamento identificado), esta tabela irá representar vários segurados para uma contrato. Espero ter ajudo, qualque dúvida para email que envio o modelo implementado.

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.
              plugins premium WordPress