Santiago. Agradesco mucho tu respuesta. Realmente he entendido muchos conceptos los cuales me has explicado con total claridad. Sin embargo aun no encuento una estrategia adecuada de nomenclatura de mis tablas, esto porque como tu claramente dices a la hora de cambiar con RENAME TABLE cuando necesite recuperar datos a partir de mis scripts no voy a recuperar el nombre de mi formato de registro. (y por ende mis RPG's tendrían un error de nivel)
Había pensado en algo así :
CREATE TABLE TB_CLIENTES (
      Codigo               INTEGER,
      Descripcion          VARCHAR(20)
);
RENAME TABLE CLIENTES TO SYSTEM NAME F5101

Sin embargo, no es lo que quiero, pues me pone como nombre de registro TB_CL00001 (como tu lo has explicado perfectamente) Si en algún momento se me ocurre cambiar de nombre a TB_CLIENTES a la hora de volver a generar el objeto a partir del script no tengo el mimo nombre de formato... Entonces no me queda otra alternativa que partir del nombre definitivo del formato de registro y a partir de allí cambiar el nombre cambiar el nombre SQL, Es decir mis scripts (fuentes) quedarían así :

CREATE TABLE F5101 (
      Codigo               INTEGER,
      Descripcion          VARCHAR(20)
);
RENAME TABLE F5101 TO NAME TB_CLIENTES

y nunca más cambiar el nombre interno (??)..
Pero esta alternativa tambien tiene una desventaja (no técnica), pues que es más natural que yo haga mi "Analisis y Diseño" (bueno esas cosas teroricas.. ) siempre pensando en primer lugar en el nombre de la tabla (de la entidad TB_CLIENTES) y luego en el nombre interno.. y como ves esto me obliga a partir al revés

Para terminar toda esta biblia, Te entendí en todo lo que me dijiste excepto cuando me dices "Así que hemos optado por renombrar el registro en los programas que lo precisan". Me gustaría que aclares como lo haces exactamente
Un saludo cordial desde Piura Perú
y nuevamente muchas gracias

-------------------------------
Carlos Augusto Correa García
Desarrollo de Sistemas
CMAC PIURA S.A.C.

Santiago G Martí escribió:



Hola Carlos,

Nosotros hace 3 años que creamos todos los ficheros como tablas SQL con
integridad referencial.

Tuvimos algunos problemas con el Navigator, que me dicen ya resueltos en
V5R3, y decidimos no utilizarlo y en su lugar utilizar STRSQL y RUNSQLSTM
desde emulaciones 5250.

Que yo sepa, la instrucción CREATE TABLE crea un fichero físico con un solo
miembro y un formato de registro, los 3 con el mismo nombre.

La regla de nomenclatura es que el nombre del fichero será igual al de la
tabla SQL, pasado a mayúsculas, si el nombre de la tabla tiene 10
caracteres o menos.
Si el nombre de la tabla es de más de 10 caracteres el nombre del fichero,
miembro y registro serán los 5 primeros caracteres del nombre de la tabla
más una secuencia numérica entre 00001 y 99999 en caso de que los cinco
primeros caracteres coincidan con los de otro fichero.

La instrucción SQL RENAME TABLE te permite cambiar el nombre de la tabla, y
el nombre interno del sistema (nombre del fichero), pero no cambia el
nombre del miembro ni el del registro.
La instrucción CPF RNMM te permite cambiar el nombre del miembro.
No existe ninguna instrucción que te permita cambiar el nombre del
registro, al menos que yo sepa, para un fichero creado como tabla que
lógicamente no tiene DDS.

Nosotros, al crear la tabla, le damos el nombre que queremos como nombre
interno, con una longitud de 10 caracteres como máximo y siguiendo nuestras
reglas de nomenclatura.

Como el nombre del fichero coincide con el nombre del registro, en los
programas RPG con acceso tradicional es necesario renombrar el registro.

Al principio lo que hacíamos era crear la tabla con el nombre deseado de
registro y luego con RENAME TABLE cambiábamos el nombre de la tabla y el
nombre interno y con RNMM el del miembro, pero hemos abandonado esta
costumbre, ya que si recuperas el script de definición con el Navigator o
con las API que lo permiten, no se recuperan estas características y a la
larga tienes problemas.

Así que hemos optado por renombrar el registro en los programas que lo
precisan.

Nosotros almacenamos los script de definición, recuperados desde los
tablas, en miembros fuente, para poder utilizar RUNSQLSTM para
reproducirlos.

A la pregunta ¿para que sirve el nombre de miembro?, la respuesta es para
nada si sólo trabajas con SQL o principalmente con SQL.
Todas tus tablas tendrán un solo miembro, y mejor así.
Lo que sí te recomiendo es que el nombre del miembro coincida con el nombre
interno de la tabla, ya que aunque la mayoría de utilidades especifican
*FIRST para el nombre del miembro, algunas he visto que indican *FILE y que
te podrían fallar.

Si la pregunta es porqué una tabla debe tener un miembro, la respuesta es
que la forma de implementar SQL sobre el sistema de archivos de AS/400 (o
como se llame) es utilizar un objeto PF para almacenar la definición,
atributos, permisos, punteros, etc.
Un objeto PF puede tener un miembro, varios miembros o ningún miembro, pero
un PF no contiene datos o registros.
Los datos (o registros) se almacenan en miembros.


Bueno, perdona la extensión.
Espero haberme explicado y si lo deseas puedo ampliar algún concepto.


Saludos,
                 ---------------------------
                   Santiago Martí
                      Dusen, S.A.
                 ---------------------------






Carlos Augusto Correa García <[EMAIL PROTECTED] Para om.pe> [email protected] Enviado por: cc forum.help400-adm [EMAIL PROTECTED] Asunto Re: Consulta DB2 y SQL 05/04/2006 15:12 Por favor, responda a [EMAIL PROTECTED] bios.es



Amigos del foro
Si tuevieran alguna opinion u opinion se los agradeceré
Saludos ;-)

Carlos Augusto Correa García
Desarrollo de Sistemas
CMAC PIURA S.A.C.

Carlos Augusto Correa García escribió:

Bueno días foro,
El presente es para hacerles la siguiente consulta.
Pretendo abocar mis trabajos así como los de todo el equipo de
desarrollo de la empresa en la que trabajo, al uso de DB2 y SQL.
Para tal efecto creo mis tablas a través de iSeries Navigator, sin
embargo con SQL solo puedo manipular el nombre del objeto relacional
(tabla) creado en DB2; pero yo necesito mantener el estandar de
denominación de objetos (del sistema operativo) que uso en mis
programas nativos RPG, CL y otros.
Por ejemplo: Creo una tabla (create table...) llamada "Clientes".. sin
embargo no me permite definirle el nombre interno del Sistema (el cual
ya tengo estandarizado), por ejemplo "F2001",  tengo que entrar a la
opcion "Redenominar" para definirle el nombre interno del sistema
operativo. Que es como los voy a llamar desde mis programas RPG.
Además me crea un nombre de formato de registro en forma automática,
para este ejemplo: "CLIEN00001", el que necesito muchas veces
referenciar desde mis programas nativo y él cual no lo puedo cambiar.
Todos estos cambios tengo que hacerlos en forma manual, esto implica
que cuando yo haga un backup de mis scripts SQL no voy a guardar estas
caracteristicas, y básicamente tendría que revisar todos mis RPG en
caso que los quisiera volver a generar desde cero.
Si tuvieran algunas buenas prácticas de estanderes de denominación y
desarrollo sería muy interesante
Otra pregunta, ¿Para que me sirve el nombre de miembro? ¿Cual es la
diferencia con el nombre del formato de registro?
Muchas gracias por sus respuestas

Saludos

----------------------------------
Carlos Augusto Correa García
Desarrollo de Sistemas
CMAC PIURA S.A.C.

__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400

__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400



__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400

__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400

Responder a