Anda di halaman 1dari 6

Tablas Adicionales Saint Enterprise Administrativo (SEA).

Las tablas adicionales se generan o crean anexas relacionadas a las tablas MAESTRAS o
TRANSACCIONALES en el SEA.

Algunas tablas tienen la particularidad que pueden almacenar por cada registro en la tabla
materna uno (SIMPLE) o varios (MÚLTIPLES), por citar un ejemplo, a un cliente se le puede
crear una tabla adicional o grupo que pueda almacenar un registro adicional por cada cliente
(dirección personal, nombre del gerente, etc.) o un grupo que pueda contener varios registros
por cada cliente (Vehículos del cliente, hijos del cliente, etc), de acuerdo a la necesidad o
requerimiento del usuario.

A cada tabla de un maestro (Clientes, Proveedores, Productos, Operaciones, Bancos,


Beneficiarios, etc) se le puede anexar una o más tablas adicionales. Cada una de estas tablas
son llamadas o interpretadas por el SEA como Grupos.

Cada tabla está basada o creada sobre una tabla MATERNA sobre la cual va a contener
información. Normalmente – con algunas excepciones que se comentarán más adelante - las
tablas maternas son las tablas maestras y/o transaccionales del sistema y están representadas
por el nombre de la tabla: Clientes: SACLIE; Proveedores: SAPROV; Facturas: SAFAC;
Beneficiarios: SBBENE, etc.

Adicionalmente al control de las tablas adicionales, el SEA mantiene un sub sistema de


DICCIONARIO para la utilización en reportes que deberá ser actualizado cada vez que se agrega
o se retira un grupo o un campo de las tablas adicionales.

Dicho diccionario está conformado por las tablas SATABL y SAFIEL.

Las tablas utilizadas por el SEA para el manejo y control de las TABLAS ADICIONALES son:

SAAGRUPOS : Contiene la información sobre todas las tablas adicionales que se han anexado
a la base de datos del SEA.

Campos:
CodTbl: Nombre o código de la tabla materna. (SACLIE, SAPROV, etc)
NumGrp: Número de tabla o grupo para la tabla materna. (1,2..N)
NombreGrp: Es el nombre del grupo tal y como está especificado en la tabla.
AliasGrp: Es el nombre que se le especificó para dicho grupo. Normalmente deberían
tener el mismo nombre pero por especificaciones del SQL, los nombre no
se almacenan con espacios en blanco, acentos, ñ u otros caracteres especiales
y de ahí la dualidad de NombreGrp y AliasGrp.
EsTrans: Indica si la tabla contiene uno o más registros por cada registro principal en
la tabla MATERNA. 0: un solo registro; 1: múltiples registros.
NMeses,
NMovim Campos previstos para controlar la cantidad de registros a guardar en los
grupos múltiples (no implementados).

SAACAMPOS: Contiene la información sobre todos y cada uno de los campos definidos en
las diferentes tablas adicionales o Grupos que hayan sido creadas.
Esta información es referencial para la utilización interna del SEA ya que
que todas y cada una de las tablas creadas por el sistema son explícitas
y sus campos y tipos de data se rigen de acuerdo al SQL.

Campos:
CodTbl: Nombre o código de la tabla materna. (SACLIE, SAPROV, etc)
NumGrp: Número de tabla o grupo para la tabla materna. (1,2..N)
NombreCpo: Es el nombre del campo tal y como está especificado en la tabla.
AliasCpo: Es el nombre que se le especificó para dicho campo. Normalmente deberían
tener el mismo nombre pero por especificaciones del SQL, los nombre no
se almacenan con espacios en blanco, acentos, ñ u otros caracteres especiales
y de ahí la dualidad de NombreGrp y AliasGrp.
TipoCpo: Es un valor numérico y representa el número utilizado por el SQL de acuerdo
al tipo de data que almacena.

Los tipos soportados son:


Entero: 56
Decimal: 106
Texto: 167
Fecha: 61
Memorando: 35
Longitud: Es la longitud máxima del campo cuando así se requiriese, en caso de no
Requerirse, el sistema genera un valor no relevante. Para las cadenas de
Caracteres es el máximo número de caracteres a guardar.

Requerido: Indica si el campo debe ser introducido con carácter de obligatoriedad al


momento de ser solicitado. Es un valor referencial ya que es utilizado
internamente por el SEA y no crea ningún Trigger adicional en la tabla
como tal. 0: No es obligatorio; 1: Tiene carácter obligatorio.
CBusqueda: 0: No será utlizado como campo de búsqueda; 1: Será utilziado como
Campo de búsqueda.

SAOPER: Internamente el SEA utiliza esta tabla como referencia para saber cuales
tablas o grupos y en donde van a ser requerir en las diferentes operaciones .

Campos:
CodTbl: Nombre o código de la tabla materna. (SACLIE, SAPROV, etc)
NumGrp: Número de tabla o grupo para la tabla materna. (1,2..N)
NroOper: Número entero que representa el tipo de dato y/o el momento que
deberá ser solicitado el registro por el SEA.
Más adelante se proveen los diferentes tipos de operación utilizados por
el SEA.
PDtaReq: Campo no implementado.

De acuerdo a esta tabla, del SEA solicita la información referente a la tabla o grupo indicado.

Tipos de operación soportados por el SEA.

NroOper Sitio y/o acción donde se incluye o modifica la tabla o grupo


100 Archivo maestro de proveedores
110 Compras
200 Depósitos
300 Inventario
310 Operaciones de Inventario
400 Vendedores
500 Servicios
600 Clientes
610 Ventas
700 Servidores
800 Operaciones
3000 Bancos
3010 Transacciones de bancos
3100 Cuentas (Bancos)
3200 Beneficiarios
330 Productos Ventas
335 Productos Compras
340 Productos Operaciones de Inventario
350 Servicios Ventas
355 Servicios Compras
360 Servicios Operaciones de Inventario

CREACION DE TABLAS ADICIONALES:

Cada tabla será creada con el nombre de la tabla MATERNA y le será adicionado el número del
grupo.

La tabla adicional SACLIE_01 correspondería al grupo 01 a la tabla de clientes tendría como


primer campo el código del cliente (CodClie) seguida de los campos definidos por el usuario.

Las tablas de inventario o productos forman el nombre utilizando el nombre de la tabla


materna SAPROD más el número de la instancia. Para formar el nombre principal al cual se le
adiciona el número del grupo, de tal manera que cada instancia puede tener uno o más grupos.

De esta manera, la instancia número 1 podrá tener dos – o más - tablas o grupos cuyos
nombres serían SAPROD_1_01, SAPROD_1_02 y así sucesivamente.

En general, las tablas adicionales cuyas tablas maternas sean las tablas maestras del SEA llevan
el mismo código de la tabla maestra.

Ejemplo para una tabla o grupo de un solo registro (SIMPLE):

Tabla: SAPROV_01:
Campos:
CodProv: Código del proveedor
Razon_Social: Campo ‘Razón Social’ creado por el usuario

En el caso de grupos de varios registros (MÚLTIPLES) la tabla se construye agregando un campo


entero del tipo Auto incrementado (NroUnico) que formaría parte del índice de la tabla.
Este campo NroUnico permite la introducción de VARIOS registros por cada record de la tabla
maestra o MATERNA.

Adicionalmente, el sistema SEA crea un campo llamado FecTrn que contiene la fecha y hora en
que fue anexado el registro y el cual sería utilizado para mantener o retirar el registro de
acuerdo al tiempo especificado para mantener los registros.

Para la creación de una tabla adicional al maestro de bancos la cual contendría el nombre de
las sucursales (Campo SUCURSAL) y de las personas contacto (Campo: CONTACTO) en cada una
de ellas se utilizaría las siguientes instrucciones o queries de MSSQL.

TABLAS ADICIONALES:

Insert into SAAGRUPOS


(CodTbl,NumGrp,NombreGrp,AliasGrp,EsTrans,NMeses,NMovim)
Values('SBBANC',1,'Datos_confidenciales','Datos confidenciales',0,0,0)

Insert into SAAOPER


(CodTbl,NumGrp,NroOper,PDtaReq)
Values('SBBANC',1,3000,0)

Insert into SATABL


(TableName,
TableAlias)
Values('SBBANC_01',
'Bancos:Datos_confidenciales')

La creación física de la tabla ser realiza de acuerdo a las reglas del SQL.
Dado que el SEA soporta dos tipos de grupos (SIMPLES y MULTIPLES) inicialmente dicha
creación varía de forma que los grupos SIMPLES o de un solo registro tienen como Campo
índice el mismo campo que la tabla MATERNA.
Eso significa que para la tabla de clientes el primary key se haría sobre el campo CodClie que es
el primary key de la tabla maestra de clientes.
Para soportar grupos múltiples, el sistema agrega el campo NroUnico que es un valor entero
auto incrementado y el primary key lo construye sobre los dos campos y agrega también un
tercer campo que guarda la fecha en que se realiza la transacción (FecTrn).

-- Creación de la tabla un solo registro (SIMPLE)


CREATE TABLE [dbo].SBBANC_01 (
CodBanc VARCHAR(15) NOT NULL

ALTER TABLE SBBANC_01 WITH NOCHECK


ADD CONSTRAINT SBBANC_01_IX0
PRIMARY KEY CLUSTERED (CodBanc) ON [PRIMARY]

-- Creación de la tabla de varios registros (MULTIPLE)


CREATE TABLE [dbo].SBBANC_01 (
CodBanc VARCHAR(15) NOT NULL,
NroUnico INT IDENTITY (1,1) NOT NULL,
FecTrn DATETIME NOT NULL)

ALTER TABLE SBBANC_01 WITH NOCHECK


ADD CONSTRAINT SBBANC_01_IX0
PRIMARY KEY CLUSTERED (CodBanc ,NroUnico) ON [PRIMARY]
Insert into SAAOPER
(CodTbl,NumGrp,NroOper,PDtaReq)
Values('SBBANC',1,3000,0)

ACUTALIZACION DEL DICCIONARIO DE REPORTES:

Delete SATABL Where (TableName='SBBANC_01')


Delete SAFIEL Where (TableName='SBBANC_01')

Insert into SATABL


(TableName,
TableAlias)
Values('SBBANC_01',
'Bancos:Datos_confidenciales')

El conjunto de instrucciones o queries anteriores creó una nueva tabla de nombre SABANC_01
con los campos anteriormente especificados y posteriormente construyó un índice sobre los
campos CodBanc y NroUnico de tal manera que la tabla puede almacenar múltiples registros
por cada banco.

Adicionalmente, anexo a la tabla SAAOPER la información sobre dicha tabla que quedó
identificada como la operación 3000 que le dice al SEA que esta información deberá ser
requerida o solicitada al momento de estar actualizando el maestro de bancos.

Esta numeración es interna de Saint de Venezuela y puede ser documentada agregando y/o
creando tablas adicionales o grupos en los diferentes módulos verificando que número de
operación va asignando SEA a cada grupo creado. Al final de este documento se agregarán los
números de operaciones más utilizados.

Agregando campos a la tabla adicional:

-- Actualizando la tabla SBBANC_01 (Agregando campo entero INT)


Alter table SBBANC_01
ADD [Edad] INT NULL

-- Agregando las especificaciones del campo


Insert into SAACAMPOS
(CodTbl,NumGrp,NombCpo,AliasCpo,TipoCpo,Longitud,Requerido,CBusqueda)
Values('SBBANC',1,'Edad','Edad',56,35,0,0)

-- Actualizando el diccionario
INSERT INTO SAFIEL
(TableName, FieldName, FieldAlias, DataType, Selectable, Searchable,
Sortable, AutoSearch, Mandatory)
VALUES ('SBBANC_01', 'CodBanc', 'Cod_Banco', 'dtString', 'T', 'T',
'T', 'F', 'F')

INSERT INTO SAFIEL


(TableName, FieldName, FieldAlias, DataType, Selectable, Searchable,
Sortable, AutoSearch, Mandatory)
VALUES ('SBBANC_01', 'Edad', 'Edad', 'dtLongInt', 'T', 'T', 'T', 'F',
'F')

-- Actualizando la tabla SBBANC_01 (Agregando campo decimal)


Alter table SBBANC_01
ADD [Sueldo] DECIMAL(28,3) NULL
Insert into SAACAMPOS
(CodTbl,NumGrp,NombCpo,AliasCpo,TipoCpo,Longitud,Requerido,CBusqueda)
Values('SBBANC',1,'Edad','Edad',56,4,0,0)

-- Actualizando el diccionario
Insert into SAACAMPOS
(CodTbl,NumGrp,NombCpo,AliasCpo,TipoCpo,Longitud,Requerido,CBusqueda)
Values('SBBANC',1,'Sueldo','Sueldo',106,35,0,0)

INSERT INTO SAFIEL (TableName, FieldName, FieldAlias, DataType,


Selectable, Searchable, Sortable, AutoSearch, Mandatory)
VALUES ('SBBANC_01', 'Sueldo', 'Sueldo', 'dtDouble', 'T', 'T', 'T',
'F', 'F')

-- Actualizando la tabla SBBANC_01 (Campo caracteres VARCHAR)


Alter table SBBANC_01
ADD [Cargo] VARCHAR(35) NULL

Delete SAACAMPOS Where (CodTbl='SBBANC') And (NumGrp=1)


Insert into SAACAMPOS
(CodTbl,NumGrp,NombCpo,AliasCpo,TipoCpo,Longitud,Requerido,CBusqueda)
Values('SBBANC',1,'Edad','Edad',56,4,0,0)

Insert into SAACAMPOS


(CodTbl,NumGrp,NombCpo,AliasCpo,TipoCpo,Longitud,Requerido,CBusqueda)
Values('SBBANC',1,'Sueldo','Sueldo',106,13,0,0)

Insert into SAACAMPOS


(CodTbl,NumGrp,NombCpo,AliasCpo,TipoCpo,Longitud,Requerido,CBusqueda)
Values('SBBANC',1,'Cargo','Cargo',167,35,0,0)

INSERT INTO SAFIEL (TableName, FieldName, FieldAlias, DataType,


Selectable, Searchable, Sortable, AutoSearch, Mandatory)
VALUES ('SBBANC_01', 'Cargo', 'Cargo', 'dtString', 'T', 'T', 'T', 'F',
'F')

Anda mungkin juga menyukai