[Php-avanzado] datos tesis

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Lun Dic 29 14:02:23 ART 2008


Hola Federico,

El lun, 29-12-2008 a las 14:39 +0000, Federico Rafaelli escribió:
> Perdon pero no habia visto la respuesta, gracias por reenviarlo.
> Entonces nada de enum, saco los datos a otra tabla, a mi me parecia lo
> mas correcto tambien (pero por vago no hice otra tabla),

	No es tanto trabajo: el contenido de esas tablas es "setup" del sistema
y no necesitan ABMs ni nada.

>  y tipo de dato mas grande que smallint, calculo que pondre midiunInt.

	int(11) como mínimo o longint...

> Me comi lo de la orden de pago con la empresa, ya lo arreglo, ahora
> tambien tengo que relacionarla con el cliente, pero esta relacion ya
> se da por el comprobante no?

	A ver... el comprobante tiene un cliente.
	Como el cliente tiene una empresa, sabés de qué empresa es el cliente.
Hasta acá está claro.
	Ahora la orden de pago no está haciendo referencia ni a un comprobante
ni a un cliente, así que no tenés como saber esa OPago a qué
corresponde.
	No la relacionaría a la empresa, porque vía el cliente llegás a ella,
al igual que en el comprobante.

	Una cosa que me pierde es que pensaste en una tabla con un
discriminante para saber qué tipo de comprobante es cada uno, pero las
órdenes de pago no son un tipo más de comprobante, sino que las manejás
aparte. Se vé raro... es mejor usar un criterio y mantenerlo que usar
para una cosa un criterio y para otra tan cercana uno distinto.
	Estaría bueno que me justifiques esa decisión así yo la entiendo... y
en la justificación la revaluás.

> > El mar, 23-12-2008 a las 18:26 +0000, Federico Rafaelli escribió:
> > > Leo te mando las tablas de la tesis de ctas ctes:
> > > 
> > > table clientes
> > > 
> > > id_cliente(PK) Smallint NOT NULL 
> > > id_empresa(FK) Smallint NOT NULL 
> > > usr Varchar(20) NOT NULL
> > > password Char(8) NOT NULL 
> > > razon_social Varchar(60) NOT NULL
> > > ciut Char(11) NOT NULL 
> > > nombre_resp Varchar(35) NOT NULL
> > > apellido_resp Varchar(35) NOT NULL
> > > telefono Varchar(35) NOT NULL
> > > e_mail Varchar(50) 
> > > direccion Varchar(60) 
> > 
> > No uses smallint para claves primarias: es muy chico.
> > 
> > > 
> > > table empresas
> > > 
> > > id_empresa(PK) Smallint NOT NULL 
> > > usr Varchar(20) NOT NULL
> > > password Char(8) NOT NULL 
> > > razon_social Varchar(60) NOT NULL
> > > ciut Char(11) NOT NULL 
> > > nombre_resp Varchar(35) NOT NULL
> > > apellido_resp Varchar(35) NOT NULL
> > > telefono Varchar(35) NOT NULL
> > > e_mail Varchar(50) 
> > > direccion Varchar(60) 
> > > 
> > > 
> > > table comprobantes
> > > 
> > > id_comprobante(PK) Smallint NOT NULL 
> > > sucursal Varchar(4) NOT NULL 
> > > nro Varchar(8) NOT NULL 
> > > fecha Date NOT NULL 
> > > importe Float NOT NULL 
> > > id_cliente(FK) Smallint NOT NULL 
> > > id_tipoComp(FK) Tinyint NOT NULL 
> > 
> > Ok. Estás usando el enfoque de una tabla para todos los
> > comprobantes y
> > un campo para discriminar uno de otro.
> > 
> > > table tipoComp
> > > 
> > > id_tipoComp(PK) Tinyint NOT NULL 
> > > descripcion Varchar(20) NOT NULL 
> > > 
> > > 
> > > table ordenesDePago
> > > 
> > > nro_op(PK) Smallint NOT NULL
> > > fecha Date NOT NULL 
> > > importe Float NOT NULL 
> > > estado Enum(pendiente/confirmada) NOT NULL
> > 
> > Enum nooo!!! es horrible! No es escalable!
> > Sacá esa descripción a otra tabla. Es fácil, ya que esa tabla no
> > necesita ABM: la das con sus datos cargados junto con el sistema.
> > 
> > y cómo sé de qué empresa es la Orden de Pago? O el usuario de tu
> > sistema es una sola empresa???

	Seguimos!

-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-avanzado