Relação entre tabelas - como incrementar o campo

07/10/2004

0

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


Felipe_cduarte

Felipe_cduarte

Responder

Posts

11/10/2004

Marcus.magalhaes

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,


Responder

12/10/2004

Felipe_cduarte

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


Responder

12/10/2004

Marcus.magalhaes

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,


Responder

12/10/2004

Felipe_cduarte

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


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar