lunes, 23 de junio de 2008

Como generar un informe del catalogo Oracle Designer

De forma similar a otra entrada de este blog en que os proponía como hacer un informe de las tablas y campos de un usuario determinado, a veces me he encontrado con la necesidad de saber que está definido en Oracle Designer para un modelo determinado de datos. Y, sinceramente, nunca he conseguido hacer funcionar bien los supuestos informes del Designer.
Así que me curré esta consulta para tener una visión completa del modelo que estaba definiendo.
Espero que sea de ayuda.
SELECT tab.created_by app,
tab.NAME, tab.remark,col.NAME,col.remark,
(CASE
WHEN datatype = 'NUMBER'
THEN datatype || '(' || maximum_length || NVL2 (decimal_places, ',' || decimal_places, NULL) || ')'
WHEN datatype = 'DATE'
THEN datatype
ELSE datatype || '(' || maximum_length || ')'
END
) tipo, col.null_indicator nulo, col.sequence_number
FROM ci_table_definitions tab, ci_columns col
WHERE col.table_reference = tab.ID
AND tab.table_type = 'TABLE' AND tab.created_by = :USUARIO_DESIGNER
AND tab.NAME LIKE :USUARIO_MODELO
ORDER BY tab.NAME,
col.sequence_number;

Como generar un pseudo catalogo de datos en Oracle

Muchas veces a lo largo de un desarrollo nos vemos obligados a generar un catalogo de datos del modelo de datos que estamos usando, ya que (seamos sinceros) una vez que comienza el desarrollo el modelo de datos y el modelo diseñado empiezan a divergir.
Esto significa que hay que revisar la definición de tablas y campos.
La siguiente consulta permite obtener el modelo de datos de una BBDD ordenado por tablas y con los comentarios de tablas y columnas integrados. Todavía no incluye el marcar los campos que forman parte de la Primary Key, pero todo se andará.
Como sé que puede mejorarse (LOB's, ...) se aceptan consejos.
SELECT (CASE
WHEN column_id = 1 THEN col.table_name
WHEN column_id = 2 THEN tab.comments
ELSE NULL
END ) tabla,
col.column_name columna,colcom.comments,
(CASE WHEN data_type = 'NUMBER'
THEN (CASE WHEN data_precision IS NULL THEN data_type ELSE data_type || '(' || data_precision || ',' || data_scale || ')' END )
WHEN data_type = 'DATE' THEN data_type
ELSE data_type || '(' || data_length || ')'
END ) tipo,
(CASE
WHEN nullable = 'Y' THEN 'NULL'
ELSE 'NOT NULL'
END) nullable
FROM user_objects obj, user_tab_columns col, user_tab_comments tab, user_col_comments colcom
WHERE col.table_name = obj.object_name AND col.table_name = tab.table_name
AND col.table_name = colcom.table_name AND col.column_name = colcom.column_name
AND obj.object_type = 'TABLE'
ORDER BY col.table_name, col.column_id;

MindMapping & Freemind (y además es gratis)

Hace ya bastante tiempo que me encontré con una herramienta open-source que se llama freemind. Es una herramienta de Mind Mapping (o Mapas Mentales) que permite estructurar contenidos, ideas, tareas, ... Además almacena todo en XML, con lo que permite manipular la información de forma automatizada (si queremos).
Yo la utilizo ampliamente para mis proyectos, ya sea para mantener las tareas a realizar, gestionar contenidos funcionales, o simplemente no olvidarme de cosas importantes.
Aunque oficialmente no ha llegado a la versión 1.0, os aseguro que es muy estable.
Espero que os sea de ayuda.

Se inicia el blog de getxo17

Esta es la primera entrada que escribo en un blog. Y prefiero que sea en el mio.
¿Cuál es el objeto de esto blog? Por ahora, y si no hago un cambio de misión por el camino, me servirá para publicar mis experiencias técnicas o de gestión en este mundillo de la informática que a tantos nos da de comer. Eso supondrá que intentaré registrar opiniones, pensamientos, ideas u enlaces que me parezcan interesantes.
En realidad, no es importante que nadie me lea. Con tal de que me sirva de registro propio de ciertas ideas o trozos de código que considere interesantes, me doy con un canto en los dientes.