La estructura de una base de datos para una tienda virtual puede diferir en cuanto a complejidad, seguridad o incluso en cada analista. En nuestro caso será algo sencillo, útil y simplificado que nos servirá de sobra para crear el carro de compra.
Empecemos por hacer un análisis de las tablas que nos harán falta para la base de datos que llamaremos “colorate_paypal”.
Lo primero que analizaremos será la distinción y relación de tablas, que conseguiremos con una simple hoja y un boli como inicio del proceso, que creo es necesario en todos los aspectos del desarrollo y diseño.
Por tanto después de algunos tachones, aquí tenemos el resultado del análisis de una base de datos para un carrito de la compra (clic para ampliar imagen):
Tal y como veis en la imagen, he definido 4 tablas y aunque son bastante intuitivas por su descripción, vamos a ver un poco el detalle:
- CLIENTES: Esta tabla tiene que estar informada siempre que se realice un pedido, los datos quedan almacenados para hacer las facturas en el momento en que la compra se haya realizado correctamente.
- PRODUCTOS: Tabla donde guardaremos aquellos productos que el usuario podrá comprar así como información de su nombre, precio, etc ..
- PEDIDOS: Cada compra que el Cliente realice, debe estar ligada con un pedido donde tendremos información de quién la ha realizado (CLIENTE) y detalles de la compra (DET_PEDIDOS).
- DET_PEDIDOS: Almacena el detalle del pedido y algo muy importante como es la cantidad del producto elegido con lo que calcularemos el importe total. Tenemos que tener en cuenta que si el precio del Producto cambia después de haberse dado de alta el detalle de un pedido, éste no cambiará en esta tabla (imaginaros el precio de un producto en promoción durante 2 meses, si al cabo de los 3 meses miramos el precio del producto veremos que es más caro, pero en esta tabla seguirá el mismo).
Una vez hemos analizado cada una de las tablas que nos harán falta en nuestra base de datos “Colorate_Paypal”, vamos con su creación en MySQL.
Tabla de contenidos
Crear base de datos Carrito de Compra en MySQL
Para empezar vamos a crear la base de datos “Colorate_Paypal” (aconsejo dejar el mismo nombre para seguir de manera correcta el tutorial).
Accedemos a PhpMyAdmin y damos de alta una nueva tabla:
Es hora de ir incluyendo las tablas que hemos enumerado anteriormente. Para saber los campos que nos hacen falta, basta con mirar nuestro analisis de la base de datos que tenemos escrita en papel.
Os aconsejo que antes de empezar a crear las tablas, os leais un tutorial que publiqué hace un tiempo sobre «Relaciones entre tablas y su integridad referencial» en el que se explica como han de utilizarse las tablas relacionadas con Foreign Keys.
Así que tenemos que dar de alta las tablas: CLIENTES, PRODUCTOS, PEDIDOS, DET_PEDIDOS.
*Nota: Es muy importante que demos de alta las tablas con el motor de almacenamiento InnoDb para poder relacionar unas tablas con otras.
CLIENTES:
- id_cliente (clave primaria): Numérico con autoincremento de 5 posiciones.
- nombre: Alfanumérico de 80 posiciones
- e-mail: Alfanumérico de 100 posiciones e indice único.
- direccion: Alfanumérico de 200 posiciones
- telefono: Numérico de 50 posiciones
- fec_alta: Date de 10 posiciones
Aquí tenéis el código SQL para añadir la tabla CLIENTES a la base de datos:
[mysql]
CREATE TABLE `clientes` (
`id_cliente` INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nombre` VARCHAR( 80 ) NOT NULL ,
`e-mail` VARCHAR( 100 ) NOT NULL ,
`telefono` VARCHAR( 50 ) NULL ,
`direccion` VARCHAR( 50 ) NULL ,
`fec_alta` DATE NOT NULL ,
UNIQUE (
`e-mail`
)
) ENGINE = INNODB;
[/mysql]
PRODUCTOS:
- id_producto (clave primaria): Numérico con autoincremento de 5 posiciones.
- nombre: Alfanumérico de 80 posiciones.
- descripcion: Alfanumérico de 250 posiciones.
- precio: Numérico de 10 posiciones.
- foto: Alfanumérico de 250 posiciones
**Nota: El campo foto no contendrá ninguna imagen, solo estará informado con la ruta donde esté guardada dicha foto, para así no sobrecargar nuestra base de datos con datos innecesarios.
Aquí tenéis el código SQL para añadir la tabla PRODUCTOS a la base de datos:
[mysql]
CREATE TABLE `productos` (
`id_producto` INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nombre` VARCHAR( 80 ) NOT NULL ,
`descripcion` VARCHAR( 250 ) NOT NULL ,
`precio` INT( 10 ) NOT NULL ,
`foto` VARCHAR( 250 ) NOT NULL ,
INDEX ( `nombre` )
) ENGINE = INNODB;
[/mysql]
PEDIDOS:
- id_pedido (clave primaria): Numérico con autoincremento de 5 posiciones.
- id_cliente (clave foránea de CLIENTES): Numérico de 5 posiciones
- fec_alta
Aquí tenéis el código SQL para añadir la tabla PEDIDOS a la base de datos:
DET_PEDIDOS:
[mysql]
CREATE TABLE `pedidos` (
`id_pedido` INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`id_cliente` INT( 5 ) NOT NULL ,
`fec_alta` DATE NOT NULL ,
INDEX ( `id_cliente` )
) ENGINE = MYISAM ;
[/mysql]
- id_detPedido (primaria): Numérico con autoincremento de 5 posiciones.
- id_pedido (clave foránea de PEDIDOS): Numérico de 5 posiciones
- id_producto (clave foránea de PRODUCTOS): Numérico de 5 posiciones
- cantidad: Numérico de 5 posiciones.
- precio: Numérico de 5 posiciones.
Aquí tenéis el código SQL para añadir la tabla DET_PEDIDOS a la base de datos:
[mysql]
CREATE TABLE `det_pedidos` (
`id_detpedido` INT( 5 ) NOT NULL AUTO_INCREMENT ,
`id_pedido` INT( 5 ) NOT NULL ,
`id_producto` INT( 5 ) NOT NULL ,
`cantidad` INT( 5 ) NOT NULL ,
`precio` INT( 5 ) NOT NULL ,
PRIMARY KEY ( `id_detpedido` ) ,
KEY `id_pedido` ( `id_pedido` , `id_producto` ) ,
KEY `id_producto` ( `id_producto` )
) ENGINE = INNODB DEFAULT CHARSET = utf8 AUTO_INCREMENT =1;
[/mysql]
Con estas 4 tablas ya tenemos completa nuestra base de datos MySQL para crear un carrito de compras para empezar a codificar nuestra aplicación en PHP.
Aquí tenéis el código completo SQL para carrito de compras con la que tan solo tendréis que crear la base de datos «colorate_paypal» ir a la IMPORTAR de PhpMyAdmin (o el que esteis utilizando) y ejecutar:
Para la siguiente parte del tutorial «Parte 5: Scripts necesarios para un carro de compra en PHP y MySql» empezaremos a codificar en PHP que es lo que seguro estabais esperando xD.
Guía Carrito de Compra en Php con forma de pago Paypal
- Parte 1: Introducción
- Parte 2: ¿Qué nos hace falta?
- Parte 3: Diagrama de Flujo
- Parte 4: Base de datos de un carro de compra
- Parte 5.1: Scripts necesarios para un carro de compra en PHP y MySQL
- Parte 5.2: Scripts necesarios para un carro de compra en PHP y MySQL
- Parte 6: Añadir PayPal como método de pago a nuestro carro de compra
- Parte 7: Factura y envío de e-mail al comprador
- Parte 8: Descarga de archivos
15 comentarios
Ya quiero que salga la parte 5 jajja 😀 ..muy buena la explicacion—gracias por el aporte
pues nada Pierre, atengo al siguiente :D, de todas maneras, ya sabes que puedes seguir el blog y sus actualizaciones por Facebook, Twitter, Feed o Correo
saludos.
Gracias por tus explicaciones, en verdad q son de gran ayuda. Estoy ansioso. Cuando sale el siguiente tutorial?
Guille estate atento al feed, facebook o twiiter que iré diciendo para cuando lo tendré listo para publicar.
Saludos y gracias por tu agradecimiento xD.
Gracias por compartir.. asi es, ya muchos esperamos la parte 5… tienes fecha aproximada de cuando sera?
Un saludo… Gracias por compartir los conocimientos…
es muy probable que lo tenga listo esta semana
me da error en la db con las tablas e insertar productos
Carlos, he actualizado la tabla clientes que daba problemas. Si tienes algún problema más, por favor, indícamelo por aqui…
GRACIAS.
A mi también me estaba dando problemas al copiar y pegar el codigo SQL en PhpMyAdmin .. al final mejor os dejo un archivo para que lo Importeis directamente.
saludos y disculpar
Gracias! espero que pronto estén listas las próximas ediciones!
Gran aporte!
muchas gracias , el prograama corre perfecto ,no me dio ningun error, eres un mos truo
Muy Buen Tutorial
Amigos, podrian explicar el codigo colocado al crear la tabla, det_pedidos?, he buscado mucho en google pero no he dado con la respuesta.
KEY `id_pedido` ( `id_pedido` , `id_producto` ) ,
KEY `id_producto` ( `id_producto` )
falto la parte cuando agregan la compra a la base de datos
FALTO LAPARTE DE AGREGAR LA COMPRA A LA BASE DE DATOS