none
Lógica RRS feed

  • Pergunta

  • Estou desenhando um novo BD e deparei com o sequinte problema:

     

    Tabela de Usuários: tenho que informar o órgao do usuário

    Tabela Principal: Tenho que informar o órgão emitente e o órgão executor do serviço

     

    Regras:

    • Os usuários podem pertencer a qualquer órgao;
    • Apenas alguns órgãos podem emitir ou solicitar serviços;
    • Apenas alguns órgaos podem executar serviços.
    • Alguns órgãos emitentes podem executar serviços e apenas alguns  órgãos executores podem emitir ou solicitar serviços.

    Dúvidas:

    1. Criar apenas uma tabela de órgãos com campos boleanos: "Emitente" e "Executor". Neste caso como ficaria o relacionamento com a tabela principal, uma vez que ela tem os dois campos?
    2. Criar uma tabela PrincipalServicos com relacionamento 1x1?
    3. Criar treis tabelas de Órgãos?

     

     

    sábado, 11 de agosto de 2007 07:10

Respostas

  • Oi !

     

    A tabela usuários nào possui os campos emitente e executor. Possui o código do órgão, ligando o usuário ao órgão ao qual pertence.

     

    A tabela órgão tem os campos Emitente e Executor para determinar o que os órgãos podem fazer.

     

    Uma tabela de serviços estará relacionada com a tabela de órgãos duas vezes. A tabela de serviços irá conter :

     

    chaveprimaria

    CodOrgaoEmitente

    CodOrgaoExecutor

     

    Então você observa que tanto através de CodOrgaoEmitente como através de CodOrgaoExecutor a tabela de serviços fica ligada com a tabela de órgãos.

     

    Algumas das restrições podem necessitar de functions chamadas a partir de constraints para funcionarem.

     

    []'s

     

    domingo, 12 de agosto de 2007 11:38

Todas as Respostas

  • Oi !

     

    A tabela usuários nào possui os campos emitente e executor. Possui o código do órgão, ligando o usuário ao órgão ao qual pertence.

     

    A tabela órgão tem os campos Emitente e Executor para determinar o que os órgãos podem fazer.

     

    Uma tabela de serviços estará relacionada com a tabela de órgãos duas vezes. A tabela de serviços irá conter :

     

    chaveprimaria

    CodOrgaoEmitente

    CodOrgaoExecutor

     

    Então você observa que tanto através de CodOrgaoEmitente como através de CodOrgaoExecutor a tabela de serviços fica ligada com a tabela de órgãos.

     

    Algumas das restrições podem necessitar de functions chamadas a partir de constraints para funcionarem.

     

    []'s

     

    domingo, 12 de agosto de 2007 11:38
  • Dennes,

     

    Pelo que você disse, tanto faz qual o campo na tabela de serviços que eu faça o relacionamento, ambos os campos estarão ligados á tabela de órgãos.

     

    A pergunta foi feita, porque trabalhava só com bd access, e lá mesmo que a tabela órgãos tivesse outras tabelas vinculadas a ela, e algumas destas tabelas tivesse um campo a ser informado na tabela de serviços, eu e muitas pessoas com as quais trabalho, relacionava estas outras tabelas com o campo correspondente na tb serviços e o Access aceitava.

    Quando recentemente começei a trabalhar com bd SQL 2005, tentei fazer o mesmo, e o SQL não aceitou. Daí a minha dúvida.

     

    quarta-feira, 15 de agosto de 2007 00:41
  • Oi !

     

    "Pelo que você disse, tanto faz qual o campo na tabela de serviços que eu faça o relacionamento, ambos os campos estarão ligados á tabela de órgãos."

     

    Não, não podemos dizer "tanto faz". Primeiramente, os dois precisam ter o relacionamento. Em segundo lugar, se em uma query você reforçar o relacionamento por um dos campos, receberá um determinado resultado, que tem um significado de negócios. Se fizer pelo outro, receberá outro resultado, que tem outro significado. Se fizer pelos dois, ainda terá um 3o resultado diferente.

     

    Esse "não aceitou" está vago. Tente fazer da forma como indiquei e se tiver problemas explique aqui o erro.

     

    []'s

     

     

    quarta-feira, 15 de agosto de 2007 01:30