-- Esquema de pedidos.
CREATE TABLE Zonas_Envio (
    id_zona INTEGER PRIMARY KEY /* GENERATED BY DEFAULT AS IDENTITY */,
    nombre_zona VARCHAR(100) NOT NULL,
    tarifa_envio DECIMAL(10, 2) NOT NULL
);

CREATE TABLE Clientes (
    id_cliente INTEGER PRIMARY KEY /* GENERATED BY DEFAULT AS IDENTITY */,
    nombre VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    telefono CHAR(15),
    id_zona INTEGER NOT NULL,

    CONSTRAINT fk_cli_zon FOREIGN KEY (id_zona) REFERENCES Zonas_Envio(id_zona)
      ON DELETE SET NULL
      ON UPDATE CASCADE
);

CREATE TABLE Pedidos (
    id_pedido INTEGER PRIMARY KEY /* GENERATED BY DEFAULT AS IDENTITY */,
    fecha DATE NOT NULL,
    importe_total DECIMAL(10, 2) NOT NULL,
    id_cliente INTEGER NOT NULL,
    FOREIGN KEY (id_cliente) REFERENCES Clientes(id_cliente)
      ON DELETE CASCADE
      ON UPDATE CASCADE
);

-- Algunos zonas preexistentes.
INSERT INTO Zonas_Envio (id_zona, nombre_zona, tarifa_envio) VALUES
    (1, 'Norte', 5.00),
    (2, 'Sur', 7.50);

-- Algunos clientes preexistentes.
INSERT INTO Clientes (id_cliente, nombre, email, telefono, id_zona) VALUES
    (1, 'Ana López', 'ana.lopez@example.com', '600123456', 1),
    (2, 'Carlos Pérez', 'carlos.perez@example.com', '610654321', 2),
    (3, 'Beatriz Gómez', 'beatriz.gomez@example.com', '620987654', 1),
    (4, 'David Martín', 'david.martin@example.com', '630321789', 2);
