Bentuk Normal Pertama

Pengantar Pemodelan Data di Snowflake

Nuno Rocha

Director of Engineering

Proses normalisasi data

  • Normalisasi data: Proses multi-langkah untuk menata data agar meminimalkan duplikasi dan ketergantungan

Langkah memudar setelah UNF

Pengantar Pemodelan Data di Snowflake

Proses normalisasi data (1)

  • Normalisasi data: Proses multi-langkah untuk menata data agar meminimalkan duplikasi dan ketergantungan

Langkah dari UNF ke 1NF

Pengantar Pemodelan Data di Snowflake

Proses normalisasi data (2)

  • Normalisasi data: Proses multi-langkah untuk menata data agar meminimalkan duplikasi dan ketergantungan

Langkah dari UNF ke 3NF

Pengantar Pemodelan Data di Snowflake

Proses normalisasi data (3)

  • Normalisasi data: Proses multi-langkah untuk menata data agar meminimalkan duplikasi dan ketergantungan

Langkah dari UNF ke 3NF

Pengantar Pemodelan Data di Snowflake

Bentuk normal pertama

  • Bentuk normal pertama (1NF): Memastikan tiap kolom pada entitas berisi nilai atomik unik

Tabel allproducts dengan category disorot

Pengantar Pemodelan Data di Snowflake

Bentuk normal pertama (1)

  • Data kategori UNF: Kategori L tidak terisolasi sehingga nilainya sulit diperbarui

Daftar semua produk yang berisi L

Pengantar Pemodelan Data di Snowflake

Bentuk normal pertama (2)

  • Langkah validasi: Kueri nilai unik untuk menilai kepatuhan ke 1NF.
SELECT DISTINCT category 
FROM allproducts;

Daftar kategori

Pengantar Pemodelan Data di Snowflake

Fungsi Snowflake untuk 1NF

  • TRIM
  • LATERAL & FLATTEN
  • SPLIT
Pengantar Pemodelan Data di Snowflake

Fungsi Snowflake untuk 1NF

  • TRIM: Menghapus spasi kosong di awal dan akhir nilai
SELECT TRIM(category)
FROM allproducts;

Fungsi TRIM pada category

Pengantar Pemodelan Data di Snowflake

Fungsi Snowflake untuk 1NF

  • TRIM: Menghapus spasi kosong di awal dan akhir nilai.
  • LATERAL & FLATTEN: Memperlakukan daftar nilai seperti tabel dengan item individual.
  • SPLIT: Memisahkan nilai berdasarkan pemisah.
SELECT TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;

Fungsi LATERAL, FLATTEN, dan SPLIT pada category

Pengantar Pemodelan Data di Snowflake

Menerapkan 1NF

  • Langkah 1: Buat entitas baru untuk memindahkan nilai atribut UNF
CREATE OR REPLACE TABLE categories (
    category_id NUMBER(10,0) PRIMARY KEY,
    category VARCHAR(255)
);
Pengantar Pemodelan Data di Snowflake

Menerapkan 1NF

  • Langkah 2.1: Isi entitas baru dengan data dari entitas yang awalnya tidak ternormalisasi
  • INSERT INTO: Perintah SQL untuk memasukkan baris baru ke tabel.
INSERT INTO categories (category_id, category)
___;
Pengantar Pemodelan Data di Snowflake

Menerapkan 1NF

  • Langkah 2.2: Pilih data dari allproducts, entitas awal yang tidak ternormalisasi
INSERT INTO categories (category_id, category)
SELECT 
    ___,
    ___
FROM allproducts;
Pengantar Pemodelan Data di Snowflake

Menerapkan 1NF

  • Langkah 2.3: Gunakan fungsi untuk memisahkan nilai dalam atribut tertentu
INSERT INTO categories (category_id, category)
SELECT 
    ___, 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;
Pengantar Pemodelan Data di Snowflake

Menerapkan 1NF

  • Langkah 2.4: Pilih nomor baris untuk menentukan pengenal unik
INSERT INTO categories (category_id, category)
SELECT 
    ROW_NUMBER() OVER (ORDER BY TRIM(f.value)), 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;
Pengantar Pemodelan Data di Snowflake

Menerapkan 1NF

  • Langkah 2.4: Agregasikan data untuk menghasilkan nilai kategori unik
INSERT INTO categories (category_id, category)
SELECT 
    ROW_NUMBER() OVER (ORDER BY TRIM(f.value)), 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f
GROUP BY TRIM(f.value);
Pengantar Pemodelan Data di Snowflake

Menuju normalisasi data

Data semua produk, dari UNF ke 1NF

Pengantar Pemodelan Data di Snowflake

Ringkasan istilah dan fungsi

  • Normalisasi data: Proses menata data untuk meminimalkan duplikasi dan ketergantungan
  • Bentuk normal: Panduan untuk menerapkan normalisasi data
  • Bentuk normal pertama (1NF): Memastikan tiap kolom berisi nilai atomik unik
  • INSERT INTO: Perintah SQL untuk menambahkan baris baru
  • TRIM: Fungsi SQL untuk menghapus spasi di awal dan akhir nilai
  • LATERAL FLATTEN(INPUT => SPLIT()): Fungsi Snowflake untuk membagi nilai menjadi baris
  • ROW_NUMBER() OVER (ORDER BY): Fungsi SQL untuk menghasilkan nomor berurutan
  • GROUP BY: Klausa SQL untuk mengelompokkan data dengan nilai yang sama
Pengantar Pemodelan Data di Snowflake

Ringkasan fungsi

-- Isi entitas dengan data dari hasil kueri
INSERT INTO table_name (column_name, other_columns)
SELECT 
    -- Hasilkan nilai unik menggunakan nomor baris
    ROW_NUMBER() OVER (ORDER BY TRIM(alias.value)),
    TRIM(alias.value)
FROM another_table,
-- Bagi nilai atribut teks berdasarkan pemisah 
LATERAL FLATTEN(INPUT => SPLIT(another_table.column_name, 'delimiter_value'))alias
-- Agregasikan data untuk memastikan nilai unik
GROUP BY TRIM(alias.value);
Pengantar Pemodelan Data di Snowflake

Ayo berlatih!

Pengantar Pemodelan Data di Snowflake

Preparing Video For Download...