DataLens

Apa itu database relasional: tabel, baris, kolom

Kenali database yang akan kamu pakai sepanjang track ini, dan pelajari istilah-istilah yang dipakai semua orang untuk membicarakan tabel.

Level: Dasar · 8 menit baca

Latihan modul ini

Soal-soal untuk pelajaran ini berjalan di browser-mu dan langsung mengecek jawabanmu.

Idenya

Kalau kamu pernah memakai spreadsheet, kamu sudah memahami sebagian besar database. Database adalah kumpulan data terorganisir yang bisa disimpan, dicari, dan diperbarui sebuah program dengan aman, bahkan saat banyak orang memakainya bersamaan. Database relasional menyimpan data itu di dalam tabel, dan memungkinkan tabel-tabel saling menunjuk. PostgreSQL, database yang diajarkan track ini, adalah salah satu database relasional paling populer di dunia, dan gratis.

Jadi kenapa tidak pakai spreadsheet saja? Tiga alasan yang akan cepat kamu rasakan di tempat kerja:

Analogi

Spreadsheet adalah buku catatan yang kamu tulis dengan tangan. Database adalah perpustakaan yang dikelola dengan baik: setiap buku punya tempat tetap, kartu katalog, dan pustakawan (database engine) yang menemukan persis apa yang kamu minta dan mencegah siapa pun menaruh buku di rak yang salah.

Tabel, baris, dan kolom

Sebuah tabel menampung satu jenis hal. Ini baris-baris pertama tabel customers di toko latihan kita, Toko Kita, toko online yang menjual kopi, peralatan dapur, dan aksesori meja:

customer_idnameemailcitysignup_datesegment
1Ayu Lestari[email protected]Jakarta2023-01-14Consumer
2Budi Santoso[email protected]Bandung2023-02-03Business
3Citra Dewi[email protected]Surabaya2023-03-22Consumer
4Dimas PratamaNULLJakarta2023-04-09Consumer

Key: cara tabel saling menunjuk

Lihat kolom pertama, customer_id. Setiap pelanggan punya nomor yang berbeda, dan nomor itu tidak pernah berubah. Itulah primary key: kolom yang nilainya mengidentifikasi setiap baris secara unik. Nama bisa berulang (dua pelanggan bernama Ayu sangat mungkin), tapi primary key tidak pernah.

Sekarang lihat tabel orders:

order_idcustomer_idorder_datestatuschannel
1112024-01-03completedapp
232024-01-09completedweb
352024-01-17completedapp
432024-01-18completedapp

Pesanan tidak mengulang nama, email, dan kota pelanggan. Ia hanya menyimpan customer_id. Pesanan 2 dan pesanan 4 sama-sama milik pelanggan 3, Citra Dewi. Kolom yang berisi primary key tabel lain disebut foreign key, dan itulah "relasional" dalam database relasional.

Ide utama

Simpan setiap fakta sekali saja, di tabel tempatnya, dan pakai key untuk menghubungkan tabel. Kalau Citra mengganti emailnya, kamu memperbarui satu baris di customers, dan setiap pesanan tetap menunjuk ke orang yang benar.

Ini seluruh database Toko Kita. Kamu akan memakainya sepanjang track ini:

TabelSatu barisnya adalah…Kolom key
customersseorang pelanggancustomer_id (primary key)
productsproduk yang kita jualproduct_id (primary key)
orderssatu checkout oleh seorang pelangganorder_id (primary key), customer_id (foreign key)
order_itemssatu baris produk di dalam sebuah pesananorder_id + product_id bersama-sama, keduanya foreign key
employeesseorang stafemployee_id (primary key), manager_id (menunjuk ke karyawan lain)

Kenapa ada tabel order_items sama sekali? Karena satu pesanan bisa berisi beberapa produk, dan satu produk muncul di banyak pesanan. Alih-alih menjejalkan "Mug, Coffee, Pen" ke dalam satu sel, setiap produk dalam sebuah pesanan mendapat barisnya sendiri di order_items. Desain itulah yang nanti memungkinkanmu mengajukan pertanyaan seperti "berapa banyak mug yang kita jual di bulan Maret?" dalam satu baris.

Query pertamamu

SQL terbaca hampir seperti bahasa Inggris. Untuk melihat setiap kolom dari setiap baris di sebuah tabel, kamu menulis:

SELECT * FROM products;

Tekan Coba di atas untuk menjalankannya. Kamu akan melihat 15 produk yang dijual toko itu.

 product_id | name                 | category    | price  | cost   | stock
------------+----------------------+-------------+--------+--------+-------
          1 | French Press 600ml   | Kitchen     | 185000 | 110000 |    24
          2 | Pour-over Kettle     | Kitchen     | 320000 | 210000 |    12
          3 | Arabica Gayo 250g    | Coffee      |  95000 |  52000 |    80
...
(15 rows)

Keyword SQL seperti SELECT dan FROM tidak membedakan huruf besar-kecil, jadi select * from products juga bisa. Konvensinya adalah menulis keyword dengan huruf kapital dan nama tabel atau kolom dengan huruf kecil, supaya kamu bisa melihat struktur sebuah query sekilas.

Tips

Setiap soal SQL di situs ini punya tab Tables di bawah editor. Tab itu menampilkan tabel-tabel yang sedang kamu kerjakan, kolom-kolomnya, dan baris-baris pertamanya. Cek sebelum menulis query, sama seperti kamu melirik spreadsheet sebelum menulis formula.

Mengapa ini penting untuk kode bersih

Kebiasaan yang baru saja kamu pelajari, simpan setiap fakta sekali dan hubungkan dengan key, disebut normalisasi, dan itulah fondasi desain data yang baik. Database yang berantakan mengulang data di mana-mana, dan data yang berulang pada akhirnya saling bertentangan. Database yang bersih itu membosankan dan bisa diprediksi, dan itulah persis yang kamu inginkan saat sebuah laporan dikirim ke manajermu.

Rangkuman

Latihan modul ini

Soal-soal untuk pelajaran ini berjalan di browser-mu dan langsung mengecek jawabanmu.

Berikutnya: SELECT dan FROM →