Considere o diagrama Entidade Relacionamento (ER) fornecido a seguir representando o domínio de informações associado à Gestão Acadêmica Universitária.
Considere também a reprodução do script MySQL automaticamente gerado a partir de uma ferramenta CASE apresentado nos quadros a seguir.
/* Início – 44ª questão */
CREATE TABLE `instituto` (
`id` INTEGER PRIMARY KEY AUTO_INCREMENT
);
CREATE TABLE `faculdade` (
`id` INTEGER PRIMARY KEY AUTO_INCREMENT,
`instituto` INTEGER NOT NULL
);
CREATE INDEX `idx_faculdade__instituto` ON `faculdade` (`instituto`);
ALTER TABLE `faculdade` ADD CONSTRAINT `fk_faculdade__instituto` FOREIGN KEY
(`instituto`) REFERENCES `instituto` (`id`);
CREATE TABLE `curso` (
`id` INTEGER PRIMARY KEY AUTO_INCREMENT,
`faculdade` INTEGER NOT NULL
);
CREATE INDEX `idx_curso__faculdade` ON `curso` (`faculdade`);
ALTER TABLE `curso` ADD CONSTRAINT `fk_curso__faculdade` FOREIGN KEY (`faculdade`)
REFERENCES `faculdade` (`id`);
CREATE TABLE `aluno` (
`id` INTEGER PRIMARY KEY AUTO_INCREMENT,
`curso` INTEGER NOT NULL
);
CREATE INDEX `idx_aluno__curso` ON `aluno` (`curso`);
ALTER TABLE `aluno` ADD CONSTRAINT `fk_aluno__curso` FOREIGN KEY (`curso`)
REFERENCES `curso` (`id`);
CREATE TABLE `professor` (
`id` INTEGER PRIMARY KEY AUTO_INCREMENT,
`instituto` INTEGER NOT NULL
);
CREATE INDEX `idx_professor__instituto` ON `professor` (`instituto`);
ALTER TABLE `professor` ADD CONSTRAINT `fk_professor__instituto` FOREIGN KEY
(`instituto`) REFERENCES `instituto` (`id`);
CREATE TABLE `turma` (
`id` INTEGER PRIMARY KEY AUTO_INCREMENT,
`professor` INTEGER NOT NULL
);
CREATE INDEX `idx_turma__professor` ON `turma` (`professor`);
ALTER TABLE `turma` ADD CONSTRAINT `fk_turma__professor` FOREIGN KEY (`professor`)
REFERENCES `professor` (`id`);
/* Continuação – 44ª questão*/
CREATE TABLE `aluno_turmas` (
`aluno` INTEGER NOT NULL,
`turma` INTEGER NOT NULL,
CONSTRAINT `pk_aluno_turmas` PRIMARY KEY (`aluno`, `turma`)
);
CREATE INDEX `idx_aluno_turmas` ON `aluno_turmas` (`turma`);
ALTER TABLE `aluno_turmas` ADD CONSTRAINT `fk_aluno_turmas__aluno` FOREIGN KEY
(`aluno`) REFERENCES `aluno` (`id`);
ALTER TABLE `aluno_turmas` ADD CONSTRAINT `fk_aluno_turmas__turma` FOREIGN KEY
(`turma`) REFERENCES `turma` (`id`);
CREATE TABLE `disciplina` (
`id` INTEGER PRIMARY KEY AUTO_INCREMENT,
`turma` INTEGER NOT NULL
);
CREATE INDEX `idx_disciplina__turma` ON `disciplina` (`turma`);
ALTER TABLE `disciplina` ADD CONSTRAINT `fk_disciplina__turma` FOREIGN KEY
(`turma`) REFERENCES `turma` (`id`);
CREATE TABLE `periodoletivo` (
`id` INTEGER PRIMARY KEY AUTO_INCREMENT,
`turma` INTEGER NOT NULL
);
CREATE INDEX `idx_periodoletivo__turma` ON `periodoletivo` (`turma`);
ALTER TABLE `periodoletivo` ADD CONSTRAINT `fk_periodoletivo__turma` FOREIGN KEY
(`turma`) REFERENCES `turma` (`id`)
Quanto ao diagrama e ao código apresentados, é correto afirmar:
Enquanto o diagrama ER descreve que uma instância de ‘Disciplina’ está vinculada com um número potencialmente ilimitado de instâncias de ‘Turma’, o código MySQL exprime que uma instância de ‘Disciplina’ está vinculada com uma única instância de ‘Turma’.
A tabela denominada ‘alunos_turmas’ criada no script MySQL não possui correspondente no diagrama original. Sua criação, portanto, não é necessária para manter o mapeamento entre o diagrama original e o script.
A tabela denominada ‘PeriodoLetivo’ no script MySQL corresponde à entidade de mesmo nome mantendo o relacionamento de suas instâncias com ‘Turma’ no MySQL em concordância com o diagrama original.
A tabela denominada ‘Turma’ corresponde exatamente à descrição da entidade de mesmo nome e seus relacionamentos.
Enquanto o diagrama ER descreve que uma instância de ‘Faculdade’ está vinculada com um número potencialmente ilimitado de instâncias de ‘Instituto’, o código MySQL exprime que as instâncias da tabela ‘Faculdade’ estão vinculadas com somente uma instância da tabela ‘Instituto’.