Bentuk normal

Perancangan Basis Data

Lis Sulmont

Curriculum Manager

Normalisasi

Identifikasi grup data yang berulang dan buat tabel baru untuknya

Definisi yang lebih formal:

Tujuan normalisasi adalah:

  • Mencirikan tingkat redundansi dalam skema relasional
  • Menyediakan mekanisme untuk mentransformasi skema guna menghapus redundansi
1 Database Design, Edisi ke-2 oleh Adrienne Watt
Perancangan Basis Data

Bentuk normal (NF)

Diurutkan dari paling tidak hingga paling ternormalisasi:

  • First normal form (1NF)
  • Second normal form (2NF)
  • Third normal form (3NF)
  • Elementary key normal form (EKNF)
  • Boyce-Codd normal form (BCNF)

$$

  • Fourth normal form (4NF)
  • Essential tuple normal form (ETNF)
  • Fifth normal form (5NF)
  • Domain-key Normal Form (DKNF)
  • Sixth normal form (6NF)
1 https://en.wikipedia.org/wiki/Database_normalization
Perancangan Basis Data

Aturan 1NF

  • Setiap rekaman harus unik - tidak boleh ada baris duplikat
  • Setiap sel harus berisi satu nilai

Data awal

| Student_id | Student_Email   | Courses_Completed                                        | 
|------------|-----------------|----------------------------------------------------------|
| 235        | [email protected]   | Introduction to Python, Intermediate Python              |
| 455        | [email protected] | Cleaning Data in R                                       | 
| 767        | [email protected] | Machine Learning Toolbox, Deep Learning in Python        |
Perancangan Basis Data

Dalam bentuk 1NF

| Student_id | Student_Email   | 
|------------|-----------------|
| 235        | [email protected]   | 
| 455        | [email protected] | 
| 767        | [email protected] | 
| Student_id | Completed                |
|------------|--------------------------|
| 235        | Introduction to Python   | 
| 235        | Intermediate Python      | 
| 455        | Cleaning Data in R       | 
| 767        | Machine Learning Toolbox | 
| 767        | Deep Learning in Python  | 
Perancangan Basis Data

2NF

  • Harus memenuhi 1NF DAN
    • Jika kunci utama satu kolom
      • maka otomatis memenuhi 2NF
    • Jika kunci utama komposit
      • maka setiap kolom non-kunci harus bergantung pada semua kunci

Data awal

| Student_id (PK) | Course_id (PK) | Instructor_id | Instructor    | Progress |
|-----------------|----------------|---------------|---------------|----------|
| 235             | 2001           | 560           | Nick Carchedi | .55      |
| 455             | 2345           | 658           | Ginger Grant  | .10      |
| 767             | 6584           | 999           | Chester Ismay | 1.00     |
Perancangan Basis Data

Dalam bentuk 2NF

| Student_id (PK) | Course_id (PK) | Percent_Completed |
|-----------------|----------------|-------------------|
| 235             | 2001           | .55               |
| 455             | 2345           | .10               |
| 767             | 6584           | 1.00              |
| Course_id (PK) | Instructor_id | Instructor    |
|----------------|---------------|---------------|
| 2001           | 560           | Nick Carchedi |
| 2345           | 658           | Ginger Grant  |
| 6584           | 999           | Chester Ismay |
Perancangan Basis Data

3NF

  • Memenuhi 2NF
  • Tidak ada ketergantungan transitif: kolom non-kunci tidak boleh bergantung pada kolom non-kunci lain

Data awal

| Course_id (PK) | Instructor_id | Instructor    | Tech   |
|----------------|---------------|---------------|--------|
| 2001           | 560           | Nick Carchedi | Python |
| 2345           | 658           | Ginger Grant  | SQL    |
| 6584           | 999           | Chester Ismay | R      |
Perancangan Basis Data

Dalam 3NF

| Course_id (PK) | Instructor    | Tech   |
|----------------|---------------|--------|
| 2001           | Nick Carchedi | Python |
| 2345           | Ginger Grant  | SQL    |
| 6584           | Chester Ismay | R      |
| Instructor_id | Instructor    | 
|---------------|---------------|
| 560           | Nick Carchedi | 
| 658           | Ginger Grant  | 
| 999           | Chester Ismay |
Perancangan Basis Data

Anomali data

Apa risikonya jika kita tidak cukup menormalisasi?

1. Anomali pembaruan

2. Anomali penyisipan

3. Anomali penghapusan

Perancangan Basis Data

Anomali pembaruan

Ketidakkonsistenan data akibat redundansi saat memperbarui

| Student_ID | Student_Email   | Enrolled_in             | Taught_by           |
|------------|-----------------|-------------------------|---------------------|
| 230        | [email protected]  | Cleaning Data in R      | Maggie Matsui       |
| 367        | [email protected] | Data Visualization in R | Ronald Pearson      |
| 520        | [email protected]   | Introduction to Python  | Hugo Bowne-Anderson |
| 520        | [email protected]   | Arima Models in R       | David Stoffer       |

Untuk memperbarui email mahasiswa 520:

  • Harus memperbarui lebih dari satu rekaman, jika tidak akan tidak konsisten
  • Pengguna yang memperbarui harus mengetahui adanya redundansi
Perancangan Basis Data

Anomali penyisipan

Tidak dapat menambahkan rekaman karena atribut hilang

| Student_ID | Student_Email   | Enrolled_in             | Taught_by           |
|------------|-----------------|-------------------------|---------------------|
| 230        | [email protected]  | Cleaning Data in R      | Maggie Matsui       |
| 367        | [email protected] | Data Visualization in R | Ronald Pearson      |
| 520        | [email protected]   | Introduction to Python  | Hugo Bowne-Anderson |
| 520        | [email protected]   | Arima Models in R       | David Stoffer       |

Tidak dapat menambahkan mahasiswa yang sudah mendaftar tetapi belum mengambil kursus apa pun

Perancangan Basis Data

Anomali penghapusan

Penghapusan rekaman menyebabkan hilangnya data yang tidak disengaja

| Student_ID | Student_Email   | Enrolled_in             | Taught_by           |
|------------|-----------------|-------------------------|---------------------|
| 230        | [email protected]  | Cleaning Data in R      | Maggie Matsui       |
| 367        | [email protected] | Data Visualization in R | Ronald Pearson      |
| 520        | [email protected]   | Introduction to Python  | Hugo Bowne-Anderson |
| 520        | [email protected]   | Arima Models in R       | David Stoffer       |

Jika kita menghapus mahasiswa 230, apa yang terjadi pada data Cleaning Data in R?

Perancangan Basis Data

Anomali data

Apa risikonya jika kita tidak cukup menormalisasi?

1. Anomali pembaruan

2. Anomali penyisipan

3. Anomali penghapusan

Semakin ternormalisasi basis data, semakin kecil kemungkinannya terjadi anomali data

Jangan lupa sisi negatif normalisasi dari video sebelumnya

Perancangan Basis Data

Ayo berlatih!

Perancangan Basis Data

Preparing Video For Download...