Normalización de bases de datos: 2FN y 3FN con ejemplos SQL
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.
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:
- La tabla
Estudiantes_Cursosahora solo contiene la información específica de la relación entre estudiantes y cursos (la clave primaria compuestaestudiante_idycurso_id). - La información sobre los cursos (
nombre_cursoycreditos_curso) se mueve a la tablaCursos. Esto elimina la dependencia denombre_cursoycreditos_cursorespecto aestudiante_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:
- La tabla
Cursosahora incluye undepartamento_idque hace referencia a la tablaDepartamentos. - La información sobre los departamentos (
nombre_departamento) se mantiene en la tablaDepartamentos, eliminando así la dependencia denombre_departamentorespecto acurso_iden la tablaCursos.
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;
- En este ejemplo, agrega una nueva columna
fecha_contrataciona la tablaEmpleados.
- En este ejemplo, agrega una nueva columna
- 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);
- Esto inserta un nuevo empleado en la tabla
Empleados.
- Esto inserta un nuevo empleado en la tabla
- UPDATE: Para actualizar registros existentes en una tabla.
UPDATE Empleados
SET salario = 3200.00
WHERE empleado_id = 1;
- Esto actualiza el salario del empleado con
empleado_idigual a 1 en la tablaEmpleados.
- Esto actualiza el salario del empleado con
- DELETE: Para eliminar registros de una tabla.
DELETE FROM Empleados
WHERE empleado_id = 1;
- Esto elimina el empleado con
empleado_idigual a 1 de la tablaEmpleados.
- Esto elimina el empleado con
Descargar
PDF Word HTMLPreguntas 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
Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.