Programación General > Visual Basic 6.0 e inferiores
Re: ¿Que signigica "compactar" una base de datos?
soco1980:
En principio muchas gracias a todos por todas las respuestas recibidas, y enhorabuena por haber tanta gente como vosotros.
En segundo lugar, me ha parecido muy interesante la ultima respuesta recibida, ya que yo en mi base de datos tengo una clave principal autonumerica, y claro, cada vez que borro un registro, ese numero nunca mas es vuelto a usar, con la consiguiente perdida intuitiva de ordenacion.
Si lo he entendido bien (corrijanme si me equivoco), al compactar la base de datos esos numeros son reajustados con lo cual son usados todos sin excepcion en orden ascendente.
Y por otra parte (corrijanme si vuelvo a equivocarme), yo soy administrador de sistemas, con lo cual "quiero" asociar la compactacion de una base de datos haciendo similitud con un archivo que es borrado logicamente (que no fisicamente) del disco duro, sobre el cual se le ha realizado posteriormente una defragmentacion, con lo cual ha habido una ordenacion y una mejora del acceso al disco duro (permitiendome la similitud con la mas rápida y mejor ordenacion de una base de datos)
Muchas gracias nuevamente, un saludo.
chiaravel:
Me parece que entendiste mal al profesor Movilla.
Primero - La compactacion te permite re-usar los ultimos datos autonumericos borrados, o sea que si tienes lo siguiente
campo Autonumerico con valor
1
2
3 Marcado para borrar
4
5
6
7
8 Marcado para borrar
luego de la compactacion te quedara lo siguiente...
1
2
4
5
6
7
y el proximo disponible sera el nro.8 y no el nro 3. ( el nro.3 lo pierdes ).
Segundo
te hiciste un embrollo con la segunda parte. simplemente esa Bd que tienes pesara menos porque se le borraran fisicamente los registros que estaban marcados para su borrado.
Espero que te quede un poco mas claro
Suerte
J.M.Movilla:
Recuerda que SOLO SE RECUPERA EL REGISTRO ÚLTIMO... No se reorganizan los autonuméricos intermedios... Esto sirve fundamentalmente para el caso de que hagas un append (addnew) y te arrepientas antes de añadir otro registro... En ese caso podrás borrarlo y recuperar su hueco compactando la bd. Por supuesto se recuperarán los registros asociados a ese número en otras tablas, siempre que los hayas borrado también (como es natural...)
Lo otro, renumerar, no es posible con autonuméricos.
Saludos
Pd.- Veo que Chiaravel te ha dado contestación un segundo antes que yo... Porque él es más rápido y más ágil... Con 40 años menos... ya podrá...
soco1980:
Gracias por aclararmelo, ya le he pillado el hilillo a la cuestion, y vaya, mi gozo en un pozo, porque crei justo todo lo contrario, que compactando, lo registros vacios de claves autonumericas se autoordenaban si dejar espacios.
Muchas gracias, un saludo.
J.M.Movilla:
Si te interesa mucho el evitar que haya fallos en el campo autonumérico (cosa que en principio no debe darte mala sangre... porque el Id sólo tiene que servir para lo que es, correlacionar una tabla principal con otras derivadas...) puedes insertar una llamada a la función en que hagas el compactado (cerrando previamente la bd y reabriéndola después, recuperando los punteros...) detrás de la instrucción de borrar el último registro, que es el que habitualmente tiene más probabilidades de ser eliminado.
Pero insisto en que no te hagas mala sangre con ver saltos en el campo autonumérico; no lo presentes nunca en pantalla; para sustituirle muestra un contador, ¿no te parece?
¿Tú te imaginas la que armabas si tuvieras que ir disminuyendo el Id en todas las tablas desde el registro vacío hasta el fin de fichero, y volver a buscar otro registro vacío y vuelta a disminuir el Id a todas las tablas...? Además de la pérdida de tiempo... Dios mío si a mitad de camino te quedas sin fluído energético... Y todo porque no te gusta ver saltos en los códigos... Anda y que le den morcilla... ¿no te parece?
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa