[Php-avanzado] BD tesis Carrito de compras 
    Leonardo Tadei - Pegasus Tech Supply 
    leonardot en pegasusnet.com.ar
       
    Sab Dic 13 21:38:25 ART 2008
    
    
  
Hola Mauro,
El sáb, 13-12-2008 a las 11:17 -0300, Mauro Giuffo escribió:
> Hola Leo :
> 
> te mando la estructura de la base de datos para la tesis Carrito de
> compras. 
	Ok. Comentarios abajo.
> Todavia no me quedo claro como armar la tabla del detalle de los
> pedidos, ya que los articulos pueden desaparecer segun la lista que
> llegue del sistema externo que la genera.
	Es que la información del código, descripción y precios debe estar
también en la tabla de detalles de pedido.
	Notaste el punto: esos datos pueden cambiar.
	La justificación es que esto no es una repetición, sino almacenar la
realidad de "ese momento" para recuperarla más tarde.
> ----------------------------------------------------------------
> 
> /*
> Created 13/12/2008
> Modified 13/12/2008
> Project  
> Model  
> Company  
> Author  
> Version  
> Database mySQL 5 
> */
> 
> 
> Create table tipos_usuario (
>  id Int UNSIGNED NOT NULL AUTO_INCREMENT,
>  nombre Varchar(20) NOT NULL,
>  UNIQUE (nombre),
>  Primary Key (id)) ENGINE = MyISAM;
> 
> Create table usuarios (
>  id Int UNSIGNED NOT NULL AUTO_INCREMENT,
>  id_tipo Int UNSIGNED NOT NULL,
>  nombre Varchar(20) NOT NULL,
>  password Varchar(20) NOT NULL,
>  email Varchar(60) NOT NULL,
>  UNIQUE (nombre),
>  UNIQUE (email),
>  Primary Key (id)) ENGINE = MyISAM;
> 
> Create table articulos (
>  id Int UNSIGNED NOT NULL AUTO_INCREMENT,
>  id_familia Char(20) UNSIGNED NOT NULL,
>  id_marca Char(20) UNSIGNED NOT NULL,
>  id_grupo Char(20) UNSIGNED NOT NULL,
>  codigo Varchar(20) NOT NULL,
>  descripcion Varchar(60) NOT NULL,
>  precio Decimal(10,3) NOT NULL,
>  UNIQUE (codigo),
>  Primary Key (id)) ENGINE = MyISAM;
> 
> Create table familias (
>  id Char(20) UNSIGNED NOT NULL AUTO_INCREMENT,
>  descripcion Varchar(60) NOT NULL,
>  Primary Key (id)) ENGINE = MyISAM;
> 
> Create table marcas (
>  id Char(20) UNSIGNED NOT NULL AUTO_INCREMENT,
>  descripcion Varchar(60) NOT NULL,
>  Primary Key (id)) ENGINE = MyISAM;
> 
> Create table grupos (
>  id Char(20) UNSIGNED NOT NULL AUTO_INCREMENT,
>  descripcion Varchar(60) NOT NULL,
>  Primary Key (id)) ENGINE = MyISAM;
> 
> Create table pedidos (
>  id Int UNSIGNED NOT NULL AUTO_INCREMENT,
>  id_estado Int UNSIGNED NOT NULL,
>  id_usuario Int UNSIGNED NOT NULL,
>  fecha Date NOT NULL,
>  Primary Key (id)) ENGINE = MyISAM;
	Por lo mismo, deberías acá guardar el nombre del usuario y no una
referencia a él.
> Create table estados (
>  id Int UNSIGNED NOT NULL AUTO_INCREMENT,
>  nombre Varchar(20) NOT NULL,
>  UNIQUE (nombre),
>  Primary Key (id)) ENGINE = MyISAM;
> 
> Create table pedidos_det (
>  id_pedido Int UNSIGNED NOT NULL,
>  id_articulo Int UNSIGNED NOT NULL,
>  codigo Varchar(20) NOT NULL,
>  descripcion Varchar(60) NOT NULL,
>  precio Decimal(10,3) NOT NULL,
>  cantidad Int NOT NULL,
>  Primary Key (id_pedido,id_articulo)) ENGINE = MyISAM;
	Esto es correcto por lo expresado al principio.
> Alter table usuarios add Foreign Key (id_tipo) references
> tipos_usuario (id) on delete restrict on update restrict;
> Alter table pedidos add Foreign Key (id_usuario) references usuarios
> (id) on delete restrict on update restrict;
> Alter table pedidos_det add Foreign Key (id_articulo) references
> articulos (id) on delete restrict on update restrict;
> Alter table articulos add Foreign Key (id_familia) references familias
> (id) on delete restrict on update restrict;
> Alter table articulos add Foreign Key (id_marca) references marcas
> (id) on delete restrict on update restrict;
> Alter table articulos add Foreign Key (id_grupo) references grupos
> (id) on delete restrict on update restrict;
> Alter table pedidos_det add Foreign Key (id_pedido) references pedidos
> (id) on delete restrict on update restrict;
> Alter table pedidos add Foreign Key (id_estado) references estados
> (id) on delete restrict on update restrict;
	Con qué generás esto que te guarda los alter table???
	Controlar la integridad con claves foráneas no te salvará de validar
las entradas en JS y en PHP ;-)
> 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