2NF dan 3NF

Pengantar Pemodelan Data di Snowflake

Nuno Rocha

Director of Engineering

Pengantar 2NF

  • Bentuk normal kedua (2NF): Menghilangkan ketergantungan parsial; setiap atribut non-kunci harus bergantung fungsional pada kunci utama

Langkah dari UNF ke 3NF

Pengantar Pemodelan Data di Snowflake

Pengantar 2NF (1)

  • Bentuk normal kedua (2NF): Menghilangkan ketergantungan parsial; setiap atribut non-kunci harus bergantung fungsional pada kunci utama
  • Ketergantungan Fungsional: Kunci utama secara eksplisit mengidentifikasi suatu atribut

Kartu ID karyawan menunjukkan ketergantungan fungsional

Pengantar Pemodelan Data di Snowflake

Pengantar 2NF (2)

  • Bentuk normal kedua (2NF): Menghilangkan ketergantungan parsial; setiap atribut non-kunci harus bergantung fungsional pada kunci utama.
  • Ketergantungan Fungsional: Kunci utama secara eksplisit mengidentifikasi suatu atribut.
  • Ketergantungan Parsial: Hanya sebagian kunci utama yang diperlukan untuk mengidentifikasi suatu atribut.

Kartu ID karyawan menunjukkan ketergantungan parsial

Pengantar Pemodelan Data di Snowflake

Bentuk normal kedua

Entitas Allproducts, keluhan produk terkait 2NF

Pengantar Pemodelan Data di Snowflake

Bentuk normal kedua

Entitas Allproducts, isu detail dengan 2NF

Pengantar Pemodelan Data di Snowflake

Bentuk normal kedua

Entitas Allproducts, isu detail dengan 2NF pada manufacturer

Pengantar Pemodelan Data di Snowflake

Transisi ke 2NF

  • Langkah 1: Buat entitas baru untuk menempatkan atribut yang memiliki ketergantungan parsial.
CREATE OR REPLACE TABLE manufacturers (
    manufacturer_id NUMBER(10,0) PRIMARY KEY,
    manufacturer VARCHAR(255),
    location VARCHAR(255)
);
CREATE OR REPLACE TABLE details (
    detail_id NUMBER(10,0) PRIMARY KEY,
    detail VARCHAR(255)
);
Pengantar Pemodelan Data di Snowflake

Transisi ke 2NF

  • Langkah 2: Isi entitas dengan data dari entitas awal yang belum ternormalisasi.
INSERT INTO manufacturers (manufacturer_id, manufacturer, location)
SELECT DISTINCT manufacturer_id, 
    manufacturer_name,
    location
FROM allproducts;
INSERT INTO details (detail_id, detail)
SELECT DISTINCT detail_id, 
    detail_description
FROM allproducts;
Pengantar Pemodelan Data di Snowflake

Transisi ke 2NF

Data All products, dari UNF ke 2NF

Pengantar Pemodelan Data di Snowflake

Pengantar 3NF

  • Bentuk normal ketiga (3NF): Menghilangkan ketergantungan transitif; atribut non-kunci harus langsung bergantung pada kunci utama.

Langkah dari UNF ke 3NF

Pengantar Pemodelan Data di Snowflake

Pengantar 3NF

  • Bentuk normal ketiga (3NF): Menghilangkan ketergantungan transitif; atribut non-kunci harus langsung bergantung pada kunci utama.
  • Ketergantungan Transitif: Suatu atribut bergantung pada atribut lain yang bukan kunci utama.

Kartu ID karyawan menunjukkan ketergantungan transitif

Pengantar Pemodelan Data di Snowflake

Bentuk normal ketiga

Lokasi tidak sesuai 3NF

Pengantar Pemodelan Data di Snowflake

Transisi ke 3NF

  • Langkah 1: Buat entitas baru untuk menempatkan atribut yang memiliki ketergantungan transitif.
CREATE TABLE locations (
    location_id NUMBER(10,0) PRIMARY KEY,
    location VARCHAR(255)
);
Pengantar Pemodelan Data di Snowflake

Transisi ke 3NF

  • Langkah 2: Isi entitas dengan data dari entitas awal yang belum ternormalisasi.
INSERT INTO locations (location_id, location)
SELECT ROW_NUMBER() OVER (ORDER BY location), 
    location
FROM manufacturers
GROUP BY location;
ALTER TABLE manufacturers
DROP COLUMN location;
Pengantar Pemodelan Data di Snowflake

Transisi ke 3NF

  • Langkah 3: Buat entitas baru untuk mengekstrak atribut tersisa dari entitas yang belum ternormalisasi.
CREATE OR REPLACE TABLE products (
    product_id NUMBER(10,0) PRIMARY KEY,
    name VARCHAR(255)
);
  • Langkah 4: Isi entitas dengan nilai unik yang tersisa di entitas yang belum ternormalisasi.
INSERT INTO products (product_id, name)
SELECT DISTINCT product_id,
    product_name
FROM allproducts;
Pengantar Pemodelan Data di Snowflake

Finalisasi model

Langkah dari UNF ke 3NF

Pengantar Pemodelan Data di Snowflake

Finalisasi model

Data All products, dari UNF ke 1NF

Pengantar Pemodelan Data di Snowflake

Finalisasi model

Data All products, dari UNF ke 2NF

Pengantar Pemodelan Data di Snowflake

Finalisasi model

Data All products, dari UNF ke 3NF

Pengantar Pemodelan Data di Snowflake

Finalisasi model

Data All products, dari UNF ke 3NF dengan relasi

Pengantar Pemodelan Data di Snowflake

Ringkasan istilah dan fungsi

  • Bentuk normal kedua (2NF): Menghilangkan ketergantungan parsial; setiap atribut non-kunci harus bergantung fungsional pada kunci utama.
  • Bentuk normal ketiga (3NF): Menghilangkan ketergantungan transitif; atribut non-kunci harus langsung bergantung pada kunci utama.
  • Ketergantungan Fungsional: Kunci utama secara eksplisit mengidentifikasi suatu atribut.
  • Ketergantungan Parsial: Hanya sebagian kunci utama yang diperlukan untuk mengidentifikasi suatu atribut.
  • Ketergantungan Transitif: Suatu atribut bergantung pada atribut lain yang bukan kunci utama.
  • ROW_NUMBER() OVER (ORDER BY): Fungsi SQL untuk menghasilkan nomor berurutan.
  • DISTINCT: Klausa SQL untuk mengembalikan nilai unik dari suatu atribut.
  • DROP: Perintah SQL, digunakan dengan ALTER TABLE, untuk menghapus elemen dari entitas.
Pengantar Pemodelan Data di Snowflake

Ringkasan fungsi

INSERT INTO table_name (column_name, other_columns)
SELECT DISTINCT column_name,
    other_columns
FROM another_table;
INSERT INTO table_name (column_name)
SELECT ROW_NUMBER() OVER (ORDER BY column_name)
FROM another_table
GROUP BY TRIM(column_name);
ALTER TABLE table_name
DROP COLUMN column_name;
Pengantar Pemodelan Data di Snowflake

Ayo berlatih!

Pengantar Pemodelan Data di Snowflake

Preparing Video For Download...