[Php-avanzado] datos ctas ctes

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Mar Dic 23 19:55:31 ART 2008


Hola Federico!

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???

> table comp_op
>  
> nro_op(PFK)              Smallint    NOT NULL 
> id_comprobante(PFK)  Smallint   NOT NULL 
> importe_pago            Float        NOT NULL 
> 
>  
> table depositos
>  
> id_deposito(PK)   Smallint      NOT NULL
> nro_referencia     Varchar(20) NOT NULL
> banco                Varchar(40)  NOT NULL
> fecha                 Date            NOT NULL
> importe             Float            NOT NULL
> tipo_dep            Enum(efectivo/cheques) NOT NULL
> nro_op(FK)         Smallint       NOT NULL
>  
> table retenciones
>  
> id_ret(PK)            Smallint      NOT NULL
> nro                     Varchar(5)   NOT NULL
> fecha                  Date           NOT NULL
> importe               Float          NOT NULL
> id_tipoRet(FK)       Tinyint       NOT NULL
> nro_op(FK)           Smallint     NOT NULL
> importe_base        Float         NOT NULL
>  
> 
> table tipoRet
>  
> id_tipoRet(PK)      Tinyint          NOT NULL
> descripcion          Varchar(35)    NOT NULL
> alicuota               Float             NOT NULL

	Ok.


> Consultas:
> 1-En la tabla depositos, el campo tipo_dep lo hice enum entre efect. y
> cheque, pero tambien podria haber creado otra tabla con el tipo de
> deposito y referenciarla. La dejo como estas o te parece mejor la
> ultima opcion.

	Pasalo a una tabla!

> 2-Los tipos de datos de campos como id_comprobante, nro_op, id_ret o
> id_deposito los puse smallInt, me parece que esta bien ya que no creo
> que supere los 67.000 y pico...,esta bien?

	No, dale más, porque el sistema se muere a corto plazo.
	Int(11) es el default de entero para MySQL... de ahí para arriba.

> Saludos.

	=mente!

-- 
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