Modelado logico relacional de bases de datos
Dado el ejercicio anterior normalizado en 1FN, vamos a continuar con la normalización hasta la 2FN.
Tabla normalizada en 1FN del ejercicio anterior:
Resultado de la normalización en 1FN:
| ID_Compra | Cliente | Teléfono | Producto | Precio | Cantidad | Fecha_Compra |
|---|---|---|---|---|---|---|
| 1 | Ana Pérez | 777-777-777 | Manzanas | 1.5 | 2 | 2024-11-20 |
| 1 | Ana Pérez | 777-777-777 | Naranjas | 2.0 | 3 | 2024-11-20 |
| 2 | Pedro López | 888-888-888 | Plátanos | 1.0 | 4 | 2024-11-21 |
| 2 | Pedro López | 888-888-888 | Peras | 1.2 | 2 | 2024-11-21 |
| 2 | Pedro López | 888-888-888 | Melón | 3.5 | 1 | 2024-11-21 |
| 3 | Marta Sánchez | 999-999-999 | Uvas | 2.5 | 1 | 2024-11-22 |
Paso 1: Identificar dependencias funcionales
-
Claves candidatas:
(ID_Compra, Producto)identifica unívocamente cada fila.
-
Dependencias funcionales:
(ID_Compra, Producto)→Cantidad.ID_Compra→Cliente,Teléfono,Fecha_Compra.Producto→Precio.
Paso 2: Detectar problemas de la 2FN
Para cumplir la 2FN, eliminamos dependencias parciales, es decir, cuando un atributo no clave depende solo de parte de una clave compuesta.
Problemas:
Cliente,TelefonoyFecha_Compradependen solo deID_Compra, no de(ID_Compra, Producto).Preciodepende solo deProducto, no de(ID_Compra, Producto).
Paso 3: Dividir en tablas para cumplir la 2FN
-
Separar datos de compras generales:
- Crear una tabla independiente para las compras con los datos que dependen únicamente de
ID_Compra.
- Crear una tabla independiente para las compras con los datos que dependen únicamente de
-
Separar datos de productos:
- Crear una tabla para los productos con los datos que dependen únicamente de
Producto.
- Crear una tabla para los productos con los datos que dependen únicamente de
-
Mantener la relación entre compras y productos:
- Crear una tabla intermedia que relacione compras y productos con sus cantidades.
Tablas resultantes (Cumplen 2FN):
Tabla Compras
| ID_Compra | Cliente | Teléfono | Fecha_Compra |
|---|---|---|---|
| 1 | Ana Pérez | 777-777-777 | 2024-11-20 |
| 2 | Pedro López | 888-888-888 | 2024-11-21 |
| 3 | Marta Sánchez | 999-999-999 | 2024-11-22 |
Tabla Productos
| Producto | Precio |
|---|---|
| Manzanas | 1.5 |
| Naranjas | 2.0 |
| Plátanos | 1.0 |
| Peras | 1.2 |
| Melón | 3.5 |
| Uvas | 2.5 |
Tabla Detalle_Compra
| ID_Compra | Producto | Cantidad |
|---|---|---|
| 1 | Manzanas | 2 |
| 1 | Naranjas | 3 |
| 2 | Plátanos | 4 |
| 2 | Peras | 2 |
| 2 | Melón | 1 |
| 3 | Uvas | 1 |
Explicación:
-
Tabla Compras:
- Contiene datos relacionados exclusivamente con la compra (
ClienteyFecha_Compra) que dependen solo deID_Compra.
- Contiene datos relacionados exclusivamente con la compra (
-
Tabla Productos:
- Contiene datos relacionados exclusivamente con los productos (
Precio) que dependen solo deProducto.
- Contiene datos relacionados exclusivamente con los productos (
-
Tabla Detalle_Compra:
- Relaciona las compras con los productos y sus cantidades.
Paso 4: Esquema relacional final
-
Relaciones:
Tabla Detalle_Compra.ID_Compra→ FK deTabla Compras.ID_Compra.Tabla Detalle_Compra.Producto→ FK deTabla Productos.Producto.
-
Claves primarias:
Tabla Compras:ID_Compra.Tabla Productos:Producto.Tabla Detalle_Compra:(ID_Compra, Producto).
Ventajas de la 2FN:
-
Reducción de redundancia:
Preciono se repite en cada compra, solo se almacena una vez en la tabla Productos.- Datos del cliente y fecha no se repiten por cada producto comprado.
-
Facilidad de actualización:
- Cambiar el precio de un producto o la fecha de una compra requiere actualizar solo una tabla.
-
Consistencia:
- La relación entre compras y productos es clara y libre de inconsistencias.
Planteamiento del problema
La siguiente tabla almacena información sobre cursos y estudiantes. No cumple con la Segunda Forma Normal (2FN) porque tiene dependencias parciales en una clave compuesta.
Curso_ID Curso_Nombre Estudiante_ID Nombre_Estudiante Calificación 1 Matemáticas 101 Juan 90 1 Matemáticas 102 María 85 2 Historia 101 Juan 88 2 Historia 103 Luis 75 Loading...
Problemas en el diseño
- La clave primaria es compuesta: (
Curso_ID,Estudiante_ID). Curso_Nombredepende solo deCurso_ID(dependencia parcial).Nombre_Estudiantedepende solo deEstudiante_ID(dependencia parcial).
Esto viola 2FN, ya que no todos los atributos no clave dependen completamente de la clave primaria compuesta.
Instrucciones
- Analiza las dependencias parciales en la tabla original.
- Descompón la tabla en dos o más tablas que cumplan con los requisitos de 2FN.
- Usa claves primarias y foráneas para relacionar las tablas.
- Representa las tablas resultantes con un diagrama relacional.
Loading...- La clave primaria es compuesta: (