2. Relasi

Dalam database mysql ada 3 jenis relationship yaitu:

  1. One to One (1:1)
    Setiap baris dalam tabel A hanya dapat berhubungan dengan satu baris di tabel B, dan sebaliknya. Contoh ada tabel Siswa dan tabel LaptopSiswa. Setiap siswa memiliki satu laptop dan setiap laptop hanya milik satu siswa.
  2. One to Many (1:M)
    Satu baris di tabel A dapat berhubungan dengan banyak baris di tabel B, tetapi satu baris di tabel B hanya berhubungan dengan satu baris di tabel A. Contoh ada tabel author dan tabel book. Seorang penulis dapat menulis banyak buku tetapi setiap buku hanya mempunyai satu penulis
  3. Many to Many (M:N)
    Banyak baris di tabel A dapat berhubungan dengan banyak baris di tabel B, dan sebaliknya. Contoh tabel Mahasiswa dan tabel Matkul. Seorang mahasiswa dapat mengambil banyak Mata Kuliah, dan satu Mata Kuliah dapat diambil oleh banyak Mahasiswa.

untuk many to many Dibutuhkan tabel ketiga (tabel penghubung) untuk mengelola hubungan, biasanya berisi foreign key dari kedua tabel utama.

Contoh soal :

Sebuah universitas bernama UnivSmart sedang membangun sistem informasi akademik untuk mencatat data akademik mahasiswa, dosen, dan mata kuliah. Setiap mahasiswa memiliki data pribadi yang mencakup ID Mahasiswa, nama lengkap, tanggal lahir, alamat, dan program studi. Selain itu, setiap mahasiswa juga memiliki satu Kartu Tanda Mahasiswa (KTM) yang menyimpan informasi ID KTM, ID Mahasiswa terkait, dan tanggal penerbitan. Dalam sistem ini, data mata kuliah juga harus dicatat, yang meliputi ID Mata Kuliah, nama mata kuliah, jumlah SKS, dan semester mata kuliah ditawarkan. Dosen di universitas ini juga dikelola dalam sistem, dengan informasi mencakup ID Dosen, nama dosen, gelar akademik, dan departemen tempat dosen bekerja.
Setiap mata kuliah hanya diajarkan oleh satu dosen, tetapi satu dosen dapat mengajar beberapa mata kuliah. Selain itu, mahasiswa dapat mendaftar ke beberapa mata kuliah, dan satu mata kuliah dapat diikuti oleh banyak mahasiswa. Untuk mencatat data pendaftaran mata kuliah, sistem menyimpan informasi ID Pendaftaran, ID Mahasiswa, ID Mata Kuliah, dan tanggal pendaftaran.
Berdasarkan cerita tersebut, buatlah tabel-tabel database dengan relasi yang mencakup:
1. Relasi 1:1 antara mahasiswa dan KTM.
2. Relasi 1:M antara dosen dan mata kuliah.
3. Relasi M:N antara mahasiswa dan mata kuliah melalui tabel pendaftaran.

Jawabannya :

Keterangan

  • kita bisa melihat mahasiswa dan KTM saling tersambung garisnya yang berRelasi 1:1 one to one.
  • 1 dosen mengajar 1 - banyak mata kuliah jadi kita bisa melihat dosen ke mata kuliah 1:M
  • 1 - banyak mahasiswa bisa mengambil 1 - banyak mata kuliah. Dan ketika terjadi M:N atau banyak ke banyak maka harus dibuat tabel baru untuk Merepresentasikan relasi banyak ke banyak secara efisien.

untuk query nya:

Tabel Mahasiswa
CREATE TABLE Mahasiswa (
    ID_Mahasiswa INT PRIMARY KEY,
    Nama_Lengkap VARCHAR(100),
    Tanggal_Lahir DATE,
    Alamat VARCHAR(255),
    Program_Studi VARCHAR(50)
);
Tabel KTM
CREATE TABLE KTM (
    ID_KTM INT PRIMARY KEY,
    ID_Mahasiswa INT UNIQUE,
    Tanggal_Penerbitan DATE,
    FOREIGN KEY (ID_Mahasiswa) REFERENCES Mahasiswa(ID_Mahasiswa)
);
Tabel Dosen
CREATE TABLE Dosen (
    ID_Dosen INT PRIMARY KEY,
    Nama_Dosen VARCHAR(100),
    Gelar VARCHAR(50),
    Departemen VARCHAR(50)
);
Tabel Mata Kuliah
CREATE TABLE Mata_Kuliah (
    ID_Mata_Kuliah INT PRIMARY KEY,
    Nama_Mata_Kuliah VARCHAR(100),
    Jumlah_SKS INT,
    Semester INT,
    ID_Dosen INT,
    FOREIGN KEY (ID_Dosen) REFERENCES Dosen(ID_Dosen)
);
Tabel Mahasiswa
CREATE TABLE Pendaftaran (
    ID_Pendaftaran INT PRIMARY KEY,
    ID_Mahasiswa INT,
    ID_Mata_Kuliah INT,
    Tanggal_Pendaftaran DATE,
    FOREIGN KEY (ID_Mahasiswa) REFERENCES Mahasiswa(ID_Mahasiswa),
    FOREIGN KEY (ID_Mata_Kuliah) REFERENCES Mata_Kuliah(ID_Mata_Kuliah)
);