-- Forçar a ativação de chaves estrangeiras no SQLite
PRAGMA foreign_keys = ON;

-- 1. Tabela Locador (Entidade Forte)
CREATE TABLE IF NOT EXISTS Locadores (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nome TEXT NOT NULL,
    cpf TEXT UNIQUE NOT NULL,
    telefone TEXT
);

-- 2. Tabela Corretora de Imóveis (Entidade Forte)
CREATE TABLE IF NOT EXISTS Corretoras (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nome_fantasia TEXT NOT NULL,
    creci TEXT UNIQUE NOT NULL,
    telefone TEXT
);

-- 3. Tabela Imóvel (Recebe a chave do Locador devido à relação 1:N)
CREATE TABLE IF NOT EXISTS Imoveis (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    endereco TEXT NOT NULL,
    tipo TEXT NOT NULL, -- Casa, Apartamento, Comercial
    locador_id INTEGER NOT NULL,
    FOREIGN KEY (locador_id) REFERENCES Locadores(id) ON DELETE CASCADE
);

-- 4. Tabela Locatário (Recebe a chave do Imóvel devido à relação 1:N)
CREATE TABLE IF NOT EXISTS Locatarios (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nome TEXT NOT NULL,
    cpf TEXT UNIQUE NOT NULL,
    imovel_id INTEGER, -- Pode ser NULL caso ele ainda não tenha alugado nada
    FOREIGN KEY (imovel_id) REFERENCES Imoveis(id) ON DELETE SET NULL
);

-- 5. Tabela Intermediária do relacionamento "Contatar" (N:M)
CREATE TABLE IF NOT EXISTS Contatos_Locador_Corretora (
    locador_id INTEGER NOT NULL,
    corretora_id INTEGER NOT NULL,
    data_contato DATETIME DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (locador_id, corretora_id),
    FOREIGN KEY (locador_id) REFERENCES Locadores(id) ON DELETE CASCADE,
    FOREIGN KEY (corretora_id) REFERENCES Corretoras(id) ON DELETE CASCADE
);

-- 6. Tabela Intermediária do relacionamento "Intermediar" (N:M)
CREATE TABLE IF NOT EXISTS Intermediacoes (
    corretora_id INTEGER NOT NULL,
    locatario_id INTEGER NOT NULL,
    data_intermediacao DATETIME DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (corretora_id, locatario_id),
    FOREIGN KEY (corretora_id) REFERENCES Corretoras(id) ON DELETE CASCADE,
    FOREIGN KEY (locatario_id) REFERENCES Locatarios(id) ON DELETE CASCADE
);

Embed on website

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