Array
(
)

Relação entre tabelas - como incrementar o campo

Felipe_cduarte
   - 07 out 2004

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 ????

Marcus.magalhaes
   - 11 out 2004

Felipe, boa tarde.

Deixe me ver se entendi, vc tem o seguinte modelo:

Tabela : CURSO

codCurso Int (PK)
DescCurso VarChar(50)
SEQxxx Int -- Para que?

Tabela : Aluno

Matricula ??? (provalmente Int)
Codcurso Int (FK)

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:

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)

esta terá relacionamento 1xN com curso e aluno, formando assim um relacionamento NxN entre curso e aluno.

Espero ter ajudado.

Att,

Felipe_cduarte
   - 12 out 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

Marcus.magalhaes
   - 12 out 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,

Felipe_cduarte
   - 12 out 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