Algoritmo
Questão 1: Elabore o modelo ER para a especificação abaixo
Uma empresa de software precisa de um sistema para gerenciar seus funcionários que trabalham com sistemas. Os funcionários que desenvolvem os sistemas podem ser analistas ou programadores (nunca as 2 funções ao mesmo tempo), e desejamos para todos eles saber o cpf, nome, a data de nascimento, sexo, endereço, telefones (pode haver mais de um telefone de contato) e tempo de experiência, que deverá ser calculado a partir de uma data que chamaremos de data do primeiro emprego na área de informática.
Todos os analistas possuem nível superior, e por isso deseja-se saber o ano de conclusão da graduação e o curso.
Alguns analistas gerenciam outros funcionários (que podem ser tanto analistas quanto programadores). Todos os programadores obrigatoriamente são gerenciados por um analista.
Os programadores possuem salário fixo e podem ser: contratados ou estagiários. Para os estagiários, deseja-se armazenar a data de início e término do estágio. Um programador contratado pode receber auxílio de estagiários. Um estagiário pode auxiliar algum programador em um determinado período, ou seja, o estagiário A pode auxiliar o funcionário X durante 2 semanas, e depois disso pode passar a auxiliar o funcionário Y ou exercer alguma outra atividade sem auxiliar nenhum programador.
A empresa trabalha com várias linguagens de programação, e deseja-se saber que programador possui experiência em que linguagem. Um funcionário deve dominar ao menos uma linguagem de programação (mas pode dominar várias), e uma linguagem pode ser dominada por no mínimo uma pessoa para ser cadastrada, e normalmente é dominada por várias. O mesmo acontece com os SGBDs utilizados, que podem ser (mysql, postgresql, sql server, oracle e outros).
Para desenvolver um sistema a empresa utiliza obrigatoriamente uma única linguagem de programação e um único
SGBD. Um SGBD, assim como uma linguagem, pode ser utilizado em vários sistemas.