Alguns aplicativos de gerenciamento de banco de dados de lidar com informações hierárquicas , como estados composta por municípios que por sua vez contêm cidades. Você pode ser tentado a organizar essas informações em tabelas separadas em seu DBMS - um para cada nível da hierarquia -, mas uma solução mais elegante usa uma tabela de auto-referência , que é mais fácil de gerenciar e acomoda uma ampla variedade de dados. Auto-referência Tabela
Para criar uma tabela de auto-referência , você vai começar com dois campos, um número de identificação e um número de identificação do pai. Para esses campos , você pode adicionar qualquer outro apropriadas para a aplicação, tais como nome, descrição, localização ou população. Para maior comodidade , você pode definir o número de identificação de um tipo de campo auto- numeração de modo que o banco de dados de números automaticamente novos registros em ordem crescente. A identificação do pai faz referência ao número de identificação do registro pai na hierarquia , se o registro não tem pai , você pode definir este campo para zero. Por exemplo , o registro para a Califórnia tem uma identificação de um ano e ID pai de zero. O recorde de San Francisco County tem uma identificação de dois anos e pai de um ID . Cada registro filho na tabela referente registros pai na mesma tabela , a tabela é auto-referência
Consolidação
Um efeito de tabelas de auto-referência é uma consolidação . de várias tabelas em uma única tabela . Ter menos tabelas simplifica o banco de dados e facilita a sua manutenção. Sistemas de banco de dados modernos acomodar facilmente milhões de registros por tabela , mantendo assim todos os elementos de dados de uma hierarquia em uma única tabela não é um problema . Ao definir o campo ID para uma chave primária ea identificação dos pais a um índice, você pode facilmente localizar todos os registros ao longo de qualquer ramo da hierarquia.
Flexibilidade
Um banco de dados que tem uma tabela para cada nível em uma hierarquia funciona bem até que um novo nível aparece, como você deve então adicionar uma nova tabela para acomodar a alteração e modificar todos os aplicativos que usam o banco de dados. Por outro lado, uma tabela de auto-referência acomoda qualquer número de níveis hierárquicos . O campo ID pai sempre aponta para o próximo nível da hierarquia, de modo que os registros formam uma cadeia consistente. O número de níveis na hierarquia pode ser o mesmo para todos os registros pai ou pode variar ; tabela de auto-referência lida com um ou outro caso
Cascading Excluir
Quando . uma tabela de auto-referência contém muitos registros de dados , você pode se perguntar o que fazer quando você excluir um registro pai . A menos que você também exclui todos os registros filho , corre o risco de criação de "órfãos ", ou registros com IDs pai inválido . Felizmente, existe um mecanismo para lidar com essa situação automaticamente. Quando você cria o campo ID pai, você pode especificar que ele tem um campo de chave estrangeira, e use o campo ID como chave principal da tabela. Depois de ter feito isso, você pode adicionar a restrição, " ON DELETE CASCADE " para o campo. Com a restrição e configurações de chave estrangeira no lugar, o banco de dados irá apagar todos os registros filho correspondentes sempre que você excluir um registro pai .