Examinando a estrutura atual da tabela Employee
O banco de dados de exemplo AdventureWorks contém uma tabela Employee no esquema HumanResources . Para evitar alterar a tabela original, este passo cria uma cópia da tabela Employee nomeada EmployeeDemo. Para simplificar o exemplo, você copia só cinco colunas da tabela original. Então, você examina a tabela HumanResources.EmployeeDemo para revisar como os dados são estruturados em uma tabela sem usar o tipo de dados hierarchyid.
Para copiar a tabela Employee
Em uma janela Editor de Consultas, execute o código seguinte para copiar a estrutura de tabela e dados da tabela Employee em uma tabela nova nomeada EmployeeDemo.
USE AdventureWorks ; GO SELECT EmployeeID, LoginID, ManagerID, Title, HireDate INTO HumanResources.EmployeeDemo FROM HumanResources.Employee ; GO
Para examinar a estrutura e dados da tabela EmployeeDemo
Esta nova tabela EmployeeDemo representa uma tabela típica em um banco de dados existente que você pode querer migrar para uma nova estrutura. Em uma janela de Editor de Consultas, execute o código seguinte para mostrar como a tabela usa uma auto-junção para exibir as relações de funcionário/gerente:
SELECT Mgr.EmployeeID AS MgrID, Mgr.LoginID AS Manager, Emp.EmployeeID AS E_ID, Emp.LoginID, Emp.Title FROM HumanResources.EmployeeDemo AS Emp LEFT JOIN HumanResources.EmployeeDemo AS Mgr ON Emp.ManagerID = Mgr.EmployeeID ORDER BY MgrID, E_ID
Conjunto de resultados.
MgrID Manager E_ID LoginID Title NULL NULL 109 adventure-works\ken0 Chief Executive Officer 3 adventure-works\roberto0 4 adventure-works\rob0 Senior Tool Designer 3 adventure-works\roberto0 9 adventure-works\gail0 Design Engineer 3 adventure-works\roberto0 11 adventure-works\jossef0 Design Engineer 3 adventure-works\roberto0 158 adventure-works\dylan0 Research and Development Manager 3 adventure-works\roberto0 263 adventure-works\ovidiu0 Senior Tool Designer 3 adventure-works\roberto0 267 adventure-works\michael8 Senior Design Engineer 3 adventure-works\roberto0 270 adventure-works\sharon0 Design Engineer 6 adventure-works\david0 2 adventure-works\kevin0 Marketing Assistant ...
Os resultados continuam por um total de 290 linhas.
Observe que a cláusula ORDER BY fez com que a saída listasse os relatórios diretos de cada nível de administração junto. Por exemplo, todos os sete relatórios diretos de MgrID 3 (roberto0) são listados adjacentes um ao outro. Embora não seja impossível, é muito mais difícil de agrupar todos aqueles que eventualmente se reportem ao MgrID 3.
Na próxima tarefa, nós criaremos uma nova tabela com um tipo de dados hierarchyid e moveremos os dados para a nova tabela.