Mulai sekarangMulai gratis

Normalisasi berlebihan

Ingat kembali definisi tabel loan.

CREATE TABLE loan (
    borrower_id INTEGER REFERENCES borrower(id),
    bank_id INTEGER REFERENCES bank(id),
    approval_date DATE NOT NULL DEFAULT CURRENT_DATE,
    gross_approval DECIMAL(9, 2) NOT NULL,
    term_in_months SMALLINT NOT NULL,
    revolver_status BOOLEAN NOT NULL DEFAULT FALSE,
    initial_interest_rate DECIMAL(4, 2) NOT NULL
);

Desain baru untuk tabel ini telah diusulkan untuk memenuhi 1NF. Definisi tabel yang direvisi mengganti approval_date dengan approval_month, approval_day, dan approval_year:

CREATE TABLE loan (
    ...
    approval_month SMALLINT,
    approval_day SMALLINT,
    approval_year SMALLINT,
    ...
);

Latihan ini menunjukkan bagaimana normalisasi yang berlebihan dapat memungkinkan penyisipan data tidak valid.

Latihan ini merupakan bagian dari kursus

Membuat Database PostgreSQL

Lihat Kursus

Instruksi latihan

  • Hapus pernyataan INSERT INTO yang, jika dijalankan, akan menyebabkan data tidak valid dimasukkan ke dalam tabel.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

INSERT INTO loan (
  	borrower_id, bank_id, approval_month, approval_day,
  	approval_year, gross_approval, term_in_months,
  	revolver_status, initial_interest_rate
) VALUES (12, 14, 12, 1, 2013, 421115, 120, false, 4.42);

INSERT INTO loan (
  	borrower_id, bank_id, approval_month, approval_day,
  	approval_year, gross_approval, term_in_months,
  	revolver_status, initial_interest_rate
) VALUES (3, 201, 6, 42, 2017, 30015, 60, true, 3.25);

INSERT INTO loan (
  	borrower_id, bank_id, approval_month, approval_day,
  	approval_year, gross_approval, term_in_months,
  	revolver_status, initial_interest_rate
) VALUES (19, 5, 8, 19, 2018, 200000, 120, false, 6.3);
Edit dan Jalankan Kode