Normalization की सीमा से आगे
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
);
1NF को संतुष्ट करने के लिए इस टेबल का नया डिज़ाइन सुझाया गया है. संशोधित टेबल परिभाषा में approval_date को approval_month, approval_day, और approval_year से बदला गया है:
CREATE TABLE loan (
...
approval_month SMALLINT,
approval_day SMALLINT,
approval_year SMALLINT,
...
);
यह अभ्यास दिखाता है कि जरूरत से ज़्यादा normalization कैसे टेबल में अवैध डेटा के insertion की गुंजाइश छोड़ सकता है.
यह अभ्यास पाठ्यक्रम का हिस्सा है
PostgreSQL डेटाबेस बनाना
अभ्यास निर्देश
- उस
INSERT INTOस्टेटमेंट को हटा दें, जो चलने पर टेबल में अवैध डेटा insert कर देगा.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
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);