Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

felipebmfaria

Modelagem do Banco de dados

Recommended Posts

Boa tarde pessoal,

 

sou iniciante e estou recorrendo ao forum mais uma vez...

 

tenho um esquema e preciso desenvolver o banco e o painel de controle... porem estou confuso em como estruturar o banco...

o link deste esquema(lembra ateh com um der): www.globalnetsis.com.br/imasters

 

pensei em criar as tabelas:

 

DISCIPLINAS

TURMAS

ALUNOS

 

foreign key: id_turma que entra em disciplinas e id_aluno que entra em turmas... eh por aih?

 

o administrador poderá cadastrar novas disciplinas, novas turmas e obviamente novos alunos...

 

tenho duvidas se eh por aih e como relaciona-las...

 

se alguem mais experiente puder me dar uma ajuda...

 

grato desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mais indicado seria criar uma tabela, ou várias tabelas, de relacionamento entre os itens, por exemplo:

 

ALUNO_TURMA_DISCIPLINA, com os IDs do ALUNO, TURMA e DISCIPLINA, além da data que esta aluno foi inserido em determinada disciplina e outras informações caso se façam necessárias;

 

Mas isto vai depender do seu negócio, o modelo acima serve para resolver o problema, mas precisamos saber se ele atende ao seu negócio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Trata-se de um site de um professor... ele quer exibir no site os dados das disciplinas, as notas dos alunos, as turmas e aqueles atributos que podemos ver no link que passei...

 

nao entendi muito bem como seria criar uma unica tabela e relacionar os itens dela...

 

pode me ajudar?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria mais ou menos assim:

 

o administrador cadastra a disciplina e preenche os campos de PLANO DE ENSINO...

 

em seguida cadastra(REGISTRO ACADEMICO) as turmas nesta disciplina... dentro dessas turmas serão cadastrados os alunos da turma bem como as notas...

 

sou iniciante e estou um pouco perdido...

 

grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bem,

 

andei lendo mais um pouco e vi mais ou menos como funciona uma foreign key, acredito que a solucao para o meu problema seja o uso de FK's, correto?

 

vou postar:

 

CREATE TABLE disciplinas(id INT NOT NULL, nome VARCHAR(255), PRIMARY KEY (id)) TYPE=INNODB;

 

CREATE TABLE turmas(id INT, disciplinas_id INT, INDEX disciplinas_ind (disciplinas_id),

FOREIGN KEY (disciplinas_id) REFERENCES disciplinas(id)

ON DELETE CASCADE

) TYPE=INNODB;

 

CREATE TABLE alunos(id INT, turmas_id INT, nome VARCHAR(255), INDEX turmas_ind (turmas_id),

FOREIGN KEY (turmas_id) REFERENCES turmas(id)

ON DELETE CASCADE

) TYPE=INNODB;

 

este é o caminho?

 

a partir desta estrutura posso por exemplo selecionar as disciplinas em que "JOAO SILVA" está cadastrado?

 

preciso criar uma tabela disciplinas_turmas_alunos com as FK'S de cada tabela??????

 

Grato por qualquer ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

desenhar no computador eh um saco...

mas você precisa do seguinte

 

Partindo do principio que isso eh uma escola ( uma turma tem varias disciplinas) e nao uma faculdade (uma turma eh o mesmo que uma disciplina)

 

alunos (tabela com descriçao dos alunos, chave, nome, aniversario e etc)

disciplinas (chave e nome da dispciplina)

turmas_disciplinas (chave da turma, chave da disciplina ambas em chave composta)

alunos_turmas ( chave do aluno, chave da turma ambas em chave composta)

 

alunos e disciplinas sao tabelas mestre que da on delete cascade em turmas_disciplina e alunos_turmas

 

simples assim

Compartilhar este post


Link para o post
Compartilhar em outros sites

desenhar no computador eh um saco...

mas você precisa do seguinte

 

Partindo do principio que isso eh uma escola ( uma turma tem varias disciplinas) e nao uma faculdade (uma turma eh o mesmo que uma disciplina)

 

alunos (tabela com descriçao dos alunos, chave, nome, aniversario e etc)

disciplinas (chave e nome da dispciplina)

turmas_disciplinas (chave da turma, chave da disciplina ambas em chave composta)

alunos_turmas ( chave do aluno, chave da turma ambas em chave composta)

 

alunos e disciplinas sao tabelas mestre que da on delete cascade em turmas_disciplina e alunos_turmas

 

simples assim

 

Giesta, que bom que você tah falando que eh simples...

 

Acertando:

 

Eh um professor que leciona disciplinas em algumas faculdades! Nao se trata de uma escola! Ele quer disponibilizar as notas no site. Em que esta informacao muda a estrutra das tabelas?

 

O que seria chave composta? Chave estrangeira(FK)?

De que forma defino uma chave como estrangeira? Nao estou conseguindo... tem relacao com index? estou usando phpmyadmin, ou, se for de seu costume, como seria para definir isso "na unha"?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preciso modelar este banco, alguem pode me ajudar? Sou iniciante, por isso estou com dificuldades... nao consegui pegar a logica disso...

 

disciplinas(id(PK), nome, ementa e etc)

turmas(id(PK), numero)

alunos(id(PK), matricula, v1, v2, vf e etc)

 

disc_turm_alun

(

id_disc(fk) references disciplinas(id)

id_turmas(fk) references turmas(id)

id_alunos(fk) references alunos(id)

)

 

É por aí?

Alguém pode me explicar?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem relacao com index sim, soh pode ser apondata para FK a coluna da outra tabela que tiver index ou chave

 

alem disso FK nao tem pra MYISAM

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui estruturar o banco, vejam como ficou:

 

create table disciplina
(	id_disciplina					   int		unsigned  not null,
	nome				varchar(50)	not null,
	primary key (id_disciplina)
)
ENGINE=InnoDB;


create table aluno
(	
		matricula					int		not null,
	nome 		varchar(80)			   not null,
	primary key (matricula)
)
ENGINE=InnoDB;


create table turma
(	
		id_turma 		 int 		unsigned not null,
		matricula							int						   not null,
		id_disciplina   					 int						   unsigned not null,
		CONSTRAINT fk_disc_01 FOREIGN KEY (id_disciplina) REFERENCES disciplina (id_disciplina),
		CONSTRAINT fk_mat_01 FOREIGN KEY (matricula) REFERENCES aluno (matricula),
		PRIMARY KEY (id_turma)
)
ENGINE=InnoDB;


create table boletim
(	

		matricula			   int			not null,
		id_disciplina		   int   unsigned not null,
		id_turma				int   unsigned not null, 
		v1			  double(6,2)			null,
		vt			  double(6,2)			null,
		v2			  double(6,2)			null,
		ms			  double(6,2)			null,
		vs			  double(6,2)			null,
		mf			  double(6,2)			null,
		faltas					int					not null,
		situacao		varchar(30)		   not null,
		
		CONSTRAINT fk_mat_02 FOREIGN KEY (matricula) REFERENCES turma (matricula) on delete cascade,
		CONSTRAINT fk_disc_02 FOREIGN KEY (id_disciplina) REFERENCES disciplina (id_disciplina) on delete cascade,
		CONSTRAINT fk_turma_01 FOREIGN KEY (id_turma) REFERENCES turma (id_turma) on delete cascade,
		PRIMARY KEY (matricula)
)
ENGINE=InnoDB;

Agora estou com duvidas em como utilizar as FK's... quando insiro um aluno o campo matricula deveria ser cadastrado tambem nas tabelas que tem a FK matricula, nao?

 

Como posso selecionar o boletim do aluno JOAO SILVA na disciplina A da turma B, por exemplo?

Ainda nao peguei isto direito... alguem pode me dar uma ajuda?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.