CREATE TABLE IF NOT EXISTS entities (
    cik INT PRIMARY KEY,               -- CIK is now the primary key, ensuring uniqueness
    name VARCHAR(255) NOT NULL  -- Name of the company
);

CREATE TABLE IF NOT EXISTS facts (
    id VARCHAR(255) PRIMARY KEY, -- Unique identifier for the fact
    taxonomy VARCHAR(255),       -- Taxonomy of the fact
    label VARCHAR(255),       -- Label of the fact
    description TEXT, -- Description of the fact
    unit VARCHAR(255)           -- Unit of the fact
);

CREATE TABLE IF NOT EXISTS data (
    cik INT,                            -- CIK of the company
    fact_id VARCHAR(255),                 
    start DATE,                        -- Start date of the fact
    end DATE,
    val INT,
    accn VARCHAR(255),
    fy INT,
    fp VARCHAR(255),
    form VARCHAR(255),
    filed DATE,
    frame VARCHAR(255),
    PRIMARY KEY (cik, fact_id),
    FOREIGN KEY (cik) REFERENCES entities(cik),
    FOREIGN KEY (fact_id) REFERENCES facts(id)
);
