id int unsigned not null auto_increment, nombre varchar(50), apellido varchar(50), dni varchar(8), telefono varchar(9), fecha_nacimiento datetime, primary key(id) ); create table proveedores( id int unsigned not null auto_increment, id_persona int unsigned not null, foreign key(id_persona) references personas(id), primary key(id) ); create table tipo_clientes( id int unsigned not null auto_increment, descripcion varchar(20), primary key(id) );
create table clientes(
id int unsigned not null auto_increment, id_persona int unsigned not null, id_tipo_cliente int unsigned not null, foreign key(id_persona) references personas(id), foreign key(id_tipo_cliente) references tipo_clientes(id), primary key(id) );
create table cargos(
id int unsigned not null auto_increment, nombre_cargo varchar(50), primary key(id) ); create table estados( id int unsigned not null auto_increment, fecha_inicio datetime, fecha_fin datetime, primary key(id) );
create table empleados(
id int unsigned not null auto_increment, id_cargo int unsigned not null, id_persona int unsigned not null, id_estado int unsigned not null, foreign key(id_cargo) references cargos(id), foreign key(id_persona) references personas(id), foreign key(id_estado) references estados(id), primary key(id) );
create table tipo_comprovantes(
id int unsigned not null auto_increment, nombre_comprovante varchar(50), primary key(id) );
create table ventas(
id int unsigned not null auto_increment, fecha_venta datetime, IGV double, id_cliente int unsigned not null, id_tipo_comprovante int unsigned not null, id_tipo_pago int unsigned not null, foreign key(id_cliente) references clientes(id), foreign key(id_tipo_comprovante) references tipo_comprovantes(id), foreign key(id_tipo_pago) references tipo_pagos(id), primary key(id) ); create table devolucion_productos( id int unsigned not null auto_increment, descripcion varchar(50), id_venta int unsigned not null, foreign key(id_venta) references ventas(id), primary key(id) ); create table marcas( id int unsigned not null auto_increment, nombre_marca varchar(50), primary key(id) ); create table categorias( id int unsigned not null auto_increment, nombre_categoria varchar(50), descripcion varchar(50), primary key(id) ); create table almacen_productos( id int unsigned not null auto_increment, nombre_almacen varchar(50), ubicacion varchar(50), primary key(id) ); create table productos( id int unsigned not null auto_increment, nombre varchar(50), descripcion varchar(50), fecha_fabicacion datetime, stock double, costo_compra double, id_almacen int unsigned not null, id_marca int unsigned not null, id_categoria int unsigned not null, foreign key(id_almacen) references almacen_productos(id), foreign key(id_marca) references marcas(id), foreign key(id_categoria) references categorias(id), primary key(id) );
create table detalle_ventas(
id int unsigned not null auto_increment, unidades double, costo_unidad double, descuento double, total double, id_venta int unsigned not null, id_producto int unsigned not null, foreign key(id_venta) references ventas(id), foreign key(id_producto) references productos(id), primary key(id) );
create table compras(
id int unsigned not null auto_increment, fecha_compra datetime, costo_compra double, id_tipo_comprovante int unsigned not null, id_proveedor int unsigned not null, id_tipo_pago int unsigned not null, foreign key(id_tipo_comprovante) references tipo_comprovantes(id), foreign key(id_proveedor) references proveedores(id), foreign key(id_tipo_pago) references tipo_pagos(id), primary key(id) );
create table tipo_pagos(
id int unsigned not null auto_increment, nombre_tipo_pago varchar(50), primary key(id) );
create table detalle_compras(
id int unsigned not null auto_increment, unidades double, costo_unidad double, total double, id_producto int unsigned not null, id_compra int unsigned not null, foreign key(id_producto) references productos(id), foreign key(id_compra) references compras(id), primary key(id) );