ComenzarEmpieza gratis

Demasiada normalización

Recuerda la definición de la tabla 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
);

Se ha sugerido un nuevo diseño para esta tabla para cumplir con 1NF. La definición revisada reemplaza approval_date por approval_month, approval_day y approval_year:

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

Este ejercicio demuestra cómo un exceso de normalización puede permitir la inserción de datos no válidos.

Este ejercicio forma parte del curso

Creación de bases de datos en PostgreSQL

Ver curso

Instrucciones del ejercicio

  • Elimina la sentencia INSERT INTO que, si se ejecutara, haría que se insertaran datos no válidos en la tabla.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

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);
Editar y ejecutar código