Monday, April 14, 2025

Tugas Mapel BD 15/04/2025

PRAKTIKUM LENGKAP BASIS DATA: RELASI ANTAR TABEL APLIKASI ATM

A. Tujuan Praktikum

1. Membuat database ATM dengan struktur tabel yang saling berelasi.

2. Memahami penggunaan perintah SQL melalui CMD.

3. Mengetahui bagaimana transaksi dalam aplikasi ATM disimpan dalam basis data.


---


B. Kebutuhan

- MySQL sudah terpasang dan dapat diakses melalui Command Prompt (CMD).

- Akun root atau akun lain dengan hak akses membuat database.


C. Struktur Database

Database ini akan terdiri dari tabel:

1. `nasabah` – menyimpan data pemilik rekening.

2. `rekening` – menyimpan data rekening yang dimiliki nasabah.

3. `transaksi` – menyimpan data transaksi (setor, tarik, transfer).

4. `log_transfer` – menyimpan log transfer antar rekening (untuk detail transfer).


D. Langkah-Langkah Praktikum


1. Masuk ke MySQL via CMD

```cmd

mysql -u root -p

```

Ketik password dan tekan Enter.


---


2. Membuat Database

```sql

CREATE DATABASE db_atm;

USE db_atm;

```


---


3. Membuat Tabel `nasabah`

```sql

CREATE TABLE nasabah (

    id_nasabah INT AUTO_INCREMENT PRIMARY KEY,

    nama_lengkap VARCHAR(100) NOT NULL,

    alamat VARCHAR(150),

    no_ktp VARCHAR(20) UNIQUE NOT NULL,

    tanggal_daftar DATE DEFAULT (CURRENT_DATE)

);

```


---


4. Membuat Tabel `rekening`

```sql

CREATE TABLE rekening (

    no_rekening VARCHAR(15) PRIMARY KEY,

    id_nasabah INT,

    pin CHAR(6) NOT NULL,

    saldo DECIMAL(15,2) DEFAULT 0,

    status ENUM('Aktif', 'Nonaktif') DEFAULT 'Aktif',

    FOREIGN KEY (id_nasabah) REFERENCES nasabah(id_nasabah) ON DELETE CASCADE

);

```


---


5. Membuat Tabel `transaksi`

```sql

CREATE TABLE transaksi (

    id_transaksi INT AUTO_INCREMENT PRIMARY KEY,

    no_rekening VARCHAR(15),

    jenis_transaksi ENUM('Setor', 'Tarik', 'Transfer'),

    jumlah DECIMAL(15,2),

    waktu_transaksi DATETIME DEFAULT CURRENT_TIMESTAMP,

    FOREIGN KEY (no_rekening) REFERENCES rekening(no_rekening) ON DELETE CASCADE

);

```


---


6. Membuat Tabel `log_transfer`

```sql

CREATE TABLE log_transfer (

    id_transfer INT AUTO_INCREMENT PRIMARY KEY,

    dari_rekening VARCHAR(15),

    ke_rekening VARCHAR(15),

    jumlah DECIMAL(15,2),

    waktu_transfer DATETIME DEFAULT CURRENT_TIMESTAMP,

    FOREIGN KEY (dari_rekening) REFERENCES rekening(no_rekening),

    FOREIGN KEY (ke_rekening) REFERENCES rekening(no_rekening)

);

```


---


E. Menambahkan Data Contoh


1. Tambah Nasabah

```sql

INSERT INTO nasabah (nama_lengkap, alamat, no_ktp)

VALUES ('Budi Santoso', 'Jl. Kenanga No.12', '111222333444'),

       ('Siti Aminah', 'Jl. Melati No.5', '555666777888');

```


2. Tambah Rekening

```sql

INSERT INTO rekening (no_rekening, id_nasabah, pin, saldo)

VALUES ('1001001', 1, '123456', 2000000),

       ('1001002', 2, '654321', 3500000);

```


3. Tambah Transaksi

```sql

INSERT INTO transaksi (no_rekening, jenis_transaksi, jumlah)

VALUES ('1001001', 'Setor', 500000),

       ('1001001', 'Tarik', 100000),

       ('1001002', 'Setor', 200000);

```


4. Simulasi Transfer

```sql

-- Transfer dari 1001001 ke 1001002 sebesar 300000

INSERT INTO transaksi (no_rekening, jenis_transaksi, jumlah)

VALUES ('1001001', 'Transfer', 300000);


INSERT INTO log_transfer (dari_rekening, ke_rekening, jumlah)

VALUES ('1001001', '1001002', 300000);

```


---


F. Melihat Data


```sql

SELECT * FROM nasabah;

SELECT * FROM rekening;

SELECT * FROM transaksi;

SELECT * FROM log_transfer;

```


---


G. Uji Coba Relasi (Opsional)


1. Hapus Nasabah dan lihat efek ke rekening dan transaksi

```sql

DELETE FROM nasabah WHERE id_nasabah = 1;

```

Cek kembali:

```sql

SELECT * FROM rekening;

SELECT * FROM transaksi;

```


---


H. Pertanyaan Diskusi

1. Apa perbedaan antara `PRIMARY KEY` dan `FOREIGN KEY`?

2. Mengapa kita perlu `ON DELETE CASCADE` pada relasi antar tabel?

3. Apa yang terjadi jika kita menghapus nasabah? Apakah rekening dan transaksi ikut terhapus?

4. Bagaimana kita bisa melacak transaksi transfer antar rekening?

5. Bagaimana cara menampilkan semua transaksi milik nasabah tertentu?


---


I. Tugas Tambahan (Opsional)

Buat query SQL untuk:

- Menampilkan total saldo semua rekening.

- Menampilkan semua transaksi dengan jenis "Setor".

- Menampilkan semua log transfer dari rekening tertentu.


---



No comments:

Post a Comment

Tugas DPK

TUGAS 15/04/2025 -Pelajari modulnya -Praktikkan semua praktikum dibawah ini menggunakan aplikasi c# yg ada di hp masing-masing -Simpan dan s...