Tabla con 12 registros o con 12 columnas
Publicado por Daniel Perez (1 intervención) el 11/07/2016 18:27:27
Hola. El día de hoy un programador me solicitó la creación de una nueva tabla. Es algo sencillo, pero me llevo a un debate con el programador.
La cuestión es que la tabla debe de almacenar un único valor por mes por año pero puede ser que un mes determinado no tenga valor.
Mi solución sería que cada año, hubiera 12 o menos registros. Algo como esto:
CREATE TABLE MESES
(ID INT IDENTITY(1,1) PRIMARY KEY
,MES TINYINT NOT NULL // solo aceptaría valores 1-12
,ANIO VARCHAR(4) NOT NULL // año en 4 digitos
,VALOR INT NOT NULL)
Pero el programador, para facilitar su codificación, quiere algo como esto:
CREATE TABLE MESES
(ID INT IDENTITY(1,1) PRIMARY KEY
,ANIO VARCHAR(4) NOT NULL
,VALORENE INT NULL
,VALORFEB INT NULL
,VALORMAR INT NULL
,VALORABR INT NULL
,VALORMAY INT NULL
,VALORJUN INT NULL
,VALORJUL INT NULL
,VALORAGO INT NULL
,VALORSEP INT NULL
,VALOROCT INT NULL
,VALORNOV INT NULL
,VALORDIC INT NULL)
En este caso los valores de los meses podrían ser nulos.
Yo insisto en que la primer forma es mas adecuada para lo que necesita, pero no encuentro como demostrarlo.
El argumento del programador es que haciéndolo de la primer forma, se crearían muchos registros. Con la segunda forma solo tendría un registro por año.
¿Alguna experiencia que hayan tenido con un tema similar?
De antemano muchas gracias por cualquier comentario =)
La cuestión es que la tabla debe de almacenar un único valor por mes por año pero puede ser que un mes determinado no tenga valor.
Mi solución sería que cada año, hubiera 12 o menos registros. Algo como esto:
CREATE TABLE MESES
(ID INT IDENTITY(1,1) PRIMARY KEY
,MES TINYINT NOT NULL // solo aceptaría valores 1-12
,ANIO VARCHAR(4) NOT NULL // año en 4 digitos
,VALOR INT NOT NULL)
Pero el programador, para facilitar su codificación, quiere algo como esto:
CREATE TABLE MESES
(ID INT IDENTITY(1,1) PRIMARY KEY
,ANIO VARCHAR(4) NOT NULL
,VALORENE INT NULL
,VALORFEB INT NULL
,VALORMAR INT NULL
,VALORABR INT NULL
,VALORMAY INT NULL
,VALORJUN INT NULL
,VALORJUL INT NULL
,VALORAGO INT NULL
,VALORSEP INT NULL
,VALOROCT INT NULL
,VALORNOV INT NULL
,VALORDIC INT NULL)
En este caso los valores de los meses podrían ser nulos.
Yo insisto en que la primer forma es mas adecuada para lo que necesita, pero no encuentro como demostrarlo.
El argumento del programador es que haciéndolo de la primer forma, se crearían muchos registros. Con la segunda forma solo tendría un registro por año.
¿Alguna experiencia que hayan tenido con un tema similar?
De antemano muchas gracias por cualquier comentario =)
Valora esta pregunta


0