Matrices de columnas.

29/07/2003 - 12:52 por Jose Antonio | Informe spam
Hay alguna facilidad en sql server para tratar matrices de columnas por
ejemplo en vez de definir 12 columnas con los 12 meses, definir una columna
de la manera columna(12) y que cada elemento de la matriz sea un mes.

Hay alguna otra alternativa?.


Saludos
José Antonio

Preguntas similare

Leer las respuestas

#6 Javier Loria\(MVP\)
31/07/2003 - 16:35 | Informe spam
Hola Jose Antonio:
Este tema seria largo para tratar aqui, pero un principio general de las
Bases de Datos Relacionales es la Normalizacion. La normalizacion es el
proceso de reduccion en la redundancia de datos en las Base de Datos.
Cuando presentas las 12 columnas cada una con el saldo mensual en la
tabla de cuentas, lo primero que pongo en duda es si es un Atributo (en cuyo
caso se representa como columna) o si es una Entidad (en cuyo caso debe
tener su propia Tabla).
Al asignarle una Tabla Independiente a los saldos evitamos la reduncia
que produce por ejemplo un numero importante de 0's o Nulos en los saldos de
meses que no han ocurrido todavia, adicionalmente evitamos el uso de 0's o
Nulos en los saldos de cuentas recien creadas y que por ende no tienen
saldos previos. Con este diseno se optimiza el mantenimiento de las tablas
(INSERT, DELETE, UPDATE), aunque no siempre el de los SELECT's.
Este diseno es tambien mas flexible por que permite agregar "mes 13",
que se usa en algunos sistemas contables como el periodo donde se realiza el
Cierre Fiscal, o incluso permite cambiar con relativa facilidad el periodo
Contable a Trimestres o Semanas.

Saludos,

Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

A que te refieres con el problema de normalizacion de tablas?.

Jose Antonio

"Javier Loria(MVP)" escribió en el mensaje
news:
Hola Jose Antonio:
La alternativa es crear otra Tabla, que tenga como llave
primaria la llave primaria original mas el numero de meses, y el
saldo. Algo como: /* Inicio de Codigo */
CREATE TABLE SaldosCuentasContables(
CodigoCuentaContable VARCHAR(20) NOT NULL,
Mes SMALLINT NOT NULL,
SaldoInicial NUMERIC(19,4) NOT NULL,
CONSTRAINT PK_SaldosCuentasContables
PRIMARY KEY (CodigoCuentaContable,Mes),
CONSTRAINT CH_SaldosMes
CHECK (Mes>=1 AND Mes<),
CONSTRAINT FK_SaldosCuentas_Cuentas
FOREIGN KEY (CodigoCuentaContable)
REFERENCES CuentasContables(CodigoCuentaContable)
)
/* Fin de Codigo */

Y no crear 12 columnas, ya que provocaria un problema de
normalizacion con las tablas.

Saludos,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Jose Antonio wrote:
Hay alguna facilidad en sql server para tratar matrices de columnas
por ejemplo en vez de definir 12 columnas con los 12 meses, definir
una columna de la manera columna(12) y que cada elemento de la
matriz sea un mes.

Hay alguna otra alternativa?.


Saludos
José Antonio
Respuesta Responder a este mensaje
#7 Jose Antonio
01/08/2003 - 09:01 | Informe spam
Gracias por los detalles.

Saludos.
"Javier Loria(MVP)" escribió en el mensaje
news:
Hola Jose Antonio:
Este tema seria largo para tratar aqui, pero un principio general de


las
Bases de Datos Relacionales es la Normalizacion. La normalizacion es el
proceso de reduccion en la redundancia de datos en las Base de Datos.
Cuando presentas las 12 columnas cada una con el saldo mensual en la
tabla de cuentas, lo primero que pongo en duda es si es un Atributo (en


cuyo
caso se representa como columna) o si es una Entidad (en cuyo caso debe
tener su propia Tabla).
Al asignarle una Tabla Independiente a los saldos evitamos la reduncia
que produce por ejemplo un numero importante de 0's o Nulos en los saldos


de
meses que no han ocurrido todavia, adicionalmente evitamos el uso de 0's o
Nulos en los saldos de cuentas recien creadas y que por ende no tienen
saldos previos. Con este diseno se optimiza el mantenimiento de las tablas
(INSERT, DELETE, UPDATE), aunque no siempre el de los SELECT's.
Este diseno es tambien mas flexible por que permite agregar "mes 13",
que se usa en algunos sistemas contables como el periodo donde se realiza


el
Cierre Fiscal, o incluso permite cambiar con relativa facilidad el periodo
Contable a Trimestres o Semanas.

Saludos,

Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

> A que te refieres con el problema de normalizacion de tablas?.
>
> Jose Antonio
>
> "Javier Loria(MVP)" escribió en el mensaje
> news:
>> Hola Jose Antonio:
>> La alternativa es crear otra Tabla, que tenga como llave
>> primaria la llave primaria original mas el numero de meses, y el
>> saldo. Algo como: /* Inicio de Codigo */
>> CREATE TABLE SaldosCuentasContables(
>> CodigoCuentaContable VARCHAR(20) NOT NULL,
>> Mes SMALLINT NOT NULL,
>> SaldoInicial NUMERIC(19,4) NOT NULL,
>> CONSTRAINT PK_SaldosCuentasContables
>> PRIMARY KEY (CodigoCuentaContable,Mes),
>> CONSTRAINT CH_SaldosMes
>> CHECK (Mes>=1 AND Mes<),
>> CONSTRAINT FK_SaldosCuentas_Cuentas
>> FOREIGN KEY (CodigoCuentaContable)
>> REFERENCES CuentasContables(CodigoCuentaContable)
>> )
>> /* Fin de Codigo */
>>
>> Y no crear 12 columnas, ya que provocaria un problema de
>> normalizacion con las tablas.
>>
>> Saludos,
>>
>>
>> Javier Loria
>> Costa Rica (MVP)
>> Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
>> que pueda ser copiado y pegado al Query Analizer.
>> La version de SQL y Service Pack tambien ayuda.
>>
>> Jose Antonio wrote:
>>> Hay alguna facilidad en sql server para tratar matrices de columnas
>>> por ejemplo en vez de definir 12 columnas con los 12 meses, definir
>>> una columna de la manera columna(12) y que cada elemento de la
>>> matriz sea un mes.
>>>
>>> Hay alguna otra alternativa?.
>>>
>>>
>>> Saludos
>>> José Antonio


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida