Questão nº 31
Questão de Informática · FCC TRT6 2018 (nº 31)
Considere hipoteticamente a existência de empresas que terceirizam o fornecimento de Recursos Humanos a outras empresas. Cada funcionário pode ser cadastrado em várias dessas empresas terceirizadas, nos mesmos cargos ou em cargos diferentes. Um modelo abstrato de dados dessa relação entre Empresa_Terceirizada_RH e Funcionario é mostrado abaixo.

Para um Analista especializado em Tecnologia da Informação implementar o modelo mostrado na figura, em um Sistema Gerenciado de Banco de Dados relacional, terá que
- Autilizar a linguagem SQL, adicionando o parâmetro CROSS REFERENCES à instrução CREATE TABLE na criação de ambas as tabelas para estabelecer a relação n:m entre elas.
- Bexcluir o campo `cargoFuncionario` da tabela `Funcionario` e inserir na tabela `Empresa_Terceirizada_RH`, pois o cargo é cadastrado quando o funcionário faz a inscrição na empresa terceirizada.
- Ccriar uma tabela de ligação entre `Empresa_Terceirizada_RH` e `Funcionario`, fragmentando o relacionamento n:m em dois relacionamentos 1:n e colocando o campo `cargoFuncionario` como atributo simples nessa tabela de ligação. (alternativa correta)
- Dcriar uma tabela de ligação entre `Empresa_Terceirizada_RH` e `Funcionario`, fragmentando o relacionamento n:m em dois relacionamentos 1:1, já que não é possível implementar a relação n:m em bancos de dados relacionais.
- Eexcluir o atributo `cargoFuncionario`, pois cada funcionário poderá ter um cargo diferente em cada empresa terceirizada onde se cadastrar.
Resposta comentada
Gabarito Alternativa C
Em bancos de dados relacionais, um relacionamento N:M (muitos para muitos) não pode ser implementado diretamente e precisa ser transformado em dois relacionamentos 1:N (um para muitos) através de uma tabela intermediária.
- A) Incorreta: A linguagem SQL não possui o parâmetro
CROSS REFERENCESpara estabelecer relações N:M. Relacionamentos entre tabelas são definidos principalmente com chaves estrangeiras (FOREIGN KEY) para relações 1:N ou N:1, e N:M exige uma tabela adicional. - B) Incorreta: Mover
cargoFuncionariopara a tabelaEmpresa_Terceirizada_RHestá incorreto. O enunciado diz que "Cada funcionário pode ser cadastrado em várias dessas empresas terceirizadas, nos mesmos cargos ou em cargos diferentes". Isso significa que o cargo é específico para a combinação de funcionário e empresa, não um atributo exclusivo da empresa ou do funcionário isoladamente. Se estivesse naEmpresa_Terceirizada_RH, significaria que a empresa tem um único cargo para todos os funcionários, o que não faz sentido. A armadilha aqui é pensar que o cargo é da empresa, quando na verdade ele qualifica o vínculo entre funcionário e empresa. - C) Correta: Esta é a forma padrão de implementar um relacionamento N:M em um banco de dados relacional. Cria-se uma tabela de ligação (também chamada de tabela associativa ou intermediária) que conterá as chaves primárias das duas entidades originais (
Empresa_Terceirizada_RHeFuncionario) como chaves estrangeiras. Essas chaves estrangeiras, juntas, formam a chave primária da tabela de ligação. Isso "fragmenta" o relacionamento N:M em dois relacionamentos 1:N (um daEmpresa_Terceirizada_RHpara a tabela de ligação, e outro doFuncionariopara a tabela de ligação). O atributocargoFuncionarioé um atributo do relacionamento (pois o cargo varia de acordo com a empresa em que o funcionário está alocado), e, portanto, deve ser colocado como um atributo simples nessa tabela de ligação. - D) Incorreta: Embora seja verdade que relacionamentos N:M não são implementados diretamente, a fragmentação ocorre em dois relacionamentos 1:N (um para muitos), e não 1:1 (um para um). A tabela de ligação é a solução para implementar N:M.
- E) Incorreta: O atributo
cargoFuncionarionão pode ser excluído. A informação de que "cada funcionário poderá ter um cargo diferente em cada empresa terceirizada" é crucial e precisa ser armazenada. Excluí-lo resultaria na perda de dados importantes sobre o vínculo do funcionário com a empresa.
Fonte: FCC TRT6 2018 Analista Judiciário – Área Apoio Especializado – Especialidade Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.