Basis Data (bahasa Inggris: Database) sudah tidak asing lagi bagi kalangan praktisi Database Administrator (DBA). Mereka merancang desain basis data suatu sistem agar memenuhi kriteria desain database yang baik. Basis data (database) adalah kumpulan atau koleksi data yang terorganisir dan terstruktur, di mana data tersebut dapat disimpan secara elektronik. Data dalam basis data disimpan dalam tabel yang terdiri dari baris dan kolom. Setiap kolom mewakili atribut khusus, dan setiap baris mewakili entitas atau catatan. Database memfasilitasi pengelolaan data terpusat yang memungkinkan untuk diakses bersama banyak pengguna lainnya.
Merancang database memerlukan proses normalisasi. Normalisasi basis data adalah proses mengatur ulang data dalam basis data untuk mengurangi redundansi, menghindari anomali data, dan memastikan integritas data. Tujuan dari hal tersebut adalah menghindari anomali ketika melakukan proses INSERT, DELETE, maupun UPDATE.
Pada kesempatan kali ini, kita tidak akan membahas teori normalisasi data lebih jauh. Kita akan bahas soal desain database inventory stok barang dengan teknik query. Namun, bila kamu ingin belajar soal normalisasi data, kamu bisa mencari informasi via search engine dengan keyword “normalization database”.
💻 Mulai Belajar Pemrograman
Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.
Daftar SekarangOke, tanpa perlu berlama-lama lagi kita akan coba mempraktikkan langsung cara merancang database inventory stok barang dengan teknik query.
Pertama, Membuat Basis Data
Hasil normalisasi basis data untuk inventory stok barang yang kita miliki adalah tabel distributor, tabel barang, tabel pembelian, tabel detail pembelian, dan tabel stok. Di sini, kita akan menggunakan PostgreSQL sebagai RDBMS (Relational Database Management System).
Sintaks untuk membuat basis data adalah CREATE DATABASE dbinventory; di mana dbinventory adalah nama database yang akan menampung object seperti tabel yang akan kita buat.
Kedua, Membuat Tabel
Selanjutnya, kita membuat satu file yang diberi nama buat_tabel.sql dan sintaks pembuatan tabelnya adalah sebagai berikut.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
-- Script untuk membuat tabel-tabel di PostgreSQL -- Tabel Distributor CREATE TABLE distributor ( DistributorID SERIAL PRIMARY KEY, Nama VARCHAR(255), Alamat VARCHAR(255), Telp VARCHAR(20) ); -- Tabel Barang CREATE TABLE barang ( KodeBarang SERIAL PRIMARY KEY, Nama VARCHAR(255), Deskripsi TEXT, Harga DECIMAL(10, 2) ); -- Tabel pembelian CREATE TABLE pembelian ( OrderID SERIAL PRIMARY KEY, DistributorID INT REFERENCES distributor(DistributorID), Tglpembelian DATE, TglPengiriman DATE, Totalharga DECIMAL(10, 2) ); -- Tabel detail pembelian CREATE TABLE detailpembelian ( DetailPembelianID SERIAL PRIMARY KEY, OrderID INT REFERENCES pembelian(OrderID), KodeBarang INT REFERENCES barang(KodeBarang), Quantity INT, HargaSatuan DECIMAL(10, 2), Subtotal DECIMAL(10, 2) ); -- Tabel Stok CREATE TABLE Stok ( StokID SERIAL PRIMARY KEY, KodeBarang INT REFERENCES barang(KodeBarang), JumlahStok INT, LastUpdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); |
Jangan lupa disimpan dan kita eksekusi file *.sql tersebut dengan perintah:
1 |
\i /home/amrilhs/test/buat_tabel.sql |
Terkait path lokasi penyimpanan file *.sql, kamu bisa menyesuaikannya sendiri, ya.
Hasilnya seperti gambar di bawah ini.
Ketiga, Insert Data dan Menampilkan Data Menggunakan Procedure SQL
Selanjutnya, kita akan mencoba menyimpan/menambahkan data di setiap tabel yang sudah ada. Cara yang digunakan adalah menggunakan procedure SQL. Procedure SQL adalah kumpulan instruksi yang disimpan di dalam basis data dan dapat dipanggil secara berulang-ulang.
Perintah menjalankannya adalah Call <nama_file_procedure>. Langkah awal adalah membuka file editor baru seperti nano atau vim atau editor lainnya, dan skrip yang dimaksud adalah sebagai berikut.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
CREATE PROCEDURE insert_data_into_tables() LANGUAGE plpgsql AS $$ BEGIN -- 1. Masukkan data ke tabel distributor INSERT INTO distributor (Nama, Alamat, Telp) VALUES ('PT. ABC', 'Jl. Merdeka No. 100, Jakarta', '021-12345678'), ('PT. DEF', 'Jl. Thamrin No. 200, Jakarta', '021-23456789'), ('PT. GHI', 'Jl. Gatot Subroto No. 300, Jakarta', '021-34567890'), ('PT. JKL', 'Jl. Sudirman No. 400, Jakarta', '021-45678901'), ('PT. MNO', 'Jl. Hasanudin No. 500, Jakarta', '021-56789012'); -- 2. Masukkan data ke tabel barang INSERT INTO barang (Nama, Deskripsi, Harga) VALUES ('Laptop ASUS VivoBook', 'Laptop dengan prosesor Intel Core i5 dan RAM 8 GB', 7000000), ('Smartphone Samsung Galaxy A53', 'Smartphone dengan layar Super AMOLED 6,5 inci dan kamera 64 MP', 5000000), ('TV LED LG 43 Inch', 'TV LED dengan resolusi 4K dan HDR', 7500000), ('Mesin Cuci Samsung 10 Kg', 'Mesin cuci dengan kapasitas 10 kg dan fitur Eco Bubble', 5500000), ('Setrika Philips GC3902', 'Setrika dengan teknologi OptimalTemp', 250000); -- 3. Masukkan data ke tabel pembelian INSERT INTO pembelian (DistributorID, TglPembelian, TglPengiriman, TotalHarga) VALUES (1, '2023-10-20', '2023-10-25', 12000000), (2, '2023-10-21', '2023-10-26', 15000000), (3, '2023-10-22', '2023-10-27', 20000000), (4, '2023-10-23', '2023-10-28', 17500000), (5, '2023-10-24', '2023-10-29', 10500000); -- 4. Masukkan data ke tabel detail pembelian INSERT INTO detailpembelian (OrderID, KodeBarang, Quantity, HargaSatuan, Subtotal) VALUES (1, 1, 1, 7000000, 7000000), (1, 2, 2, 5000000, 10000000), (2, 3, 3, 7500000, 22500000), (3, 4, 4, 5500000, 22000000), (4, 5, 5, 250000, 1250000); -- 5. Masukkan data ke tabel stok INSERT INTO stok (KodeBarang, JumlahStok) VALUES (1, 100), (2, 200), (3, 300), (4, 400), (5, 500); END; $$ |
Kemudian, simpan dengan nama insert_table.sql. Setelah itu, jalankan dengan perintah membuat procedure seperti di bawah ini.
Untuk mengeksekusi procedure tadi, gunakan perintah berikut.
1 |
Call insert_data_into_tables(); |
Setelah melakukan insert data, kita akan coba menampilkan data tersebut. Caranya sama, hanya perintahnya saja yang berbeda. Buat satu file dan simpan dengan nama display_table.sql. Skripnya seperti di bawah ini.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
CREATE OR REPLACE PROCEDURE tampilkan_data() LANGUAGE plpgsql AS $$ DECLARE distributor_record record; barang_record record; pembelian_record record; detailpembelian_record record; stok_record record; BEGIN -- 1. Tampilkan data tabel distributor FOR distributor_record IN (SELECT * FROM distributor) LOOP RAISE NOTICE 'Distributor: %', distributor_record; END LOOP; -- 2. Tampilkan data tabel barang FOR barang_record IN (SELECT * FROM barang) LOOP RAISE NOTICE 'Barang: %', barang_record; END LOOP; -- 3. Tampilkan data tabel pembelian FOR pembelian_record IN (SELECT * FROM pembelian) LOOP RAISE NOTICE 'Pembelian: %', pembelian_record; END LOOP; -- 4. Tampilkan data tabel detail pembelian FOR detailpembelian_record IN (SELECT * FROM detailpembelian) LOOP RAISE NOTICE 'Detail Pembelian: %', detailpembelian_record; END LOOP; -- 5. Tampilkan data tabel stok FOR stok_record IN (SELECT * FROM stok) LOOP RAISE NOTICE 'Stok: %', stok_record; END LOOP; END; $$; |
Untuk path penyimpanan file, silakan kamu sesuaikan sendiri, ya. Kemudian jalankan perintah tersebut.
1 |
Panggil dengan perintah CALL tampilkan_data(); |
Sejauh ini, eksekusi file procedure SQL sudah berhasil dilakukan. Untuk mencoba perintah SQL lain yang dijalankan dengan procedure, kamu dapat mencari referensinya via search engine dengan keyword “postgresql stored procedures”. Selamat mencoba, ya 😊
Apa langkah selanjutnya?
Setelah desain database selesai, saatnya untuk merancang desain sistem. Prioritasnya dapat ditentukan berdasarkan kebutuhan, seperti perancangan desain UI/UX atau perancangan arsitek backend sesuai kebutuhan. Demikian tutorial Desain Basis Data Inventory Stok Barang dengan Teknik Query. Semoga bermanfaat.