CREATE TABLE produtos (
    id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    codigo VARCHAR2(50),
    descricao VARCHAR2(4000)
);

CREATE INDEX idx_texto_descricao ON produtos(descricao)
INDEXTYPE IS CTXSYS.CONTEXT;

-- Tabela principal: NOTA_FISCAL
CREATE TABLE NOTA_FISCAL (
    NUMERO_NF         VARCHAR2(20) PRIMARY KEY,
    CODIGO_CLIENTE    VARCHAR2(20) NOT NULL,
    NOME_CLIENTE      VARCHAR2(100),
    VALOR_TOTAL       NUMBER(15, 2),
    DATA_SAIDA        DATE,
    CIDADE            VARCHAR2(100),
    ESTADO            VARCHAR2(2)   -- Ex: SP, RJ, MG
);

-- Tabela de itens: ITEM_NOTA_FISCAL
CREATE TABLE ITEM_NOTA_FISCAL (
    NUMERO_NF         VARCHAR2(20) NOT NULL,
    NUMERO_ITEM       NUMBER(5) NOT NULL,
    CODIGO_EAN        VARCHAR2(20),
    DESCRICAO_PRODUTO VARCHAR2(200),
    VALOR_UNITARIO    NUMBER(12, 4),
    QUANTIDADE        NUMBER(10, 2),
    VALOR_TOTAL       NUMBER(15, 2),
    VALOR_IMPOSTOS    NUMBER(15, 2),
    
    -- Chave primária composta
    CONSTRAINT PK_ITEM_NOTA PRIMARY KEY (NUMERO_NF, NUMERO_ITEM),

    -- Chave estrangeira para NOTA_FISCAL
    CONSTRAINT FK_ITEM_NOTA_FISCAL FOREIGN KEY (NUMERO_NF)
        REFERENCES NOTA_FISCAL (NUMERO_NF)
        ON DELETE CASCADE
);

-- Índice para acelerar busca por código de produto
CREATE INDEX IDX_ITEM_EAN ON ITEM_NOTA_FISCAL (CODIGO_EAN);