[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