-- Schema database untuk Sistem Klasifikasi Jurusan Siswa
-- Jalankan file ini di database: db_klasifikasi

CREATE TABLE IF NOT EXISTS admin (
    id SERIAL PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    password_hash VARCHAR(64) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS hasil_prediksi (
    id SERIAL PRIMARY KEY,
    nama_siswa VARCHAR(100) NOT NULL,
    -- Kolom Semester 1, 2, dan Rata-rata untuk Informatika
    nilai_informatika_sem1 DOUBLE PRECISION,
    nilai_informatika_sem2 DOUBLE PRECISION,
    nilai_informatika DOUBLE PRECISION NOT NULL,
    -- Kolom Semester 1, 2, dan Rata-rata untuk Fisika
    nilai_fisika_sem1 DOUBLE PRECISION,
    nilai_fisika_sem2 DOUBLE PRECISION,
    nilai_fisika DOUBLE PRECISION NOT NULL,
    -- Kolom Semester 1, 2, dan Rata-rata untuk Kimia
    nilai_kimia_sem1 DOUBLE PRECISION,
    nilai_kimia_sem2 DOUBLE PRECISION,
    nilai_kimia DOUBLE PRECISION NOT NULL,
    -- Kolom Semester 1, 2, dan Rata-rata untuk Biologi
    nilai_biologi_sem1 DOUBLE PRECISION,
    nilai_biologi_sem2 DOUBLE PRECISION,
    nilai_biologi DOUBLE PRECISION NOT NULL,
    -- Kolom Semester 1, 2, dan Rata-rata untuk BIG Lanjut
    nilai_big_lanjut_sem1 DOUBLE PRECISION,
    nilai_big_lanjut_sem2 DOUBLE PRECISION,
    nilai_big_lanjut DOUBLE PRECISION NOT NULL,
    -- Kolom Semester 1, 2, dan Rata-rata untuk Ekonomi
    nilai_ekonomi_sem1 DOUBLE PRECISION,
    nilai_ekonomi_sem2 DOUBLE PRECISION,
    nilai_ekonomi DOUBLE PRECISION NOT NULL,
    -- Kolom Semester 1, 2, dan Rata-rata untuk MAT Lanjut
    nilai_mat_lanjut_sem1 DOUBLE PRECISION,
    nilai_mat_lanjut_sem2 DOUBLE PRECISION,
    nilai_mat_lanjut DOUBLE PRECISION NOT NULL,
    -- Kolom Semester 1, 2, dan Rata-rata untuk SEJ Lanjut
    nilai_sej_lanjut_sem1 DOUBLE PRECISION,
    nilai_sej_lanjut_sem2 DOUBLE PRECISION,
    nilai_sej_lanjut DOUBLE PRECISION NOT NULL,
    -- Kolom Semester 1, 2, dan Rata-rata untuk Sosiologi
    nilai_sosiologi_sem1 DOUBLE PRECISION,
    nilai_sosiologi_sem2 DOUBLE PRECISION,
    nilai_sosiologi DOUBLE PRECISION NOT NULL,
    -- Kolom Semester 1, 2, dan Rata-rata untuk Geografi
    nilai_geografi_sem1 DOUBLE PRECISION,
    nilai_geografi_sem2 DOUBLE PRECISION,
    nilai_geografi DOUBLE PRECISION NOT NULL,
    paket_prediksi INTEGER NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE INDEX IF NOT EXISTS idx_hasil_prediksi_nama ON hasil_prediksi (nama_siswa);
CREATE INDEX IF NOT EXISTS idx_hasil_prediksi_paket ON hasil_prediksi (paket_prediksi);
