Informix - Modificación estructura tabla

<<>>
 
Vista:

Modificación estructura tabla

Publicado por Nauj (2 intervenciones) el 23/08/2000 00:00:00
Tengo una base de datos creada sin seguir ningún criterio de normalización. Esto es no existen claves primarias, ni foráneas y hay campos redundantes. Voy a introducir claves, eliminar campos y cambiar el formato de algunos de ellos.

El problema es que las tablas tienen datos. Antes de introducir las modificaciones las voy a vaciar
ya que con algunas en lugar de ´alter table´ voy a hacer un ´drop´ y después un ´create´.(tengo un backup).

Mi duda es la siguiente. Una vez modificadas las tablas al cargar los datos del backup supongo que
habrá problemillas.

¿Qué tipo de problemas puedo tener?.

Supongo que si tengo registros duplicados en una tabla con PK no me dejará cargarla y que las tablas con FK me obligarán a que exista el registro correspondiente en la otra tabla. También tendré problemas de longitudes de campos.
¿puedo tener algún otro problemilla?, ¿es importante el orden al cargar?. Creo que ebo empezar por las que no tengan FK..¿no es así?.

Muchas gracias. Cualquier consejillo será bienvenido.

Nauj
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Modificación estructura tabla

Publicado por fernando peña (4 intervenciones) el 24/08/2000 00:00:00
He leído tus dudas, y yo en tu caso haría lo siguiente :

1.Copia de TODA la bdd ANTES de cualquier alteración.

2."alter table" para todas las tablas a cambiar.
pero cuidado si tienes "links" ( por ejemplo una tabla de artículos compartida en otra b.d.d.)

3.Una vez alteradas todas las tablas,hacer los
"creates index" tabla a tabla.Así comprobarás
si te casca por clave duplicada, en cuyo caso
no se genera el indice y no pasa nada.

4.Hacer "unloads" de todas las tablas,ordenándolas al mismo tiempo. Ejemplo :
unload to "articulos.unl"
select * from articulos
ORDER BY familia,articulo
( siendo familia+articulo la PK)

El fichero descargado estará totalmente ordenado.


5.dbschema -t articulos -d empresaXX >arti.esq

6.drop table aticulos

7.te cojes el fichero arti.esq, y con él te sirves para hacer el "create table articulos.."

8.load from "articulos.unl"

Bien:la tabla articulos, se cargará en la base d.d. totalmente ordenada y contigua.



Una vez hechas todas estas operaciones las tablas están ordenadas,pero la fragmentación de disco
la puedes quitar, haciendo finalmente :

dbexport base-de-datos

-Te cepillas la b.d.d.

dbimport base-de-datos

-Toda la base,estará contigua en la misma zona
del disco pues las grabaciones se harán seguidas.

Esperando sea de tu utilidad
Fernando Peña


6.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Modificación estructura tabla

Publicado por Victor M. (4 intervenciones) el 20/10/2000 00:00:00
Has un sql de cada una de las tablas que vayan a tener FK esto seria por cada tabla para respaldar la informacion asi

unload to "tabla.unl" select unique * from tabla;
unload to "tabla1.unl" select unique * from tabla1;

esto lo que hara es que generara un archivo ascii de cada tabla solo con claves unicas

puedes hacer un dbschema de la base de datos para que te de la estructura de la base de datos y modificar las tablas en el archivo y luego volverlo a ejecutar para crear la base de datos y luego hacer load de los archivos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Modificación estructura tabla

Publicado por dogor54 (6 intervenciones) el 23/04/2001 03:50:25
Hola:
Las ayudas que te dieron son correctas, te agrego lo siguiente: unload de todas las tablas, no dropees las tablas, sino deleteale todos los campos para no perder la estructura, crea una clave principal con todas las columnas que creas necesarias y levantá las filas con dbload (averiguate bien el comando externo). Este comando crea un archivo con las filas que no puede levantar y explica el porqué. Esto te servirá para saber si tenés duplicadas realmente y no te importa no levantarlas o incrementar la clave con otra columna y repetir la operacion.
El tema es que una vez que logres depurar tus tablas, bajándolas y levantándolas, recién ahí podés crear tablas normalizadas e inexadas e insertar las columnas que te interesan en distintas tablas. Ojo si las tablas son muy grandes, una normalización estricta te reduce la performance. No conviene exagerar.
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar