Proje: OkulUp API · Hub: OkulUp API — Architecture
OkulUp API — Veritabanı Şeması
KRITIK: Primary Key Türleri ve FK Kuralı
Bu kritik bilgi FK hatalarına yol açtığından kesinlikle ezberlenmelidir:
| Tablo | PK Türü | FK için kullan |
|---|---|---|
schools | increments('id') = unsigned int | unsignedInteger |
users | increments('id') = unsigned int | unsignedInteger |
classes | $table->id() = bigIncrements | unsignedBigInteger |
| Diğer yeni tablolar | $table->id() = bigIncrements | unsignedBigInteger |
ASLA
foreignId('school_id')veyaforeignId('user_id')kullanma — type mismatch hatası verir!
Ana Tablolar ve İlişkiler
Çekirdek Kimlik
schools (id: uint, name, about, mission, vision, status, soft_delete)
└── settings (school_id, features JSON, policies JSON, branding JSON, support JSON)
roles (id, name: admin|manager|teacher|parent|student)
users (id: uint, role_id, school_id, name, first_name, last_name, email, ...)
class_user (class_id: ubigint, user_id: uint, role: teacher|student)
student_parent (student_id: uint, parent_id: uint, relationship)
Akademik Modüller
classes (id: ubigint, school_id: uint, name, grade_level, branch, is_active)
announcements (school_id, class_id nullable, student_id nullable, title, body, published_at)
announcement_reads (announcement_id, user_id)
announcement_attachments
schedules (school_id, class_id, teacher_id, day_of_week, start_time, end_time, subject)
attendances (school_id, class_id, student_id, teacher_id, attendance_date, status, check_in_time)
status: present | absent | late | excused
assignments (school_id, class_id, teacher_id, title, due_date, status: draft|published|closed)
assignment_submissions (assignment_id, student_id, status: pending|submitted|late|reviewed, grade, submitted_by)
assignment_attachments (assignment_id, file_path, file_name, file_size, mime_type)
İletişim
conversations (title, conversation_type: direct|broadcast|group, reply_policy, teacher_id, parent_id, class_id)
conversation_participants (conversation_id, user_id)
messages (conversation_id, sender_id, content, read_at, attachment_path)
message_reads (message_id, user_id, read_at)
Ödeme
payment_types (school_id, name, description)
payments (school_id, student_id, payment_type_id, amount, currency, due_date, paid_date, status, receipt_url)
status: pending | paid | overdue | cancelled
Diğer Modüller
events (school_id, class_id nullable, title, description, start_datetime, end_datetime, cover_image)
event_rsvps (event_id, user_id, status: attending|not_attending|maybe)
galleries (school_id, class_id, title, status: pending|approved|rejected)
gallery_media (gallery_id, uploaded_by, file_path, thumbnail_path, mime_type)
tracking_entries (school_id, student_id, created_by, date, category, status, time, notes, photo_path)
categories: meal_breakfast|meal_lunch|meal_snack|sleep|medication|diaper|mood|note
appointments (school_id, teacher_id, parent_id, student_id, appointment_date, start_time, end_time, status)
status: pending|confirmed|cancelled|completed
notes (user_id, title, content, note_date, category, color, reminder_at)
document_requests (school_id, requester_id, receiver_id, type, title, status, due_date)
enrollment_requests (user_id, school_id, status: pending|approved|rejected)
meal_menus (school_id, created_by, date, title, content)
meal_menu_attachments
devices (user_id, token, platform: ios|android, is_active)
notifications (user_id, type, title, body, data JSON, read_at)
audit_logs (user_id, action, model_type, model_id, old_values JSON, new_values JSON, ip_address)
report_exports (user_id, type, status, file_path, filters JSON)
Related
- sistem-genel-bakis — tüm mimari bağlamı
- rol-ve-yetki-mimarisi — user/school ilişkileri ve izinler