Tenho as entidades "Estudante" e "Curso" e estão ligadas a uma relação muitos-para-muitos chamada "Exame". A relação "Exame" tem um atributo "Grade". Para este modelo ER, fiz um esquema relacional:
Student(StudentID, StudentName, DoB)
Course(CourseID, CourseName)
Exam(StudentID, CourseID, Grade)
Alguém pode explicar como você colocaria em um esquema relacional o fato de que um aluno não pode obter várias notas para um único curso? Por exemplo, não podemos ter registros como (Student1, Course1, Grade1)
e (Student1, Course1, Grade2)
.
Você criaria uma restrição exclusiva sobre
exam (StudentId, CourseId)
isso normalmente seria alcançado com um índice exclusivo nessa tabela que cobrisse as duas colunas.Aqui está uma demonstração rápida no MySql
Em um banco de dados relacional, cada tabela deve ter uma chave primária.
Uma Chave Primária pode ser uma coluna, como StudentId, ou pode ser uma Chave Composta, como (StudentID, CourseID), que é exatamente o que você deve usar para o Exame.
Em seguida, a Chave Primária do Exame garante que "um aluno não pode obter várias notas para um único curso", porque isso exigiria várias linhas com os mesmos valores (StudentID, CourseID).