Database Tables: Struktur Tabel Database 📊

Halo SQL Explorers! 👋 Setelah belajar tentang konsep dasar database, sekarang kita bakal belajar cara bikin dan ngatur tabel database. Ini adalah fondasi penting buat nyimpen data dengan rapi!

Apa itu Tabel Database? 📊

Tabel database itu kayak spreadsheet Excel, tapi lebih canggih:

  • Punya struktur yang jelas (kolom dan tipe data)
  • Bisa terhubung ke tabel lain
  • Ada aturan untuk jaga data tetap valid

Tipe Data yang Sering Dipake 📝

  1. Untuk Angka

    • INT: Angka bulat (1, 2, 3)
    • DECIMAL: Angka dengan koma (10.5, 25.75)
    • FLOAT: Angka pecahan (3.14159)
  2. Untuk Text

    • VARCHAR: Text dengan panjang bervariasi
    • TEXT: Text yang panjang banget
    • CHAR: Text dengan panjang tetap
  3. Untuk Tanggal & Waktu

    • DATE: Tanggal (2024-12-21)
    • TIME: Waktu (14:30:00)
    • TIMESTAMP: Tanggal + Waktu

Struktur Database yang Akan Kita Pake 📊

-- Tabel customers: Nyimpen data pelanggan
CREATE TABLE customers (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nama VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE,
    kota VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabel products: Nyimpen data produk
CREATE TABLE products (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nama VARCHAR(100) NOT NULL,
    harga DECIMAL(10,2) CHECK (harga > 0),
    stok INT DEFAULT 0,
    category_id INT,
    FOREIGN KEY (category_id) REFERENCES categories(id)
);

-- Tabel categories: Nyimpen kategori produk
CREATE TABLE categories (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nama VARCHAR(50) NOT NULL
);

-- Tabel orders: Nyimpen data pesanan
CREATE TABLE orders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    customer_id INT NOT NULL,
    tanggal DATE NOT NULL,
    status VARCHAR(20) DEFAULT 'pending',
    FOREIGN KEY (customer_id) REFERENCES customers(id)
);

Data Dummy untuk Tutorial 📝

Sekarang kita bakal isi tabel-tabel di atas dengan data dummy yang akan kita pake di semua tutorial:

-- 1. Isi data kategori
INSERT INTO categories (nama) VALUES 
    ('Elektronik'),
    ('Fashion'),
    ('Makanan');

-- 2. Isi data produk
INSERT INTO products (nama, harga, stok, category_id) VALUES
    ('Laptop Gaming', 15000000, 5, 1),
    ('Smartphone', 5000000, 10, 1),
    ('Kemeja Casual', 200000, 20, 2),
    ('Celana Jeans', 350000, 15, 2),
    ('Snack Pack', 50000, 100, 3),
    ('Minuman Soda', 15000, 150, 3);

-- 3. Isi data customer
INSERT INTO customers (nama, email, kota) VALUES
    ('Budi', 'budi@email.com', 'Jakarta'),
    ('Ani', 'ani@email.com', 'Bandung'),
    ('Caca', 'caca@email.com', 'Surabaya'),
    ('Dodi', 'dodi@email.com', 'Jakarta');

-- 4. Isi data orders
INSERT INTO orders (customer_id, tanggal, status) VALUES
    (1, '2024-12-19', 'completed'),
    (1, '2024-12-20', 'pending'),
    (2, '2024-12-20', 'completed'),
    (3, '2024-12-20', 'pending');

Penjelasan Komponen Penting 🔍

  1. PRIMARY KEY

    • ID unik buat setiap baris data
    • Contoh: id di tabel customers
  2. FOREIGN KEY

    • Penghubung antar tabel
    • Contoh: category_id di tabel products
  3. Constraints (Aturan)

    • NOT NULL: Harus diisi
    • UNIQUE: Gak boleh sama
    • DEFAULT: Nilai default
    • CHECK: Syarat nilai yang valid

Contoh Data di Tabel 📝

-- Data di tabel categories
SELECT * FROM categories;

+----+------------+
| id | nama       |
+----+------------+
|  1 | Elektronik |
|  2 | Fashion    |
|  3 | Makanan    |
+----+------------+

-- Data di tabel products
SELECT * FROM products;

+----+---------------+----------+------+-------------+
| id | nama          | harga    | stok | category_id |
+----+---------------+----------+------+-------------+
|  1 | Laptop Gaming | 15000000 |    5 |           1 |
|  2 | Smartphone    |  5000000 |   10 |           1 |
|  3 | Kemeja Casual |   200000 |   20 |           2 |
|  4 | Celana Jeans  |   350000 |   15 |           2 |
|  5 | Snack Pack    |    50000 |  100 |           3 |
|  6 | Minuman Soda  |    15000 |  150 |           3 |
+----+---------------+----------+------+-------------+

Tips Bikin Struktur Tabel yang Baik 💡

  1. Kasih Nama yang Jelas

    • Pake bahasa Inggris
    • Nama yang menggambarkan isi
    • Konsisten dalam penamaan
  2. Pilih Tipe Data yang Tepat

    • Sesuaikan dengan kebutuhan
    • Jangan terlalu boros
    • Pertimbangkan performa
  3. Atur Relasi dengan Benar

    • Pake FOREIGN KEY
    • Jaga integritas data
    • Hindari redundansi

Materi Selanjutnya 📚

Di materi selanjutnya, kita bakal belajar:

  • Cara masukin data ke tabel
  • Cara ambil data dari tabel
  • Cara update dan hapus data
  • Perintah-perintah SQL dasar lainnya

Udah siap praktek SQL? Yuk lanjut! 🚀