Pular para o conteúdo
Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #89629
    Avatar de peres1979peres1979
    Participante

      Olá,

      Sou iniciante em banco de dados e estou com uma dúvida no relacionamento entre duas tabelas. Estou modelando uma agenda pessoal. Nela existe duas entidades que são: “Pessoa” e “Curso”. Então a minha seguinte análise é uma “Pessoa” faz vários “Curso”, e um “Curso” possui muitas “Pessoa”. Ou seja, um relacionamento muitos para muitos.

      Apartir dessa premissa crio uma nova entidade “Curso_da_Pessoa”, contendo as chaves primárias de “Pessoa” e “Curso”.

      Se tenho que cadastrar o curso da pessoa na miha tabela pessoa além de seus outros atributos.

      A minha dúvida é:

      Como faço para colocar o atributo curso em minha tabela “Pessoa”?

      Eu crio uma chave estrangeira da entidade “Curso_da_Pessoa” ou de “Curso”?

      Abraços

      #89632
      Avatar photoLeonardo Litz
      Participante

        Ola peres.

        Pelo que eu entendi, vc um curso pode ter varias pessoas, e uma pessoa pode participar de varios cursos.

        Na relacao de muitos para muitos, vc devera gerar uma tabela de relacionamento.

        Pense que a tabela CURSO_PESSOA e a juncao de PESSOA+CURSO,
        logo a tabela CURSO_PESSOA devera conter uma chave estrangeira relacionando com a tabela PESSOA e outra chave estrangeira relacionando com a tabela CURSO. Que formara a chave primaria da tabela CURSO_PESSOA.

        Entendeu?

        Vlw Leonardo Litz

        #89636
        Avatar de peres1979peres1979
        Participante

          Tabela Pessoa:

          create table PESSOA (
          PES_CODIGO INTEGER not null,
          CID_CODIGO INTEGER not null,
          PES_NOME VARCHAR2(30),
          PES_FONERES VARCHAR2(16),
          PES_FONECOM VARCHAR2(16),
          PES_FONECEL VARCHAR2(16),
          PES_EMAIL VARCHAR2(50),
          constraint PK_PESSOA primary key (PES_CODIGO)
          );


          Tabela Curso:

          create table CURSO (
          CUR_CODIGO INTEGER not null,
          CUR_NOME VARCHAR2(30),
          constraint PK_CURSO primary key (CUR_CODIGO)
          );


          Tabela Curso_da_Pessoa:

          create table CURSO_DA_PESSOA (
          PES_CODIGO INTEGER not null,
          CUR_CODIGO INTEGER not null,
          constraint PK_CURSO_DA_PESSOA primary key (PES_CODIGO, CUR_CODIGO)
          );


          E se eu quiser criar um campo Curso na tabela “PESSOA”
          ficara assim:

          create table PESSOA (
          PES_CODIGO INTEGER not null,
          CID_CODIGO INTEGER not null,
          PES_NOME VARCHAR2(30),
          PES_FONERES VARCHAR2(16),
          PES_FONECOM VARCHAR2(16),
          PES_FONECEL VARCHAR2(16),
          PES_EMAIL VARCHAR2(50),
          PES_CURSO VARCHAR2(50),
          constraint PK_PESSOA primary key (PES_CODIGO)
          );

          Então a minnha dúvida é:

          De qual tabela vou referenciar a chave estrangeira o campo Curso da tabela “Pessoa”?

          Seria da Tabela “Curso” ou “Curso_da_Pessoa”?

          #89638
          Avatar de srleosrleo
          Participante

            Que a minha ignorância me sirva de desculpa:
            Muitos para muitos, ou um para muitos, no caso depende do uso que vai ser feito:
            se a tabela é pessoal, e eu faço três cursos, então é um para muitos – eu curso x, y, z
            Agora, se a tabela vai servir para controle de uma escola, aí então é muitos para muitos:
            aluno A cursa x,y,
            aluno B cursa x, y, z

            Quanto à maneira de fazer usando Oracle, aí tem gente com mais conhecimanto do que eu!!! (não que eu seja lá muito conhecedor…)
            Um abraço.
            Paulo Leal Machado

            #89639
            Avatar photoLeonardo Litz
            Participante

              Peres.

              Isso vai depender do seu conceito. Se vc já criou a tabela CURSO_DA_PESSOA, esta já vincula os cursos que a pessoa faz. Nesse caso não vejo a necessidade da coluna PES_CURSO na tabela PESSOA.
              Qual tua intenção desta coluna?

              Vlw Leonardo Litz

              #89641
              Avatar de peres1979peres1979
              Participante

                Então, Caro Litz

                No Oracle existe o (Application Builder), onde podemos criar uma aplicação que use essas tabelas. (Pessoa e Curso)

                Eu quero criar uma aplicação onde eu cadastro os cursos disponíveis em minha escola e depois quando for cadastrar a pessoa o(s) curso(s) que ela irá fazer.

                obs.: Peço desculpas pois nunca fiz cursos e nem sequer faculdade, estou aprendendo por livros. E principalmente por aqui.

                Abraços

                #89643
                Avatar photoLeonardo Litz
                Participante

                  Então Peres.
                  Se voce criar PES_CURSO na tabela PESSOA, isso indica que a pessoa faz apenas um curso. Ai voce pode inibir a tabela CURSO_DA_PESSOA.
                  Se o requisito dizer que a pessoa pode fazer mais de um curso, não utilize a coluna PES_CURSO na tabela PESSOA, utilize apenas a tabela CURSO_DA_PESSOA.

                  Entendes?

                  Vlw Leonardo Litz

                  #90196
                  Avatar de YvesYves
                  Participante

                    Bem neste caso não que eu saiba muito mas eu tbm gosto muito de banco de dados tanto é que faço tecnologia em banco de dados pela impacta , e é isso ai temos que tentar praticar ao máximo para ter prática.
                    Bem no momento do mapeamento dos 8 passos passando do DER para o MER quando chega no relacionamento de muitos para muitos N M , vc cria uma nova relação (tabela) com as duas chaves primárias de cada uma das entidades que se relacionam, essas duas chaves serão chaves estrangeiras na nova relação e serão a chave desta nova tabela, neste caso será uma superchave minima, isto é esta chave só será chave porcausa da combinação dos dois atributos chaves de suas respectivas tabelas, entendeu? qualquer dúvida pode contactar , ok?

                    [quote=”peres1979″:22zei7gb]Olá,

                    Sou iniciante em banco de dados e estou com uma dúvida no relacionamento entre duas tabelas. Estou modelando uma agenda pessoal. Nela existe duas entidades que são: “Pessoa” e “Curso”. Então a minha seguinte análise é uma “Pessoa” faz vários “Curso”, e um “Curso” possui muitas “Pessoa”. Ou seja, um relacionamento muitos para muitos.

                    Apartir dessa premissa crio uma nova entidade “Curso_da_Pessoa”, contendo as chaves primárias de “Pessoa” e “Curso”.

                    Se tenho que cadastrar o curso da pessoa na miha tabela pessoa além de seus outros atributos.

                    A minha dúvida é:

                    Como faço para colocar o atributo curso em minha tabela “Pessoa”?

                    Eu crio uma chave estrangeira da entidade “Curso_da_Pessoa” ou de “Curso”?

                    Abraços[/quote]

                    #90199
                    Avatar de YvesYves
                    Participante

                      Mas lembre-se no momento de definir se o relacionamento é de fato muitos para muito s é muito importante , vc pode testar fazendo uma tabelinha e verificar se é viavel ou não, pois como foi citado antes tem que verificar se é um sistema para a escola vc cria a tabela e fica assim, vários alunos participam de vários cursos ou se uma pessoa faz vários cursos ai fica assim o relacionamento de 1 para N nesse caso o lado N recebe a chave primária do lado 1 , ficando assim a chave primária de pessoa vai para a tabela curso como chave estrangeira, lembrando-se sempre de manter a integridade referencial e de entidade.
                      [quote=”peres1979″:10u1dy5y]Olá,

                      Sou iniciante em banco de dados e estou com uma dúvida no relacionamento entre duas tabelas. Estou modelando uma agenda pessoal. Nela existe duas entidades que são: “Pessoa” e “Curso”. Então a minha seguinte análise é uma “Pessoa” faz vários “Curso”, e um “Curso” possui muitas “Pessoa”. Ou seja, um relacionamento muitos para muitos.

                      Apartir dessa premissa crio uma nova entidade “Curso_da_Pessoa”, contendo as chaves primárias de “Pessoa” e “Curso”.

                      Se tenho que cadastrar o curso da pessoa na miha tabela pessoa além de seus outros atributos.

                      A minha dúvida é:

                      Como faço para colocar o atributo curso em minha tabela “Pessoa”?

                      Eu crio uma chave estrangeira da entidade “Curso_da_Pessoa” ou de “Curso”?

                      Abraços[/quote]

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