Skip to content
Nisa Ataş edited this page Mar 27, 2026 · 4 revisions

Backend ve Veritabanı Kurulum Rehberi

Bu sayfa, projenin sunucu tarafı, veritabanı yapılandırması ve veri yönetimine dair tüm teknik detayları içerir.

Başlangıç ve Framework Yapılandırması

Projenin temeli Spring Boot kullanılarak atılmıştır. Backend sorumlusu olarak gerçekleştirilen ilk işlemler:

  • Proje Oluşturma: Spring Initializr üzerinden Spring Web, Spring Data JPA ve PostgreSQL Driver bağımlılıkları ile temel iskelet kurulmuştur.
  • IDE Entegrasyonu: Geliştirme ortamı olarak VS Code tercih edilmiş; Java Extension Pack ve Spring Boot eklentileri ile optimize edilmiştir.

Veritabanı Tasarımı ve İlişkisel Yapı

Sistemin veri depolama katmanı için PostgreSQL 18 seçilmiştir. Sorgulama kabiliyetini artırmak için tablolar normalize edilmiştir.

1. Tablo Yapıları ve Sorumluluklar

Tablo Adı Sorumluluk Alanı İlişki Tipi
classes Sınıf ve şube bilgilerini saklar. 1:N (Sınıf -> Öğrenci)
students Öğrenci kimlik bilgilerini saklar. 1:N (Öğrenci -> Not)
grades Akademik başarı verilerini tutar. N:1 (Not -> Öğrenci)

Veri Yönetimi ve Test Dataseti

Sistemin Text-to-SQL (Doğal Dil -> SQL) dönüşümünü doğrulamak amacıyla bir test veri seti oluşturulmuştur.

Test Senaryosu: Farklı sınıflar (Sayısal/Sözel) ve farklı derslerden (Matematik, Fizik vb.) alınan örnek notlar sisteme işlenmiştir.

Doğrulama: JOIN işlemleri gerektiren "12-B sınıfındaki öğrencilerin notlarını getir" gibi sorgular pgAdmin üzerinde başarıyla test edilmiştir.

Teknik Bilgiler

  • Port: 5432

  • Veritabanı Aracı: pgAdmin 4

  • ORM: Spring Data JPA (Hibernate) - ddl-auto: update

  • Güvenlik: application.properties dosyası .gitignore ile korunmaktadır.

2. Veritabanı Şeması (SQL)

Proje ana dizinindeki database/init.sql dosyasında yer alan yapı:

CREATE TABLE IF NOT EXISTS classes (
    id SERIAL PRIMARY KEY,
    class_name VARCHAR(20) NOT NULL,
    branch VARCHAR(50)
);

CREATE TABLE IF NOT EXISTS students (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    student_number VARCHAR(20) UNIQUE,
    class_id INTEGER REFERENCES classes(id)
);

CREATE TABLE IF NOT EXISTS grades (
    id SERIAL PRIMARY KEY,
    student_id INTEGER REFERENCES students(id),
    subject VARCHAR(50),
    score INTEGER CHECK (score >= 0 AND score <= 100)
);