-- Tabla usuario
CREATE TABLE usuario (
    id_usuario INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    apellido VARCHAR(100) NOT NULL,
    correo VARCHAR(100) NOT NULL,
    telefono VARCHAR(100) NOT NULL
);

-- Tabla categoria
CREATE TABLE categoria (
    id_categoria INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    descripcion VARCHAR(100)
);

-- Tabla producto
CREATE TABLE producto (
    id_producto INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    descripcion VARCHAR(200),
    precio DECIMAL(10,2) NOT NULL,
    stock INT NOT NULL DEFAULT 0,
    id_categoria INT NOT NULL,
    id_usuario INT NOT NULL,
    FOREIGN KEY (id_categoria)
        REFERENCES categoria(id_categoria),
    FOREIGN KEY (id_usuario)
        REFERENCES usuario(id_usuario)
);

-- Tabla direccion
CREATE TABLE direccion (
     id_direccion INT AUTO_INCREMENT PRIMARY KEY,
    id_usuario INT NOT NULL,
    direccion VARCHAR(100) NOT NULL,
    ciudad VARCHAR(20) UNIQUE,
    departamento VARCHAR(20),
    FOREIGN KEY (id_usuario)
        REFERENCES usuario(id_usuario)
);

-- Tabla pedido
CREATE TABLE pedido (
    id_pedido INT AUTO_INCREMENT PRIMARY KEY,
    id_usuario INT NOT NULL,
    id_direccion INT NOT NULL,
    fecha DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    total DECIMAL(10,2) NOT NULL DEFAULT 0,
    estado VARCHAR(30) NOT NULL,
    FOREIGN KEY (id_usuario)
        REFERENCES usuario(id_usuario),
    FOREIGN KEY (id_direccion)
        REFERENCES direccion(id_direccion)

);

-- Tabla detalle_pedido
CREATE TABLE detalle_pedido (
     id_detalle INT AUTO_INCREMENT PRIMARY KEY,
    id_pedido INT NOT NULL,
    id_producto INT NOT NULL,
    cantidad INT NOT NULL,
    precio_unitario DECIMAL(10,2) NOT NULL,
    FOREIGN KEY (id_pedido)
        REFERENCES pedido(id_pedido),
    FOREIGN KEY (id_producto)
        REFERENCES producto(id_producto)
);

-- Tabla pago
CREATE TABLE pago (
    id_pago INT AUTO_INCREMENT PRIMARY KEY,
    id_pedido INT NOT NULL,
    metodo_pago INT NOT NULL,
    monto DECIMAL(10,2) NOT NULL,
    fecha_pago DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    estado VARCHAR(100) NOT NULL,
    FOREIGN KEY (id_pedido)
        REFERENCES pedido(id_pedido)
);
-- Mostrar las tablas
SHOW TABLES;

-- Consultar estructuras de las tablas
DESCRIBE usuario;

DESCRIBE categoria;

DESCRIBE producto;

DESCRIBE direccion;

DESCRIBE pedido;

DESCRIBE detalle_pedido;

DESCRIBE pago;

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: