Algunos datos de gestión de aplicaciones de acuerdo con la información jerárquica , como los estados formados por condados que a su vez contienen ciudades. Usted puede tener la tentación de organizar la información en tablas separadas en el DBMS - uno para cada nivel de la jerarquía -, pero una solución más elegante utiliza una tabla de referencia a sí misma , lo que es más fácil de manejar y se adapta a una amplia variedad de datos. Autorreferencia Tabla
Para crear una tabla de autorreferencia , usted comenzará con dos campos, un número de identificación y un número ID padres. Para estos campos , puede añadir cualquier otros necesarios para la aplicación , como el nombre , la descripción , la ubicación o la población. Para mayor comodidad , se puede establecer el número de identificación a un tipo de campo de numeración automática para que la base de datos de números de forma automática nuevos registros en orden ascendente. Las referencias Identificación padres el número de identificación del registro principal en la jerarquía , si el registro no tiene padre , puede configurar este campo a cero. Por ejemplo , el récord de California tiene un diámetro interior de uno y una identificación con los padres de cero. El registro para el Condado de San Francisco tiene un ID de dos y un ID padres de uno. Cada registro hijo en la tabla hace referencia a los registros primarios en la misma mesa , . La mesa es de autorreferencia
Consolidación
Uno de los efectos de las tablas de referencia a sí misma es una consolidación de varias tablas en una sola tabla . Tener menos tablas simplifica la base de datos y facilita su mantenimiento . Sistemas de bases de datos modernos se adaptan fácilmente a millones de registros por tabla , por lo que mantener todos los elementos de datos de una jerarquía en una sola tabla no es un problema . Al establecer el campo ID a una clave principal y el ID de los padres a un índice, usted puede localizar fácilmente todos los registros a lo largo de cualquiera de las ramas de la jerarquía.
Flexibilidad
una base de datos que tiene una tabla para cada nivel en una jerarquía funciona bien hasta que aparece un nuevo nivel, que debe entonces agregar una nueva tabla para acomodar el cambio y modificar todos los programas de aplicación que utilizan la base de datos . Por el contrario , una mesa de autorreferencia adapta a cualquier número de niveles jerárquicos . El campo ID padres siempre apunta al siguiente nivel de la jerarquía , por lo que los registros de formar una cadena constante. El número de niveles en la jerarquía puede ser la misma para todos los registros primarios o puede variar, la tabla de autorreferencia maneja cualquier caso
cascada Eliminar
Cuando . una tabla de referencia a sí misma contiene muchos registros de datos , usted puede preguntarse qué hacer cuando se elimina un registro primario . A menos que también elimina todos los registros secundarios , corre el riesgo de crear "huérfanos ", o registros con identificadores de los padres no válidos. Afortunadamente , existe un mecanismo para manejar esta situación de forma automática. Cuando se crea el campo ID de matriz, se puede especificar que tiene un campo de clave externa , y utilice el campo ID como clave principal de la tabla . Una vez hecho esto, se puede añadir la restricción , "ON DELETE CASCADE " para el campo . Con la restricción y la configuración de clave externa en su lugar, la base de datos , se eliminarán todos los registros secundarios correspondientes cada vez que se elimina un registro primario .