[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