NºEmp |Designação | ReportsTo | Quarto 10 | Diretor | NULO | 1 20 | Gerente Sênior | 10 | 2 30 | Datilógrafo | 20 | (ESTE CARA SE REFERE AO EMpno 10 room) 40 | Programador | 30 | 4
Como faço para que o quarto do EmpNo 30 se refira ao chefe dele, mas não faça o EmpNo 40 se referir ao chefe dele?
No modelo relacional, cada linha representa um conjunto de dados que representa um único item e, portanto, você não 'refere' ao valor de outra linha.
O conceito de um funcionário dividindo um quarto com outro funcionário é semelhante ao relacionamento que você já tem de um funcionário com um gerente. Isso poderia ser representado de forma semelhante na tabela da seguinte forma:
Onde um NULL em SharesRoomWith significa que um funcionário tem seu próprio quarto. Você pode então consultar a lista de funcionários e seus quartos:
para obter:
Isso permite que, se o Diretor mudar de sala, uma atualização seja feita apenas em um local (o número da sala) e a sala do datilógrafo também refletirá essa mudança.
Observe que esse design não é totalmente normalizado, portanto, pode não ser uma solução ideal, mas demonstra pelo menos como você pode representar esse relacionamento.
Não tenho certeza se entendi completamente a pergunta. Você quer dizer que o Datilógrafo está sempre na mesma sala que seu Diretor, e se o Diretor se mudar, o Datilógrafo se move também? Nesse caso, torne a sala dos digitadores NULL e use SQL para obter a sala dele quando precisar: