Relação entre tabelas - como incrementar o campo
Fala pessoal
certas horas na modelagem do banco de dados temos tabelas com relacao de 1 para N ( claro , toda hora :P ) .. Só q algumas vezes necessito de um valor que está na tabela de cardinalidade 1, por exemplo um SEQXXX .. vou exemplificar:
tenho um tabela Cursos
CodCurso int id
DescCurso varchar(50)
SEQXXX int
e uma Alunos
Matricula
CodCurso (FK)
a matricula seria formada pelo CodCurso + este SEQXXX. Entao ficaria
1001, 1002, 1003, 2001, 2002, 2003, e assim vai... isso a grosso modo logicamente heheheh ...
Pô qual a opiniao de vcs ?? eu faco o incremento na tabela , tipo ( SEQXXX = SEQXXX + 1 ) mas devido a problema de locks, concorrencia de transações, entre outras coisas , sabemos que essa forma não é a ideal ... alguem tem uma sugestao ????
certas horas na modelagem do banco de dados temos tabelas com relacao de 1 para N ( claro , toda hora :P ) .. Só q algumas vezes necessito de um valor que está na tabela de cardinalidade 1, por exemplo um SEQXXX .. vou exemplificar:
tenho um tabela Cursos
CodCurso int id
DescCurso varchar(50)
SEQXXX int
e uma Alunos
Matricula
CodCurso (FK)
a matricula seria formada pelo CodCurso + este SEQXXX. Entao ficaria
1001, 1002, 1003, 2001, 2002, 2003, e assim vai... isso a grosso modo logicamente heheheh ...
Pô qual a opiniao de vcs ?? eu faco o incremento na tabela , tipo ( SEQXXX = SEQXXX + 1 ) mas devido a problema de locks, concorrencia de transações, entre outras coisas , sabemos que essa forma não é a ideal ... alguem tem uma sugestao ????
Felipe_cduarte
Curtidas 0
Respostas
Marcus.magalhaes
07/10/2004
Felipe, boa tarde.
Deixe me ver se entendi, vc tem o seguinte modelo:
[color=green:8f2c2d3160]Tabela : CURSO
codCurso Int (PK)
DescCurso VarChar(50)
SEQxxx Int -- Para que?
Tabela : Aluno
Matricula ??? (provalmente Int)
Codcurso Int (FK)[/color:8f2c2d3160]
Se isso estiver certo, eu vejo 2 coisas aí :
1) vc terá que cadastrar n vezes cada aluno, pois cada vez que ele fizer um curso seus dados terão que ser novamente inseridos
2) se vc quer gerar a chave da matricula a partir de codcurso + seqxxx, vc terá que cadastrar 1 curso n vezes, pois para cada alunos o seqxxx precisará ser diferente.
Se ainda estiver certo eu vejo este modelo da seguinte forma:
[color=red:8f2c2d3160]Tabela : curso
cod_curso Int Identity(1, 1) NOT NULL, (PK)
desc_curso VarChar(50) NOT NULL
Tabela : aluno
mat_aluno Int Identity(1, 1) NOT NULL, (PK)
nome_aluno VarChar(35) NOT NULL,
.
.
.
etc...
Tabela aluno_curso
cod_curso Int NOT NULL, (PK)(FK)
mat_aluno Int NOT NULL, (PK)(FK)[/color:8f2c2d3160]
esta terá relacionamento [b:8f2c2d3160]1xN[/b:8f2c2d3160] com curso e aluno, formando assim um relacionamento [b:8f2c2d3160]NxN[/b:8f2c2d3160] entre curso e aluno.
Espero ter ajudado.
Att,
Deixe me ver se entendi, vc tem o seguinte modelo:
[color=green:8f2c2d3160]Tabela : CURSO
codCurso Int (PK)
DescCurso VarChar(50)
SEQxxx Int -- Para que?
Tabela : Aluno
Matricula ??? (provalmente Int)
Codcurso Int (FK)[/color:8f2c2d3160]
Se isso estiver certo, eu vejo 2 coisas aí :
1) vc terá que cadastrar n vezes cada aluno, pois cada vez que ele fizer um curso seus dados terão que ser novamente inseridos
2) se vc quer gerar a chave da matricula a partir de codcurso + seqxxx, vc terá que cadastrar 1 curso n vezes, pois para cada alunos o seqxxx precisará ser diferente.
Se ainda estiver certo eu vejo este modelo da seguinte forma:
[color=red:8f2c2d3160]Tabela : curso
cod_curso Int Identity(1, 1) NOT NULL, (PK)
desc_curso VarChar(50) NOT NULL
Tabela : aluno
mat_aluno Int Identity(1, 1) NOT NULL, (PK)
nome_aluno VarChar(35) NOT NULL,
.
.
.
etc...
Tabela aluno_curso
cod_curso Int NOT NULL, (PK)(FK)
mat_aluno Int NOT NULL, (PK)(FK)[/color:8f2c2d3160]
esta terá relacionamento [b:8f2c2d3160]1xN[/b:8f2c2d3160] com curso e aluno, formando assim um relacionamento [b:8f2c2d3160]NxN[/b:8f2c2d3160] entre curso e aluno.
Espero ter ajudado.
Att,
GOSTEI 0
Felipe_cduarte
07/10/2004
Fala marcus blz !
bom , vamos lá .. o lance da modelagem das tabelas nao é minha preocupação , mas acho q minha explicação ´a grosso modo´ ficou tao horrivel que nao deu pra entender :D , mas a ideia das tabelas seria +- isso que vc transcreveu... mas meu problema persiste: o aluno seria alocado a um curso.. vamos dizer que o curso tem codigo 123.. entao a matricula dele ( tipo uma funcao geraMatricula() ) tem que ser 123XXX onde esse XXX é sequencial .. por isso o problema do auto incremento com relação entendeu ?? se eu cadastrasse 3 alunos neste curso seria:
123001
123002
123003
mas se tivesse um curso 132, a numeração tb teria que iniciar do 1, tipo:
132001
132002 e assim vai...
Fico no aguardo de uma ajuda
[]´s
bom , vamos lá .. o lance da modelagem das tabelas nao é minha preocupação , mas acho q minha explicação ´a grosso modo´ ficou tao horrivel que nao deu pra entender :D , mas a ideia das tabelas seria +- isso que vc transcreveu... mas meu problema persiste: o aluno seria alocado a um curso.. vamos dizer que o curso tem codigo 123.. entao a matricula dele ( tipo uma funcao geraMatricula() ) tem que ser 123XXX onde esse XXX é sequencial .. por isso o problema do auto incremento com relação entendeu ?? se eu cadastrasse 3 alunos neste curso seria:
123001
123002
123003
mas se tivesse um curso 132, a numeração tb teria que iniciar do 1, tipo:
132001
132002 e assim vai...
Fico no aguardo de uma ajuda
[]´s
GOSTEI 0
Marcus.magalhaes
07/10/2004
Boa noite Felipe.
Para fazer o q vc quer, só mesmo gerando na mão. Mas eu ainda não entendi o pq de vc querer fazer o código numa unica coluna, se vc fizer em 3 tabelas como eu te mostrei, fica mais flexivel, limpo e rápido.
Att,
Para fazer o q vc quer, só mesmo gerando na mão. Mas eu ainda não entendi o pq de vc querer fazer o código numa unica coluna, se vc fizer em 3 tabelas como eu te mostrei, fica mais flexivel, limpo e rápido.
Att,
GOSTEI 0
Felipe_cduarte
07/10/2004
Fala Marcus blz ?!?
bom cara , eu tb acho q do jeito que você falou fica melhor ... mas quem paga a gente é o cliente ... vc sabe como são essas coisas ... mas brigado pela ajuda
[]´s
bom cara , eu tb acho q do jeito que você falou fica melhor ... mas quem paga a gente é o cliente ... vc sabe como são essas coisas ... mas brigado pela ajuda
[]´s
GOSTEI 0