[Php-avanzado] Tablas
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Jue Ago 20 03:47:11 ART 2009
Hola Favio!
El mié, 19-08-2009 a las 00:47 -0300, Favio Lazzarini escribió:
> Envio tablas normalizadas
Te respondo intercalado:
--
-- Estructura de tabla para la tabla `cat_impositiva`
--
CREATE TABLE `cat_impositiva` (
`id` int(11) NOT NULL auto_increment,
`cat` enum('Consumidor Final','Monotributo','Responsable
Inscripto','Exento','Sujeto no Categorizado','No
Responsable','Monotributista Social','Pequeño Contribuyente
Eventual','l','Pequeño Contribuyente Eventual Social') NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
No tiene sentido que el campo con el nombre de la categoría sea ENUM.
--
-- Volcar la base de datos para la tabla `cat_impositiva`
--
INSERT INTO `cat_impositiva` (`id`, `cat`) VALUES
(1, 'Consumidor Final'),
(2, 'Responsable Inscripto'),
[..]
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `clientes`
--
CREATE TABLE `clientes` (
`id` int(5) NOT NULL auto_increment,
`ape` varchar(25) NOT NULL,
`nom` varchar(25) NOT NULL,
`dir` varchar(20) NOT NULL,
`tel` int(11) NOT NULL,
`mail` varchar(35) NOT NULL,
`cuit` bigint(11) NOT NULL,
`id_cat` int(2) NOT NULL,
`id_loc` varchar(3) NOT NULL,
`id_lipre` int(2) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `cuit` (`cuit`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
Dale por lo menos 50 de ancho a todos los varchar y un poco más a la
dirección. Si te quedás corto es un lio, y si sobra no pasa nada.
Que todo sea NOT NULL hace al sistema muy incómodo de usar. Pensá que
campos es obligatorio tener y a los demás pertiles estar vacíos. (te
había observado esto con anterioridad).
--
-- Volcar la base de datos para la tabla `clientes`
--
INSERT INTO `clientes` (`id`, `ape`, `nom`, `dir`, `tel`, `mail`,
`cuit`, `id_cat`, `id_loc`, `id_lipre`) VALUES
(1, 'Fracassi Lazzarini', 'Favio Augusto', 'Falucho 2931 3 A',
155357508, 'mantedil en hotmail.com', 20200516878, 3, '1', 1),
(2, 'Ameijeiras', 'Gladys Noemi', 'Libertad 7826', 4789869,
'gladysameijeiras en hotmail.com', 20221546879, 3, '1', 2)
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `comercios`
--
CREATE TABLE `comercios` (
`id` int(5) NOT NULL auto_increment,
`ape` varchar(25) NOT NULL,
`nom` varchar(25) NOT NULL,
`dir` varchar(25) NOT NULL,
`tel` int(11) NOT NULL,
`id_loc` varchar(3) NOT NULL,
`mail` varchar(35) NOT NULL,
`cuit` varchar(11) NOT NULL,
`iibb` bigint(11) NOT NULL,
`inac` date NOT NULL,
`id_cat` int(2) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `cuit` (`cuit`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- Volcar la base de datos para la tabla `comercios`
--
INSERT INTO `comercios` (`id`, `ape`, `nom`, `dir`, `tel`, `id_loc`,
`mail`, `cuit`, `iibb`, `inac`, `id_cat`) VALUES
(1, 'Tirrenia S. A.', '', 'Falucho 2931 3 º A', 4789869, '1',
'info en tirrenia.com.ar', '30709799971', 30709799971, '2006-09-01', 2);
Esto es para los datos de la empresa que usa el sistema, no?
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `compras`
--
CREATE TABLE `compras` (
`id` int(10) NOT NULL auto_increment,
`id_prove` int(5) NOT NULL,
`date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Volcar la base de datos para la tabla `compras`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `correos`
--
CREATE TABLE `correos` (
`id` int(10) NOT NULL auto_increment,
`id_cli` int(5) NOT NULL,
`date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Guardás solo que enviste un mail pero no el contenido del mensaje???
--
-- Volcar la base de datos para la tabla `correos`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `det_compras`
--
CREATE TABLE `det_compras` (
`id_compras` int(10) NOT NULL,
`cant` decimal(5,2) NOT NULL,
`id_art` int(11) NOT NULL,
`pre` decimal(8,2) NOT NULL,
PRIMARY KEY (`id_compras`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
A esta tabla o le falta un campo el nombre de la clave no es una buena
elección...
--
-- Estructura de tabla para la tabla `det_facturas`
--
CREATE TABLE `det_facturas` (
`id_fac` int(10) NOT NULL,
`id_art` int(11) NOT NULL,
`cant` decimal(6,2) NOT NULL,
`nom_prod` varchar(15) NOT NULL,
`iva` decimal(4,2) NOT NULL,
`pre` decimal(8,2) NOT NULL,
PRIMARY KEY (`id_fac`,`id_art`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
idem anterior.
--
-- Estructura de tabla para la tabla `det_pagos`
--
CREATE TABLE `det_pagos` (
`id` int(10) NOT NULL,
`id_pago` int(10) NOT NULL,
`id_fpag` int(2) NOT NULL,
`monto` decimal(8,2) NOT NULL,
`cheq` varchar(15) NOT NULL,
`banco` varchar(25) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Volcar la base de datos para la tabla `det_pagos`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `det_remitos`
--
CREATE TABLE `det_remitos` (
`id_rem` int(10) NOT NULL,
`id_art` int(11) NOT NULL,
`cant` decimal(6,2) NOT NULL,
`nom_prod` varchar(15) NOT NULL,
PRIMARY KEY (`id_rem`,`id_art`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
idem anterior
--
-- Estructura de tabla para la tabla `facturas`
--
CREATE TABLE `facturas` (
`id` int(10) NOT NULL auto_increment,
`id_cli` int(5) NOT NULL,
`date` date NOT NULL,
`id_fpago` int(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Le falta el nro de la sucursal y guardar el nombre del cliente y su
cat. impositiva, porque si el cliente cambia de nombre o de cat.
impositiva cambiás el pasado del sistema.
--
-- Estructura de tabla para la tabla `forma_pago`
--
CREATE TABLE `forma_pago` (
`id` int(2) NOT NULL auto_increment,
`tipo` varchar(25) NOT NULL,
`desc` decimal(4,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
--
-- Volcar la base de datos para la tabla `forma_pago`
--
INSERT INTO `forma_pago` (`id`, `tipo`, `desc`) VALUES
(1, 'Contado efectivo', '5.00'),
(2, 'Contado Cheque diferido', '0.00'),
(3, 'Cuenta Corriente', '0.00');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `iva_prod`
--
CREATE TABLE `iva_prod` (
`id` int(2) NOT NULL auto_increment,
`des` varchar(15) NOT NULL,
`tasa` decimal(4,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
--
-- Volcar la base de datos para la tabla `iva_prod`
--
INSERT INTO `iva_prod` (`id`, `des`, `tasa`) VALUES
(1, 'IVA 21', '21.00'),
(2, 'IVA 10,5', '10.50'),
(3, 'IVA 27', '0.00');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `lista_precios`
--
CREATE TABLE `lista_precios` (
`id` int(2) NOT NULL auto_increment,
`lista` varchar(15) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
--
-- Volcar la base de datos para la tabla `lista_precios`
--
INSERT INTO `lista_precios` (`id`, `lista`) VALUES
(1, 'Costo'),
(2, 'Mayorista'),
(3, 'Minorista');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `localidades`
--
CREATE TABLE `localidades` (
`id` int(3) NOT NULL auto_increment,
`loc` varchar(25) NOT NULL,
`cp` int(6) NOT NULL,
`id_pro` int(3) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
--
-- Volcar la base de datos para la tabla `localidades`
--
INSERT INTO `localidades` (`id`, `loc`, `cp`, `id_pro`) VALUES
(1, 'Mar del Plata', 7600, 2),
(2, 'Ciudad Autonoma Bs As', 0, 1),
(3, 'Santa Clara del Mar', 0, 2);
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `marcas`
--
CREATE TABLE `marcas` (
`id` int(3) NOT NULL auto_increment,
`mar` varchar(25) NOT NULL,
`imag` varchar(35) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
poné más grande los varchar! Es gratis!
--
-- Volcar la base de datos para la tabla `marcas`
--
INSERT INTO `marcas` (`id`, `mar`, `imag`) VALUES
(1, 'Wody Toys', 'woodytoys.jpg'),
(2, 'Ami Toys', 'amitoys.jpg'),
--
-- Estructura de tabla para la tabla `pagos`
--
CREATE TABLE `pagos` (
`id` int(10) NOT NULL,
`date` date NOT NULL,
`id_cli` varchar(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
el id_cli es varchar??? Esto no coincide con la tabla de Cientes, y
para establecer las relaciones, hace falta que sean del mismo tipo.
-
--
-- Estructura de tabla para la tabla `paises`
--
CREATE TABLE `paises` (
`id` int(2) NOT NULL auto_increment,
`pais` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- Volcar la base de datos para la tabla `paises`
--
INSERT INTO `paises` (`id`, `pais`) VALUES
(1, 'Argentina');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `precios`
--
CREATE TABLE `precios` (
`id` int(4) NOT NULL auto_increment,
`id_lipre` int(2) NOT NULL,
`id_art` int(4) NOT NULL,
`pre` decimal(8,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=43 ;
--
-- Volcar la base de datos para la tabla `precios`
--
INSERT INTO `precios` (`id`, `id_lipre`, `id_art`, `pre`) VALUES
(1, 1, 172, '9.90'),
(2, 2, 172, '13.00'),
(3, 3, 172, '25.00'),
--
-- Estructura de tabla para la tabla `productos`
--
CREATE TABLE `productos` (
`id` int(5) NOT NULL auto_increment,
`art` varchar(25) NOT NULL,
`cod` varchar(15) NOT NULL,
`id_marca` varchar(3) NOT NULL,
`imag` varchar(25) NOT NULL,
`cant` decimal(8,2) NOT NULL,
`id_iva` int(2) NOT NULL,
`iva` decimal(4,2) NOT NULL,
`est` enum('activo','inactivo') NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ;
El id_marca varchar??? tampoco va a funcionar...
"est" como campo ENUM debería servir, pero es horrible manejar este
tipo de campos. Te sugiero que lo cambies.
A la tabla le sobra un campo...
--
-- Volcar la base de datos para la tabla `productos`
--
INSERT INTO `productos` (`id`, `art`, `cod`, `id_marca`, `imag`, `cant`,
`id_iva`, `iva`, `est`) VALUES
(1, 'Manopla baño', 'BA0372', '14', 'BA0372.jpg', '12.00', 1, '0.00',
'activo'),
(2, 'Organizador', 'BA0171', '2', 'BA0171.jpg', '20.00', 1, '0.00',
'activo'),
--
-- Estructura de tabla para la tabla `proveedores`
--
CREATE TABLE `proveedores` (
`id` int(5) NOT NULL auto_increment,
`ape` varchar(25) NOT NULL,
`nom` varchar(25) NOT NULL,
`dir` varchar(25) NOT NULL,
`tel` int(11) NOT NULL,
`id_loc` varchar(3) NOT NULL,
`mail` varchar(35) NOT NULL,
`cuit` bigint(11) NOT NULL,
`id_cat` int(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ;
--
-- Volcar la base de datos para la tabla `proveedores`
--
INSERT INTO `proveedores` (`id`, `ape`, `nom`, `dir`, `tel`, `id_loc`,
`mail`, `cuit`, `id_cat`) VALUES
(1, 'Juguetes Delfin', 'Carlos', 'Calle 3244', 4578921, '3',
'delfin en jueguetes.com.ar', 12345678912, 3),
Como con los clientes, que todo sea NOT NULL es muy incómodo. Dejá solo
los necesarios.
--
-- Estructura de tabla para la tabla `provincias`
--
CREATE TABLE `provincias` (
`id` int(3) NOT NULL auto_increment,
`pro` varchar(20) NOT NULL,
`id_pais` varchar(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=25 ;
--
-- Volcar la base de datos para la tabla `provincias`
--
INSERT INTO `provincias` (`id`, `pro`, `id_pais`) VALUES
(1, 'Capital Federal', '1'),
(2, 'Buenos Aires', '1'),
--
-- Estructura de tabla para la tabla `remitos`
--
CREATE TABLE `remitos` (
`id` int(6) NOT NULL auto_increment,
`date` date NOT NULL,
`id_cli` int(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Estructura de tabla para la tabla `sessiones`
--
CREATE TABLE `sessiones` (
`name` varchar(10) NOT NULL,
`pass` varchar(30) NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Sesiones? Parece la tabla de los vendedores u operadores.
No te interesa tener acá el nombre completo de la persona o algún dato
más?
> Saludos favio
=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