Carrito de compra en PHP, MySql y forma de pago Paypal (Parte 4: Base de datos de un carro de compra)

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):

Analisis base de datos

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.

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:

Base de datos MySql

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:

Base de datos Carro de Compra

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