- Este tópico contém 8 respostas, 4 vozes e foi atualizado pela última vez 15 anos, 1 mês atrás por Yves.
-
AutorPosts
-
12 de setembro de 2009 às 6:22 pm #89629peres1979Participante
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
13 de setembro de 2009 às 4:16 am #89632Leonardo LitzParticipanteOla 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
14 de setembro de 2009 às 1:09 am #89636peres1979ParticipanteTabela 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”?
14 de setembro de 2009 às 1:39 pm #89638srleoParticipanteQue 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, zQuanto à 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 Machado14 de setembro de 2009 às 4:16 pm #89639Leonardo LitzParticipantePeres.
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
14 de setembro de 2009 às 5:15 pm #89641peres1979ParticipanteEntã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
14 de setembro de 2009 às 5:26 pm #89643Leonardo LitzParticipanteEntã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
13 de outubro de 2009 às 6:22 pm #90196YvesParticipanteBem 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]
13 de outubro de 2009 às 6:40 pm #90199YvesParticipanteMas 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]
-
AutorPosts
- Você deve fazer login para responder a este tópico.