Mengapa Sistem Basis Data Dibutuhkan di Sekolah?
    Dalam dunia pendidikan, pengelolaan data di sekolah merupakan hal yang sangat penting untuk menjamin kelancaran operasional sehari-hari. Data seperti informasi siswa, guru, kelas, jadwal pelajaran, dan mata pelajaran sering kali dikelola secara manual, yang dapat menyebabkan ketidakakuratan dan keterlambatan dalam proses administrasi. Oleh karena itu, sebuah aplikasi berbasis database diperlukan untuk mempermudah pengelolaan data secara terintegrasi dan efisien.
    Aplikasi ini bertujuan untuk mengelola data sekolah secara terstruktur, meningkatkan efisiensi kerja administrator sekolah, meminimalkan kesalahan manusia, dan menyediakan informasi yang cepat dan akurat bagi guru serta siswa.Sistem Manajemen Sekolah adalah aplikasi yang dirancang untuk membantu pengelolaan data siswa, guru, kelas, mata pelajaran, dan jadwal pelajaran secara terintegrasi. Sistem ini memungkinkan pengguna (administrator) untuk melakukan pengelolaan data melalui fitur CRUD
Artikel ini akan membahas langkah-langkah perancangan sistem, mulai dari diagram ERD,EERD hingga implementasi SQL, untuk membantu Anda memahami prosesnya.
1. Membuat Entity Relationship Diagram (ERD)
ERD adalah langkah awal untuk menggambarkan hubungan antar entitas. Berikut adalah contoh sederhana untuk sistem sekolah:
a). Entitas:
- Guru:
Atribut: id_guru, nama_guru, spesialisasi, nomor_hp.
Guru memiliki atribut unik id_guru untuk mengidentifikasi setiap guru.
- Siswa:
Atribut: id_siswa, nama_siswa, tanggal_lahir, alamat, id_kelas.
Setiap siswa memiliki id_siswa sebagai identitas unik.
- Kelas:
Atribut: id_kelas, nama_kelas, id_wali_kelas.
Kelas merupakan penghubung antara guru dan siswa, dengan wali kelas yang diidentifikasi melalui id_wali_kelas.
- Jadwal Pelajaran:
Atribut: id_jadwal, id_mapel, id_guru, id_kelas, hari, jam_mulai, jam_selesai.
Digunakan untuk mengatur jadwal berdasarkan kelas, guru, dan mata pelajaran.
- Mapel (Mata Pelajaran):
Atribut: id_mapel, nama_mapel, kesulitan.
Mata pelajaran diidentifikasi oleh id_mapel.
b). Relasi
- Guru Mengajar sesuai jadwal:
Relasi: mengajar.
Guru dapat mengajar pada banyak jadwal pelajaran, tetapi satu jadwal tertentu hanya diajar oleh satu guru pada satu waktu.
Kardinalitas: 1:N (satu guru - banyak jadwal).
- Guru Menjadi Wali Kelas:
Relasi: menjadi.
Satu guru dapat menjadi wali kelas untuk satu kelas tertentu.
Kardinalitas: 1:1 (satu guru - satu kelas).
Kelas Memiliki Siswa:
Relasi: mempunyai.
Satu kelas dapat memiliki banyak siswa, tetapi satu siswa hanya berada di satu kelas.
Kardinalitas: 1:N (satu kelas - banyak siswa).
- Kelas Dijadwalkan untuk Mata Pelajaran:
Relasi: dijadwalkan.
Satu kelas dapat memiliki banyak jadwal untuk berbagai mata pelajaran.
Kardinalitas: 1:N (satu kelas - banyak jadwal).
- Mata Pelajaran Memiliki Jadwal:
Relasi: memiliki.
Satu mata pelajaran dapat memiliki banyak jadwal di berbagai kelas.
Kardinalitas: 1:N (satu mapel - banyak jadwal).
c). Penjelasan Tambahan
Hubungan Many-to-Many Tersembunyi:
Relasi mengajar melibatkan jadwal yang menghubungkan guru, kelas, dan mata pelajaran. Ini merepresentasikan relasi many-to-many antara guru dan kelas melalui jadwal.
    ERD ini dirancang untuk merepresentasikan sistem manajemen sekolah yang komprehensif, mencakup guru, siswa, kelas, mata pelajaran, dan jadwal. Dengan relasi dan kardinalitas yang jelas, sistem ini memungkinkan pengelolaan data sekolah yang terstruktur dan mudah diimplementasikan ke dalam basis data.
2. Enhanced Entity Relationship Diagram (EERD)
Pada desain EERD, terdapat pengayaan dari diagram ERD sebelumnya dengan menambahkan atribut, entitas, atau relasi yang lebih detail. Berikut penjelasannya:
a). Ekstensi dari ERD ke EERD
- Hubungan yang Lebih Kompleks:
Relasi pada EERD memperkenalkan atribut referensi tambahan untuk memberikan keterkaitan yang lebih eksplisit. Misalnya, kelas_id_wali_kelas memberikan informasi hubungan antara siswa dengan wali kelasnya.
- Detail Mata Pelajaran:
Tingkat kesulitan pada entitas mapel memungkinkan analisis tambahan, seperti identifikasi mapel yang dianggap sulit oleh siswa.
- Jadwal yang Lebih Terstruktur:
Relasi jadwal kini mencakup semua elemen utama dari guru, kelas, mata pelajaran, hingga wali kelas. Ini menunjukkan bahwa jadwal lebih dinamis dan detail.
- Referensi Tabel:
Atribut referensi seperti kelas_id_wali_kelas memperkuat hubungan antar entitas yang sebelumnya tidak terlihat jelas di ERD.
    EERD ini menunjukkan pengayaan desain dengan memperhatikan detail hubungan antar entitas serta penambahan atribut yang relevan. Desain ini mendukung sistem manajemen sekolah yang lebih kompleks dan memungkinkan pengelolaan data yang lebih mendalam, seperti pengelolaan tingkat kesulitan mata pelajaran, hubungan wali kelas dengan siswa, serta jadwal yang lebih terstruktur
3. Implementasi Basis Data dengan SQL
    Setelah merancang diagram, langkah selanjutnya adalah mengimplementasikan rancangan tersebut menggunakan SQL.Berikut adalah implementasi SQL-nya :
a). Membuat Tabel GuruÂ
CREATE TABLE Guru (
  id_guru INT AUTO_INCREMENT PRIMARY KEY,
  nama_guru VARCHAR(100) NOT NULL,
  spesialisasi VARCHAR(100),
  nomor_hp VARCHAR(15)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
b). Membuat Tabel Kelas
CREATE TABLE Kelas (
  id_kelas INT AUTO_INCREMENT PRIMARY KEY,
  nama_kelas VARCHAR(50) NOT NULL,
  id_wali_kelas INT,
  FOREIGN KEY (id_wali_kelas) REFERENCES Guru(id_guru)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
c). Membuat Tabel Siswa
CREATE TABLE Siswa (
  id_siswa INT AUTO_INCREMENT PRIMARY KEY,
  nama_siswa VARCHAR(100) NOT NULL,
  alamat TEXT,
  tanggal_lahir DATE,
  id_kelas INT,
  FOREIGN KEY (id_kelas) REFERENCES Kelas(id_kelas)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
d). Membuat Tabel Mata Pelajaran
CREATE TABLE MataPelajaran (
  id_mapel INT AUTO_INCREMENT PRIMARY KEY,
  nama_mapel VARCHAR(100) NOT NULL,
  tingkat_kesulitan VARCHAR(50)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
e). Membuat Tabel Jadwal Pelajaran
CREATE TABLE JadwalPelajaran (
  id_jadwal INT AUTO_INCREMENT PRIMARY KEY,
  id_mapel INT,
  id_kelas INT,
  id_guru INT,
  hari VARCHAR(20),
  jam_mulai TIME,
  jam_selesai TIME,
  FOREIGN KEY (id_mapel) REFERENCES MataPelajaran(id_mapel),
  FOREIGN KEY (id_kelas) REFERENCES Kelas(id_kelas),
  FOREIGN KEY (id_guru) REFERENCES Guru(id_guru)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;