[Php-avanzado] Tablas tesis Leandro Schereik
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Vie Mar 19 02:42:39 ARST 2010
Hola Leandro,
El vie, 19-03-2010 a las 02:12 +0000, Leandro Schereik escribió:
> Hola Leo vi tus comentarios aca van las tablas con algunas
> correcciones.
>
> Para los usuarios tengo dos alternativas no se cual es la correcta:
> 1: Seria una tabla para compradores y otra para administradores:
>
> tblcompradores
> --------------
>
>
> id int(11)
> nombre varchar(100)
> ape varchar(100)
> tel varchar(50)
> email varchar(255)
> usuario varchar(20)
> pass varchar(20)
>
> tbladministradores
>
> id int(11)
> usuario varchar(20)
> pass varchar(20)
>
>
> 2: La otra solucion seria una tabla para compradores y otra para
> tipos de usuarios:
>
>
> tbltipuser
> ----------
>
>
> id integer
>
> tipo varchar(50)
>
>
> Nota: esta tabla contendrá inicialmente los siguientes registros
> fijos:
>
> id: 1 tipo: Administrador
>
> id: 2 tipo: Usuario Normal
>
>
>
>
> tblcompradores
> --------------
>
>
> id int(11)
> nombre varchar(100)
> ape varchar(100)
> tel varchar(50)
> email varchar(255)
> id_tip_user int(11)
> usuario varchar(20)
> pass varchar(20)
>
>
> Vos me diras cual es la mejor solucion?
Ambas son correctas desde la normalización, así que te garantizan que
todo funcione bien. Incluso hay otras opciones más complejas que no
valen la pena discutir.
Ambas opciones también tienen pros y cons: la 1ra ofrece mayor
versatilidad porque si te cambia la definición del Comprador, no hay
impacto en el funcionamiento de los Administradores; también es más
reusable porque podrás usar estos administradores en cualquier sistema
futuro. La contra es que tenés que vértelas con 2 tablas en vez de solo
con una.
La 2da tiene como ventaja que tendrás un sistema más homogéneo y podrás
copiar y pegar más código para este proyecto. La contra es que toda
query para login tendrá un WHERE múltiple, y si te equivocás en la query
podés tener compromisos altos de seguridad.
Como ambas soluciones son correctas, usá la que te haga sentir más
cómodo... o tirá una moneda!
> Esta tabla queda igual.
>
> tblcategorias
> ------------
>
> id int(11)
> nombre varchar(30)
>
>
>
>
> Con respecto a los articulos agrego una tabla para los estados de los
> articulos.
>
> tblarticulos
> ----------
>
> id int(11)
> id_categoria int(11)
> id_estado varchar(1)
> nombre varchar(100 )
> precio float
> stock int(11)
> imagen1 varchar(255)
> imagen2 varchar(255)
> imagen3 varchar(255)
>
>
> tblestart
> ---------
>
> id varchar(15)
> estado varchar(15)
>
>
> Nota: esta tabla contendrá inicialmente los siguientes registros
> fijos:
>
> id: 1 estado: activo
> id: 2 descri: inactivo
Ok. Esto además te permite agregar nuevos estados en el futuro, sin
tener que preocuparte por manejar la visualización de los datos.
> Con respecto a la ventas entiendo lo que me decis me acuerdo de esa
> clase con una tabla de
> "cabecera" y otra de "detalles" de la factura pero no tengo el ejemplo
> como para mirarlo.
> ¿Me podras mandar ese ejemplo o alguno similar para agarrar la idea?
Las tablas varían según los datos del comprobante que estés guardando,
pero la estructura es una relación 1-a-muchos entre la cabecera y los
detalles:
Facturas:
---------
id int(16) auto_increment // Key
id_cli int(16) // El cliente
nom_cli varchar(100) // El nombre del cliente al momento de la venta
tipo int(4) // tipo fisca: A, B, C, etc, relacionadas a otra tabla.
num1 int(4) // nro fiscal de la sucursal
num2 int(8) // nro fiscal de la factura
fec timestamp // fecha y hora de emisión
estado char(1) // puede cambiar de vacío a anulada.
Detalles de la factura:
-----------------------
id int(16) // el ID de la Factura. Relación 1-a-N
id_art int(16) // id artículo al momento de la venta
cod varchar(20) // cod artículo al momento de la venta
des varchar(60) // des artículo al momento de la venta
can float(10,3) // cantidad del artículo (según el sistema puede ser
entero o decimal)
pre float(8,2) // precio unitario al momento de la venta
tiva float(6,2) // valor del IVA al momento de la venta
Dependiendo de las necesidades del sistema pueden ser con más o menos
campos. Un sistema informal no necesita datos fiscales; un sistema que
venda en cta cte necesitará "Forma de Pago" en la cabecera, etc.
> Muchas Gracias
Por nada!
--
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