Pages

Project Database Programming Menggunakan PHP #1

A. Berdasarkan tabel diatas, tuliskan syntax SQL untuk instruksi dibawah ini:
  1. Buat database "Perpustakaan".
  2. Buat Store Procedure untuk menambahkan lebih dari 2 data pada tabel Buku dan tabel Penerbit dengan menggunakan Transaction (Commit dan Rollback) dan jalankan Store Procedure tersebut.
  3. Buat Function untuk menghitung "Total Buku" berdasarkan Penerbit yang dikehendaki.
  4. Buat Trigger untuk mengurangi stok secara otomatis ketika terjadi peminjaman pada buku yang dipinjam.
  5. Tampilkan kolom nama_buku, stok, penerbit, total_buku, dimana total_buku didapat dari Function yang sudah dibuat sebelumnya.
B. Buat form transaksi tambah, ubah, hapus, dan cari data Buku berbasis web menggunakan tag
     HTML dan PHP.

JAWABAN, A:
1. Membuat database "Perpustakaan"
    CREATE DATABASE perpustakaan

    Menampilkan database
    SHOW DATABASES

    Menggunakan database "Perpustakaan"
    USE perpustakaan

    Menghapus database "Perpustakaan"
    DROP DATABASE perpustakaan

    Membuat tabel "Penerbit"
    CREATE TABLE penerbit(
    id_penerbit INT PRIMARY KEY,
    penerbit VARCHAR(50)
  )

    Membuat tabel "Buku"
    CREATE TABLE buku(
    id_buku INT PRIMARY KEY,
    id_penerbit INT,
    nama_buku VARCHAR(50),
    stok INT
  )

    Membuat tabel "Peminjaman"
    CREATE TABLE peminjaman(
    id_pinjam INT PRIMARY KEY,
    id_buku INT,
    tgl_pinjam VARCHAR(50),
    jumlah INT
  )

    Menampilkan tabel yang sudah dibuat
    SHOW TABLES

    Menghapus tabel yang sudah dibuat
    DROP TABLE penerbit

    Menambahkan record tabel Penerbit dan Buku
    INSERT INTO penerbit VALUES(1, 'Andi Offset')
  INSERT INTO buku VALUES(1, 1, 'Database Programming', 100)

    Mengubah record tabel Penerbit
    UPDATE penerbit SET penerbit='Andi Jogja' WHERE id_penerbit=1

    Menghapus record tabel Buku
    DELETE FROM buku WHERE id_buku=1

2. Jawaban pada nomor 2 ini dibagi menjadi dua, yaitu jika id_penerbit pada tabel penerbit
    dan id_buku pada tabel buku merupakan Primary Key, dan berikutnya untuk id_penerbit
    dan id buku bukan Primary Key.
    a. Store Procedure + Commit Rollback untuk id_penerbit dan id_buku Primary Key.
        DELIMITER $$
        CREATE PROCEDURE `perpustakaan`.`tambahdata`(
        idp INT, terbit CHAR(25), 
        idb INT, buku CHAR(25), stok INT
    )
BEGIN
        DECLARE EXIT HANDLER FOR SQLEXCEPTION
        BEGIN
             SELECT "Maaf, ID Penerbit Duplicat";
             ROLLBACK;
        END;
        START TRANSACTION;
            INSERT INTO penerbit VALUES(idp, terbit);
            INSERT INTO buku VALUES(idb, idp, buku, stok);
        COMMIT;
END$$
        DELIMITER ;

    b. Store Procedure + Commit Rollback untuk id_penerbit & id_buku bukan
        Primary Key.
        DELIMITER $$
   CREATE PROCEDURE `perpustakaan`.`tambahdata`(
        idp INT, terbit CHAR(25), idb INT,
       buku CHAR(25), stok INT
   )
   BEGIN
        DECLARE cari INT;
SELECT id_penerbit
FROM penerbit
WHERE id_penerbit=idp INTO cari;
START TRANSACTION;
INSERT INTO penerbit VALUES(idp,terbit);
INSERT INTO buku VALUES(idb,idp,buku,stok);
IF (cari=idp) THEN
            SELECT "Maaf, Id Penerbit Duplicat";
            ROLLBACK;
ELSE
            SELECT "BERHASIL";
            COMMIT;
END IF;
   END$$
   DELIMITER ;

3. Function Total Buku berdasarkan Penerbit.
  DELIMITER $$
  CREATE
       FUNCTION `perpustakaan`.`totalbuku`(id INT)
       RETURNS INT   
       BEGIN
             RETURN(SELECT SUM(stok) FROM buku
            WHERE id_penerbit=id);
       END$$
  DELIMITER ;

4. Trigger Menggurangi Stok Secara Otomatis.
  DELIMITER $$
  CREATE
      TRIGGER `perpus`.`kurangistok` AFTER INSERT
      ON `perpus`.`peminjaman`
      FOR EACH ROW BEGIN
         UPDATE buku SET stok=stok-new.jumlah
         WHERE id_buku=new.id_buku;
      END$$
  DELIMITER ;

5. Menampilkan kolom nama_buku, stok, penerbit, totalbuku.
     SELECT nama_buku, stok, penerbit, totalbuku(3)
  FROM buku, penerbit
  WHERE penerbit.id_penerbit=buku.id_penerbit



No comments:

Post a Comment