Normalización de bases de datos: 2FN y 3FN con ejemplos SQL

InformáticaActualizado el 5,36 KB

Resumen

El documento explica la normalización de bases de datos relacionales, centrándose en la Segunda Forma Normal (2FN) y la Tercera Forma Normal (3FN). Incluye ejemplos de tablas en SQL que muestran cómo eliminar dependencias y redundancia. También presenta las principales sentencias DDL (CREATE, ALTER, DROP) y DML (INSERT, UPDATE, DELETE).

Puntos clave

  • La normalización reduce la redundancia de datos y mejora la integridad de la información.
  • Una tabla está en 2FN si cumple la 1FN y todos sus atributos no clave dependen completamente de la clave primaria.
  • Una tabla está en 3FN si cumple la 2FN y ningún atributo no clave depende de otro atributo no clave.
  • En 1FN cada atributo contiene un solo valor y no hay repetición de grupos de columnas.
  • Las sentencias DDL (CREATE TABLE, ALTER TABLE, DROP TABLE) definen la estructura de la base de datos.
  • Las sentencias DML (INSERT INTO, UPDATE, DELETE) manipulan los datos almacenados.

Ponte a prueba

Normalización de Bases de Datos: 2FN y 3FN

La normalización es un proceso fundamental en el diseño de bases de datos relacionales. Su objetivo es reducir la redundancia de datos y mejorar la integridad de la información. Aquí exploraremos la Segunda Forma Normal (2FN) y la Tercera Forma Normal (3FN), junto con ejemplos prácticos.

Segunda Forma Normal (2FN)

Una tabla está en 2FN si cumple con la Primera Forma Normal (1FN) y todos sus atributos no clave dependen completamente de la clave primaria.

Tercera Forma Normal (3FN)

Una tabla está en 3FN si cumple con la 2FN y ningún atributo no clave depende de otro atributo no clave.

Ejemplo para la Segunda Forma Normal (2FN)

  • Tabla en 1FN (Primera Forma Normal): En la Primera Forma Normal (1FN), cada atributo contiene un solo valor y no hay repeticiones de grupos de columnas.

Ejemplo de tabla en 1FN:


CREATE TABLE Estudiantes_Cursos (
 estudiante_id INT,
 curso_id INT,
 nombre_estudiante VARCHAR(50),
 nombre_curso VARCHAR(50),
 creditos_curso INT,
 PRIMARY KEY (estudiante_id, curso_id)
);

  • Tabla en 2FN (Segunda Forma Normal): Para cumplir con la 2FN, todos los atributos no clave deben depender completamente de la clave primaria (en este caso, estudiante_id y curso_id).

Para normalizar a 2FN, separamos la tabla en dos:


CREATE TABLE Estudiantes_Cursos (
 estudiante_id INT,
 curso_id INT,
 PRIMARY KEY (estudiante_id, curso_id)
);


CREATE TABLE Cursos (
 curso_id INT PRIMARY KEY,
 nombre_curso VARCHAR(50),
 creditos_curso INT
);

  • En este ejemplo:
  1. La tabla Estudiantes_Cursos ahora solo contiene la información específica de la relación entre estudiantes y cursos (la clave primaria compuesta estudiante_id y curso_id).
  2. La información sobre los cursos (nombre_curso y creditos_curso) se mueve a la tabla Cursos. Esto elimina la dependencia de nombre_curso y creditos_curso respecto a estudiante_id, cumpliendo así con la 2FN.

Ejemplo para la Tercera Forma Normal (3FN)

  • Ejemplo para la Tercera Forma Normal (3FN): Para la 3FN, ningún atributo no clave debe depender de otro atributo no clave.

Tabla en 2FN (Estudiantes_Cursos y Cursos)


CREATE TABLE Estudiantes_Cursos (
 estudiante_id INT,
 curso_id INT,
 PRIMARY KEY (estudiante_id, curso_id)
);


CREATE TABLE Cursos (
 curso_id INT PRIMARY KEY,
 nombre_curso VARCHAR(50),
 creditos_curso INT,
 departamento_id INT,
 FOREIGN KEY (departamento_id) REFERENCES Departamentos(departamento_id)
);

Tabla de Departamentos


CREATE TABLE Departamentos (
 departamento_id INT PRIMARY KEY,
 nombre_departamento VARCHAR(50)
);

  • En este ejemplo:
  1. La tabla Cursos ahora incluye un departamento_id que hace referencia a la tabla Departamentos.
  2. La información sobre los departamentos (nombre_departamento) se mantiene en la tabla Departamentos, eliminando así la dependencia de nombre_departamento respecto a curso_id en la tabla Cursos.

Sentencias DDL (Data Definition Language)

Las sentencias DDL se utilizan para definir la estructura de la base de datos.

  • CREATE TABLE: Para crear una nueva tabla en la base de datos.

CREATE TABLE Empleados (
 empleado_id INT PRIMARY KEY,
 nombre VARCHAR(50),
 apellido VARCHAR(50),
 salario DECIMAL(10, 2)
);

  • ALTER TABLE: Para modificar la estructura de una tabla existente.

ALTER TABLE Empleados
ADD fecha_contratacion DATE;

    1. En este ejemplo, agrega una nueva columna fecha_contratacion a la tabla Empleados.
  • DROP TABLE: Para eliminar una tabla de la base de datos.

DROP TABLE Empleados;

Sentencias DML (Data Manipulation Language)

Las sentencias DML se utilizan para manipular los datos dentro de la base de datos.

  • INSERT INTO: Para insertar nuevos registros en una tabla.

INSERT INTO Empleados (empleado_id, nombre, apellido, salario)
VALUES (1, 'Juan', 'Perez', 3000.00);

    1. Esto inserta un nuevo empleado en la tabla Empleados.
  • UPDATE: Para actualizar registros existentes en una tabla.

UPDATE Empleados
SET salario = 3200.00
WHERE empleado_id = 1;

    1. Esto actualiza el salario del empleado con empleado_id igual a 1 en la tabla Empleados.
  • DELETE: Para eliminar registros de una tabla.

DELETE FROM Empleados
WHERE empleado_id = 1;

    1. Esto elimina el empleado con empleado_id igual a 1 de la tabla Empleados.

Descargar

PDF Word HTML

Preguntas frecuentes

¿Qué es la Segunda Forma Normal (2FN)?

Una tabla está en 2FN si cumple la Primera Forma Normal y todos sus atributos no clave dependen completamente de la clave primaria. Si un atributo depende solo de parte de una clave compuesta, debe separarse en otra tabla.

¿Qué es la Tercera Forma Normal (3FN)?

Una tabla está en 3FN si cumple la 2FN y ningún atributo no clave depende de otro atributo no clave. En el ejemplo, el nombre del departamento se traslada a su propia tabla.

¿Para qué sirven las sentencias DDL?

Las sentencias DDL (Data Definition Language) se usan para definir la estructura de la base de datos, por ejemplo creando, modificando o eliminando tablas.

Ponte a prueba

Tarjetas de repaso

Pulsa una tarjeta para ver la respuesta.

Test

1. ¿Qué objetivo principal tiene la normalización de bases de datos?
2. ¿Qué debe cumplir una tabla para estar en 2FN?
3. ¿Qué condición define la 3FN?
4. ¿Qué sentencia DDL se usa para agregar una columna a una tabla existente?
5. ¿Qué sentencia DML modifica registros existentes?

Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.