Ir para conteúdo
Fórum Script Brasil
  • 0

Modelagem do Boletim para usar no mysql


akira2005

Pergunta

bom dia!! pessoal do script brasil, estou precisando de ajuda de voces, alguém poderia fazer a modelagem desses dados abaixo, não estou conseguindo fazer. é fazer as tabelas e os relacionamentos é isso que quero ver.

garanto que ajudarei a muitos quando entender, agradeceria muito a vocês.

Campos:

1. Matricula

2. aluno

3. curso

4. turma

5. disciplina

6. I bimestre

6.1. Avaliacao 1

6.2. Trabalho

6.3. Avaliacao 2

6.4. Media

6.5. Media Recuperação

7. II bimestre

7.1. Avaliacao 1

7.2. Trabalho

7.3. Avaliacao 2

7.4. Media

7.5. Media Recuperação

8. III bimestre

8.1. Avaliacao 1

8.2. Trabalho

8.3. Avaliacao 2

8.4. Media

8.5. Media Recuperação

9. IV bimestre

9.1. Avaliacao 1

9.2. Trabalho

9.3. Avaliacao 2

9.4. Media

9.5. Media Recuperação

10. Media Anual

11. Recuperação Anual

11.1 nota da recuperação anual

11.2 media

12. Final

12.1 Prova Final

12.2 media

13. senha

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'akira2005'!

Isto tem cheiro de dever de casa. E um trabalho escolar, passado por algum professor para você fazer e você está pedindo help antes de começar?

Que tipo de trabalho é esse?

Responda e poderei te ajudar.

Link para o comentário
Compartilhar em outros sites

  • 0

gostaria de saber se esta certo o que fiz no dbdesigner e exportei aqui como sql, se tiver erros diz ae blza

CREATE TABLE Alunos (

Matricula VARCHAR(20) NOT NULL,

Nome_Aluno VARCHAR(60) NULL,

PRIMARY KEY(Matricula)

);

CREATE TABLE Boletim (

IbimA1 DECIMAL NOT NULL AUTO_INCREMENT,

Alunos_Matricula VARCHAR(20) NOT NULL,

Disciplinas_idDisciplinas VARCHAR(20) NOT NULL,

Turma_idTurma VARCHAR(20) NOT NULL,

IbimTR DECIMAL NULL,

IbimA2 DECIMAL NULL,

IbimMed DECIMAL NULL,

IbimRecup DECIMAL NULL,

IIbimA1 DECIMAL NULL,

IIbimTR DECIMAL NULL,

IIbimA2 DECIMAL NULL,

IIbimMed DECIMAL NULL,

IIbimRecup DECIMAL NULL,

IIIbimA1 DECIMAL NULL,

IIIbimTR DECIMAL NULL,

IIIbimA2 DECIMAL NULL,

IIIbimMed DECIMAL NULL,

IIIbimRecup DECIMAL NULL,

IVbimA1 DECIMAL NULL,

IVbimTR DECIMAL NULL,

IVbimA2 DECIMAL NULL,

IVbimMed DECIMAL NULL,

IVbimRecup DECIMAL NULL,

MediaAnual DECIMAL NULL,

RecupAnual DECIMAL NULL,

Final DECIMAL NULL,

PRIMARY KEY(IbimA1),

INDEX Boletim_FKIndex1(Turma_idTurma),

INDEX Boletim_FKIndex2(Disciplinas_idDisciplinas),

INDEX Boletim_FKIndex3(Alunos_Matricula)

);

CREATE TABLE Curso (

idCurso VARCHAR(20) NOT NULL AUTO_INCREMENT,

Curso VARCHAR(60) NULL,

PRIMARY KEY(idCurso)

);

CREATE TABLE Disciplinas (

idDisciplinas VARCHAR(20) NOT NULL AUTO_INCREMENT,

Disciplina VARCHAR(60) NULL,

PRIMARY KEY(idDisciplinas)

);

CREATE TABLE Turma (

idTurma VARCHAR(20) NOT NULL AUTO_INCREMENT,

Disciplinas_idDisciplinas VARCHAR(20) NOT NULL,

Alunos_Matricula VARCHAR(20) NOT NULL,

Curso_idCurso VARCHAR(20) NOT NULL,

PRIMARY KEY(idTurma),

INDEX Turma_FKIndex1(Curso_idCurso),

INDEX Turma_FKIndex2(Alunos_Matricula),

INDEX Turma_FKIndex3(Disciplinas_idDisciplinas)

);

Link para o comentário
Compartilhar em outros sites

  • 0

'akira2005',

Modifiquei as instruções SQL para que ficassem melhor organizadas.

Estas modificações funcionarão melhor se você estiver usando o mysql 5.x.x ou superior.

CREATE TABLE Alunos (
   Matricula int(10) unsigned NOT NULL,
   Nome_Aluno VARCHAR(60) NULL,
   PRIMARY KEY(Matricula)
);

CREATE TABLE Curso (
   idCurso int(10) unsigned NOT NULL AUTO_INCREMENT,
   Curso VARCHAR(60) NULL,
   PRIMARY KEY(idCurso)
);

CREATE TABLE Disciplinas (
   idDisciplinas int(10) unsigned NOT NULL AUTO_INCREMENT,
   Disciplina VARCHAR(60) NULL,
   PRIMARY KEY(idDisciplinas)
);

CREATE TABLE Boletim (
   idBoletim int(10) unsigned NOT NULL AUTO_INCREMENT,
   Matricula int(10) unsigned NOT NULL,
   idDisciplinas VARCHAR(20) NOT NULL,
   idTurma VARCHAR(20) NOT NULL,
   bim_1_AV1 double(2,2) not null default 0,
   bim_1_AV2 double(2,2) not null default 0,
   bim_1_TRab double(2,2) not null default 0,
   bim_1_Media double(2,2) not null default 0, /* pode ser campo calculado */
   bim_1_Recup double(2,2) not null default 0,
   bim_2_AV1 double(2,2) not null default 0,
   bim_2_AV2 double(2,2) not null default 0,
   bim_2_TRab double(2,2) not null default 0,
   bim_2_Media double(2,2) not null default 0, /* pode ser campo calculado */
   bim_2_Recup double(2,2) not null default 0,
   bim_3_AV1 double(2,2) not null default 0,
   bim_3_AV2 double(2,2) not null default 0,
   bim_3_TRab double(2,2) not null default 0,
   bim_3_Media double(2,2) not null default 0, /* pode ser campo calculado */
   bim_3_Recup double(2,2) not null default 0,
   bim_4_AV1 double(2,2) not null default 0,
   bim_4_AV2 double(2,2) not null default 0,
   bim_4_TRab double(2,2) not null default 0,
   bim_4_Media double(2,2) not null default 0, /* pode ser campo calculado */
   bim_4_Recup double(2,2) not null default 0,
   MediaAnual double(2,2) not null default 0, /* pode ser campo calculado */
   RecupAnual double(2,2) not null default 0,
   Final double(2,2) not null default 0,
   PRIMARY KEY(IbimA1)
);

ALTER TABE Boletim
   ADD CONSTRAINT Boletim_FKIndex1 FOREIGN KEY (idTurma) REFERENCES Turma (idTurma) ON DELETE NO ACTION ON UPDATE NO ACTION,
   ADD CONSTRAINT Boletim_FKIndex2 FOREIGN KEY (idDisciplinas) REFERENCES Disciplinas (idDisciplinas) ON DELETE NO ACTION ON UPDATE NO ACTION,
   ADD CONSTRAINT Boletim_FKIndex3 FOREIGN KEY (Matricula) REFERENCES Alunos (Matricula) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE TABLE Turma (
   idTurma int(10) unsigned NOT NULL AUTO_INCREMENT,
   Disciplinas_idDisciplinas VARCHAR(20) NOT NULL,
   Alunos_Matricula VARCHAR(20) NOT NULL,
   Curso_idCurso VARCHAR(20) NOT NULL,
   PRIMARY KEY(idTurma)
);

ALTER TABE Boletim
   ADD CONSTRAINT Turma_FKIndex1FOREIGN KEY (idCurso) REFERENCES Curso (idCurso) ON DELETE NO ACTION ON UPDATE NO ACTION,
   ADD CONSTRAINT Turma_FKIndex2 FOREIGN KEY (Matricula) REFERENCES Alunos (Matricula) ON DELETE NO ACTION ON UPDATE NO ACTION,
   ADD CONSTRAINT Turma_FKIndex3 FOREIGN KEY (idDisciplinas) REFERENCES Disciplinas (idDisciplinas) ON DELETE NO ACTION ON UPDATE NO ACTION;

Explicações:

Os campos onde escrevi /* pode ser campo calculado */ não tem razão para existir pois podem ser calculados a qualquer tempo.

Substitui os índices por Constraits. Mas só funcionarão se você utilizar o engine InnoDB.

Substitui os tipos DECIMAL por INTEGER ou DOUBLE que são mais eficientes com a versão 5

No caso de auto_increment deve-se utilizar o tipo integer e, neste caso, usei integer unsigned que é menor que o tipo integer e, também, porque o auto_increment deve ser maior que zero (o mysql não aceita auto_increment menor que 0).

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Denis muito obrigado pela ajuda acima, gostaria de tirar umas duvidas com voce tipo:

1. como calcular a media de todas as disciplinas de cada aluno, fiz aqui mas calculou somente para um aluno e a media do restante dos alunos ficou igual ao do primeiro aluno, fiz assim:

$media = ($row_exibir['bim_1_AV1'] + $row_exibir['bim_1_AV2'] + $row_exibir['bim_1_TRab']) / 3;

bem gostaria que saisse a media de todas as disciplinas de cada aluno, me diz o que esta faltando, beleza.

2. aqui é duvida pessoal, eu posso ter duas chaves primarias em uma mesma tabela do mysql ?

Link para o comentário
Compartilhar em outros sites

  • 0
Olá Denis muito obrigado pela ajuda acima, gostaria de tirar umas duvidas com voce tipo:

1. como calcular a media de todas as disciplinas de cada aluno

2. aqui é duvida pessoal, eu posso ter duas chaves primarias em uma mesma tabela do mysql ?

'akira2005' , respondendo sua perguntas:

1. aplique o SQL abaixo (representarei somente a média de um bimestre e você modifica a sql para que apresente as ouras médias OK?)

SELECT ((bim_1_AV1 + bim_1_AV2 + bim_1_TRab) / 3) AS bim_1_media
FROM Boletim GROUP BY Matricula, idDisciplinas;

2. Não. Em nenhum banco de dados você pode ter mais de uma chave primária. Você pode ter chave primária combinada. Por exemplo, na tabela boletim a chave primária poderia ser Matricula, idDisciplinas, idTurma.

Uma outra forma é simular uma chave primária partindo do princípio que uma chave primária é uma chave única, então posso criar quantas chaves únicas eu necessitar.

3, cometi uns erros na criação das tabelas que você precisa corrigir para melhorar a performance. São eles:

Na tabela boletim criei o atributo idDisciplinas VARCHAR(20) NOT NULL, quando deveria ser idDisciplinas int(10) unsigned NOT NULL;

Na tabela Turma criei os atributos Disciplinas_idDisciplinas VARCHAR(20) NOT NULL, Alunos_Matricula VARCHAR(20) NOT NULL e Curso_idCurso VARCHAR(20) NOT NULL, que deveriam ser, respectivamente, idDisciplinas int(10) unsigned NOT NULL, Matricula int(10) unsigned NOT NULL, idCurso int(10) unsigned NOT NULL.

Link para o comentário
Compartilhar em outros sites

  • 0
como faço pra ele exibir a media usando o SQL que voce escreveu acima... pois tentei aqui e não consegui.
Que linguagem você está usando?
e outra coisa os dois alter table que voce digitou confirma pra mim se esta correto, e posta aqui de novo se estiver errado, beleza.
Você aplicou as modificações que mencionei no post anterior? se não aplicou os alter tables para ativação das constraints não vão funcionar.

Link para o comentário
Compartilhar em outros sites

  • 0

estou usando a linguagem php e apliquei os alter tables sim.

mas quero que verifique pois encontrei alguns erros nos alter tables, mas pode ser que eu não tenha percebido se existem mais, vou colocar o codigo que digitou blza. abaixo:

1) ALTER TABE Boletim

ADD CONSTRAINT Boletim_FKIndex1 FOREIGN KEY (idTurma) REFERENCES Turma (idTurma) ON DELETE NO ACTION ON UPDATE NO ACTION,

ADD CONSTRAINT Boletim_FKIndex2 FOREIGN KEY (idDisciplinas) REFERENCES Disciplinas (idDisciplinas) ON DELETE NO ACTION ON UPDATE NO ACTION,

ADD CONSTRAINT Boletim_FKIndex3 FOREIGN KEY (Matricula) REFERENCES Alunos (Matricula) ON DELETE NO ACTION ON UPDATE NO ACTION;

2) ALTER TABE Boletim

ADD CONSTRAINT Turma_FKIndex1 FOREIGN KEY (idCurso) REFERENCES Curso (idCurso) ON DELETE NO ACTION ON UPDATE NO ACTION,

ADD CONSTRAINT Turma_FKIndex2 FOREIGN KEY (Matricula) REFERENCES Alunos (Matricula) ON DELETE NO ACTION ON UPDATE NO ACTION,

ADD CONSTRAINT Turma_FKIndex3 FOREIGN KEY (idDisciplinas) REFERENCES Disciplinas (idDisciplinas) ON DELETE NO ACTION ON UPDATE NO ACTION;

pronto ve essa parte e tambem a media.

Link para o comentário
Compartilhar em outros sites

  • 0

'akira2005', Os códigos dos altertables estão corretos.

Qual a verão do mysql?

quanto a outra parte, não sei nada de php. posso transferir este tópico para o pessoal do php, depois que você resolver o banco.

Link para o comentário
Compartilhar em outros sites

  • 0
o primeiro alter table é boletim( ALTER TABLE BOLETIM ), o segundo alter table é boletim também ou é turma (ALTER TABLE BOLETIM OU É ALTER TABLE TURMA) ?

a versão do meu mysql é 5.0. ok

O segundo é alter table turma

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...