☰ UF2213-Menú

UA3-Análisis detallado del modelo relacional

Introducción al Modelo Relacional

Desarrollado por E.F. Codd en 1970, revolucionó el manejo de datos al basarse en teoría matemática de conjuntos y álgebra relacional. Sus principios fundamentales son:

  • Datos organizados en tablas (relaciones)
  • Cada tabla contiene tuplas (filas) y atributos (columnas)
  • Relaciones establecidas mediante claves primarias y foráneas
┌──────────────┐       ┌──────────────┐
│   CLIENTES   │       │    PEDIDOS   │
├──────────────┤       ├──────────────┤
│ id (PK)      │───────│ cliente_id   │
│ nombre       │       │ fecha        │
│ telefono     │       │ total        │
└──────────────┘       └──────────────┘

Estructura Base del Modelo Relacional

Estructura Fundamental del Modelo Relacional

Estructura de los Datos

Componentes Básicos

  • Relación (Tabla): Estructura bidimensional
  • Tupla (Fila/Registro): Instancia de datos
  • Atributo (Columna/Campo): Característica específica
  • Dominio: Tipo de datos y valores permitidos
Entidades y Tablas
  • Representación de entidades como tablas
  • Atributos como columnas
  • Tuplas o registros como filas
  • Claves primarias como identificadores únicos
CREATE TABLE PRIMARY KEY
Relaciones
  • Claves foráneas para relaciones
  • Cardinalidad (1:1, 1:N, M:N)
  • Tablas puente para relaciones M:N
  • Restricciones de referencia
FOREIGN KEY JOIN
Esquema Relacional
  • Diccionario de datos
  • Tipos de datos para atributos
  • Diagrama relacional
  • Normalización (1FN, 2FN, 3FN, BCNF)
DDL Normalización

Claves Fundamentales

CLAVE PRIMARIA (PK): Atributo(s) que identifican unívocamente cada tupla
  Ej: id_cliente en tabla CLIENTES

CLAVE FORÁNEA (FK): Atributo que referencia una PK en otra tabla
  Ej: cliente_id en PEDIDOS que referencia id_cliente en CLIENTES
Componente Ejemplo Propósito
Tabla Clientes Almacenar datos de entidad cliente
Atributo nombre, email Características de la entidad
Clave Primaria id_cliente Identificador único
Clave Foránea cliente_id en Pedidos Relacionar tablas

Algebra Relacional

Operaciones del Modelo Relacional

Álgebra Relacional

Lenguaje formal para manipular relaciones mediante operadores:

Operadores Fundamentales

1. σcondición(R)       # Selección (WHERE)
2. πatributos(R)       # Proyección (SELECT columnas)
3. R ∪ S              # Unión (UNION)
4. R - S              # Diferencia (EXCEPT)
5. R × S              # Producto cartesiano
6. R ⋈condición S     # Join (JOIN ON)

Operaciones Relacionales

Operaciones Básicas

Operación Símbolo Ejemplo SQL
Selección σ SELECT * FROM clientes WHERE ciudad='Madrid'
Proyección π SELECT nombre, email FROM clientes
Join SELECT * FROM clientes JOIN pedidos ON clientes.id = pedidos.cliente_id
Operaciones Básicas
  • Selección (σ)
  • Proyección (π)
  • Unión (∪)
  • Diferencia (-)
  • Producto Cartesiano (×)
σcondición(R)
π atributos(R)
Operaciones Derivadas
  • Intersección (∩)
  • Join (⋈)
  • División (÷)
  • Renombramiento (ρ)
R ⋈θ S
R ∩ S = R - (R - S)
Operaciones SQL Equivalentes
  • SELECT (σ)
  • WHERE (condición)
  • JOIN (⋈)
  • GROUP BY (γ)
SELECT nombre, COUNT(*)
FROM clientes JOIN pedidos
ON clientes.id = pedidos.cliente_id
GROUP BY nombre;

Laboratorio: Álgebra Relacional

Ejercicio 1: Operaciones Básicas

Dadas las tablas:

  • Empleados(id, nombre, departamento_id, salario)
  • Departamentos(id, nombre, ubicación)

Expresar en álgebra relacional:

  1. Nombres de empleados con salario > 3000
  2. Departamentos sin empleados
  3. Empleados del departamento "Ventas"

Soluciones:

  1. πnombresalario>3000(Empleados))
  2. πid,nombre(Departamentos) - πdepartamento_id,nombre(Empleados ⋈ Departamentos))
  3. πEmpleados.*Departamentos.nombre='Ventas'(Empleados ⋈ Departamentos))

Reglas de Integridad Relacional

Reglas de Integridad Relacional

Integridad de Entidad

  • Clave primaria no puede ser NULL
  • Valores deben ser únicos
  • Identifica cada registro de forma única
CREATE TABLE productos (
  id INT PRIMARY KEY,
  nombre VARCHAR(100) NOT NULL
);

Integridad Referencial

  • Claves foráneas deben referenciar claves primarias existentes
  • Opciones ON DELETE/UPDATE:
    • CASCADE
    • SET NULL
    • RESTRICT
CREATE TABLE pedidos (
  id INT PRIMARY KEY,
  cliente_id INT REFERENCES clientes(id)
    ON DELETE CASCADE
);

Integridad Semántica (Definida por Usuario)

  • CHECK constraints
  • Triggers
  • Dominios personalizados
  • Ejemplo: Edad ≥ 18, Email válido

Transformación:  Modelo ER a Modelo Relacional

Ejemplo de Transformación de Modelo ER a Relacional

Reglas de Conversión

  • Entidad → Tabla con mismos atributos
  • Relación 1:N → FK en tabla del lado N
  • Relación M:N → Tabla intermedia con dos FK
  • Atributo multivalor → Tabla separada

Ejemplo Práctico

Modelo ER:
┌──────────┐       ┌──────────┐
│ ALUMNO   │───┐   │ CURSO    │
├──────────┤   │   ├──────────┤
│ id       │   └───│ codigo   │
│ nombre   │<──┐   │ nombre   │
└──────────┘   │   └──────────┘
               │
               │   ┌──────────┐
               └───│ MATRÍCULA│
                   ├──────────┤
                   │ fecha    │
                   │ nota     │
                   └──────────┘

Modelo Relacional:
ALUMNO(id(PK), nombre)
CURSO(codigo(PK), nombre)
MATRICULA(alumno_id(FK), curso_id(FK), fecha, nota)

Limitaciones del Modelo Relacional

  • Datos semiestructurados: Dificultad con JSON/XML
  • Relaciones complejas: Grafos con múltiples conexiones
  • Escalabilidad horizontal: Problemas en distribuir datos
  • Objetos complejos: Herencia, métodos
Ejemplo de limitación:
Un producto con múltiples variantes (tallas, colores)
es difícil modelar elegantemente en puro modelo relacional

Actividad Práctica

Ejercicio: Transformar el siguiente modelo ER a relacional:

┌──────────┐       ┌──────────┐
│ LIBRO    │───┐   │ AUTOR    │
├──────────┤   │   ├──────────┤
│ ISBN(PK) │   └───│ id(PK)   │
│ título   │<──┐   │ nombre   │
│ editorial│   │   └──────────┘
└──────────┘   │
               │   ┌──────────┐
               └───│ EJEMPLAR │
                   ├──────────┤
                   │ código   │
                   │ ubicación│
                   └──────────┘

Solución

LIBRO(ISBN(PK), título, editorial)
AUTOR(id(PK), nombre)
LIBRO_AUTOR(ISBN(FK), autor_id(FK))  # Tabla puente para relación M:N
EJEMPLAR(código(PK), ISBN(FK), ubicación)

Transformación de Modelo ER a Relacional

Modelo Entidad-Relación

  • Entidad: Cliente (id, nombre, email)
  • Entidad: Producto (id, nombre, precio)
  • Relación: Pedido (cliente, producto, fecha, cantidad)
  • Cardinalidad: Cliente (1) - (N) Pedido (N) - (1) Producto

Modelo Relacional Resultante

CREATE TABLE clientes (
  id INT PRIMARY KEY,
  nombre VARCHAR(100) NOT NULL,
  email VARCHAR(100) UNIQUE
);

CREATE TABLE productos (
  id INT PRIMARY KEY,
  nombre VARCHAR(100) NOT NULL,
  precio DECIMAL(10,2) CHECK (precio > 0)
);

CREATE TABLE pedidos (
  id INT PRIMARY KEY,
  cliente_id INT REFERENCES clientes(id),
  producto_id INT REFERENCES productos(id),
  fecha DATE NOT NULL,
  cantidad INT CHECK (cantidad > 0),
  UNIQUE(cliente_id, producto_id, fecha)
);

Reglas de Transformación

  1. Entidad → Tabla con mismos atributos
  2. Relación 1:N → Clave foránea en tabla N
  3. Relación M:N → Tabla intermedia con claves foráneas
  4. Atributos multivalor → Tabla separada
  5. Herencia → Varias estrategias (tabla única, por subtipo, etc.)

Limitaciones del Modelo Relacional

Limitaciones del Modelo Relacional

Estructura Rígida
  • Esquema fijo (schema-on-write)
  • Dificultad con datos semiestructurados
  • Problemas con jerarquías complejas
Problemas de Escalabilidad
  • Dificultad para escalar horizontalmente
  • Problemas con datos distribuidos
  • JOINs costosos en grandes volúmenes
Limitaciones Semánticas
  • Representación pobre de relaciones complejas
  • Dificultad con datos temporales
  • Problemas con datos espaciales

Casos donde alternativas NoSQL pueden ser mejores:

  • Datos jerárquicos (Document DBs)
  • Relaciones complejas (Graph DBs)
  • Alta escalabilidad (Key-Value Stores)
  • Datos no estructurados (Data Lakes)

Evaluación de Competencias

Evaluación de Competencias

Criterios:

  1. Comprensión de la estructura relacional
  2. Aplicación correcta de operaciones relacionales
  3. Implementación de reglas de integridad
  4. Transformación adecuada de modelos ER
  5. Identificación de limitaciones

Proyecto Final:

Diseñar un modelo relacional para un sistema universitario con:

  • Estudiantes, profesores y cursos
  • Relaciones de matrícula y enseñanza
  • Prerrequisitos entre cursos
  • Histórico de calificaciones

Entregables:

  1. Diagrama ER inicial
  2. Esquema relacional normalizado (hasta 3FN)
  3. 5 consultas en álgebra relacional
  4. Listado de restricciones de integridad
  5. Análisis de posibles limitaciones
↑ Inicio de Página

Diseño Conceptual de BD - Modelo Entidad-Relación

Diapos

↑ Inicio de Contenidos ↑ Inicio de Página

📊 Modelo Relacional y Entidad-Relación

Guía práctica con conceptos básicos, estructura y ejemplos didácticos para entender el diseño de bases de datos.

1. Modelo Entidad-Relación (ER)

🔍 Conceptos Generales

El modelo ER es una herramienta de diseño conceptual que nos permite representar la estructura de los datos antes de implementarlos en una base de datos real.

💡 ¿Para qué sirve? Para visualizar las entidades importantes de un sistema y cómo se relacionan entre sí.

🧩 Estructura Básica

Componente Descripción Ejemplo
Entidad Objeto del mundo real (persona, cosa, evento) Cliente, Producto, Pedido
Atributo Característica de una entidad Cliente: ID, Nombre, Teléfono
Relación Asociación entre entidades Cliente compra Producto
Cardinalidad Indica cuántas instancias de una entidad se relacionan con otra 1:N (Un cliente hace muchos pedidos)

📐 Ejemplo Práctico (Diagrama ER)

Sistema de Ventas

Entidades: Cliente, Pedido, Producto

Relaciones:

  • Un Cliente realiza varios Pedidos (1:N)
  • Un Pedido contiene varios Productos (N:M)

🛠️ Herramientas útiles: draw.io o Lucidchart para crear diagramas ER

2. Modelo Relacional

🔍 Conceptos Generales

Es la implementación práctica del modelo ER en una base de datos real. Los datos se organizan en tablas (relaciones) con filas (tuplas) y columnas (atributos).

🧩 Estructura Básica

Componente Descripción Ejemplo en SQL
Tabla Estructura que almacena datos CREATE TABLE Cliente (...);
Clave Primaria Identificador único de una fila ID INT PRIMARY KEY
Clave Foránea Referencia a una clave primaria en otra tabla cliente_id INT REFERENCES Cliente(ID)
Restricciones Reglas para mantener la integridad de los datos NOT NULL, UNIQUE, FOREIGN KEY

💻 Ejemplo Práctico (SQL)

-- Tabla Cliente
CREATE TABLE Cliente (
    ID INT PRIMARY KEY,
    Nombre VARCHAR(50) NOT NULL,
    Email VARCHAR(100) UNIQUE
);

-- Tabla Pedido
CREATE TABLE Pedido (
    ID INT PRIMARY KEY,
    Fecha DATE,
    Cliente_ID INT,
    FOREIGN KEY (Cliente_ID) REFERENCES Cliente(ID)
);

💻 Práctica interactiva: Usa SQLite Online para probar consultas

🔀 Diferencias Clave: Modelo ER vs. Relacional

Aspecto Modelo ER (Diseño) Modelo Relacional (Implementación)
Propósito Diseño conceptual Almacenamiento físico en tablas
Elementos Entidades, relaciones, atributos Tablas, claves, restricciones SQL
Uso Diagramas (abstracto) Consultas SQL (concreto)

🚀 Aplicaciones Prácticas

  • Sistemas de ventas: Gestión de clientes, productos y pedidos
  • Redes sociales: Usuarios, publicaciones, comentarios
  • Educación: Matrículas de estudiantes en cursos
  • Bibliotecas: Control de libros, préstamos y usuarios

📝 Ejercicio Propuesto

Diseña un sistema para una biblioteca:

  1. Crea un diagrama ER con las entidades: Libro, Autor, Préstamo, Usuario
  2. Define las relaciones entre ellas (cardinalidad)
  3. Conviértelo en tablas SQL con claves primarias y foráneas

💡 Solución sugerida:

CREATE TABLE Autor (
    ID INT PRIMARY KEY,
    Nombre VARCHAR(100) NOT NULL
);

CREATE TABLE Libro (
    ID INT PRIMARY KEY,
    Titulo VARCHAR(200) NOT NULL,
    Autor_ID INT,
    FOREIGN KEY (Autor_ID) REFERENCES Autor(ID)
);

-- Completa las tablas Usuario y Préstamo...
↑ Inicio de Contenidos
↑ Inicio de Página

Metodología de Diseño Conceptual de Bases de Datos

Esta guía presenta un ejemplo completo del proceso de diseño conceptual de una base de datos para un sistema de gestión de biblioteca, siguiendo los 8 pasos metodológicos establecidos:

  1. Identificar las entidades: Objetos clave del sistema (Libros, Autores, Usuarios, etc.)
  2. Identificar las relaciones: Conexiones entre entidades (Autor-escribe-Libro, Usuario-pide-Préstamo)
  3. Identificar los atributos: Propiedades de cada entidad (título, ISBN, fecha_nacimiento)
  4. Determinar los dominios: Tipos de datos y restricciones (VARCHAR(100), DATE, NOT NULL)
  5. Determinar los identificadores: Claves únicas (ISBN para Libros, DNI para Usuarios)
  6. Determinar jerarquías: Relaciones de generalización (Usuario → Estudiante/Profesor)
  7. Dibujar el diagrama ER: Representación visual del modelo completo
  8. Revisar con el usuario: Validación del modelo con los stakeholders

Cada paso se desarrolla con ejemplos prácticos del sistema de biblioteca, mostrando la aplicación concreta de la metodología.

1

1.Identificar las Entidades

Las entidades son objetos o conceptos del mundo real sobre los cuales queremos almacenar información. Deben ser significativas para el sistema y tener atributos propios.

Ejemplo para Biblioteca:

Identificamos las siguientes entidades principales:

  • Libro: Los ejemplares que la biblioteca posee
  • Autor: Las personas que escriben los libros
  • Usuario: Las personas registradas que pueden pedir préstamos
  • Préstamo: Los registros de cuando un usuario toma un libro
  • Editorial: Las empresas que publican los libros

Criterios para identificar entidades:

  1. ¿Representa un concepto importante para el negocio?
  2. ¿Contiene información que necesita ser almacenada?
  3. ¿Puede distinguirse claramente de otras entidades?
2

2.Identificar las Relaciones

Las relaciones son asociaciones significativas entre entidades. Debemos identificar cómo se conectan las entidades entre sí y la cardinalidad de estas relaciones.

Ejemplo para Biblioteca:

Relación Entidades Cardinalidad Descripción
escribe Autor - Libro 1:N Un autor puede escribir muchos libros, un libro tiene un autor principal
publica Editorial - Libro 1:N Una editorial publica muchos libros, un libro tiene una editorial
realiza Usuario - Préstamo 1:N Un usuario realiza muchos préstamos, un préstamo es de un usuario
contiene Préstamo - Libro 1:1 Un préstamo contiene exactamente un libro, un libro puede estar en un préstamo

Relaciones identificadas en el sistema de biblioteca

Tipos de cardinalidad:

  • 1:1 (Uno a Uno): Una entidad se relaciona exactamente con una instancia de la otra entidad
  • 1:N (Uno a Muchos): Una entidad se relaciona con múltiples instancias de la otra entidad
  • N:M (Muchos a Muchos): Múltiples instancias de una entidad se relacionan con múltiples instancias de la otra
3

3.Identificar los Atributos

Los atributos son características o propiedades de las entidades y relaciones. Debemos asignar a cada entidad y relación sus atributos correspondientes.

Ejemplo para Biblioteca:

Entidad/Relación Atributos Tipo Descripción
Libro ISBN, título, año_publicacion, num_paginas, idioma Simple Datos básicos del libro
Autor nombre, fecha_nacimiento, nacionalidad Simple Información del autor
Usuario dni, nombre, direccion, telefono, email Simple Datos de contacto del usuario
Préstamo fecha_prestamo, fecha_devolucion_prevista, fecha_devolucion_real Simple Fechas que controlan el préstamo
escribe tipo_autor (principal, coautor) Simple Rol del autor en el libro

Atributos asignados a entidades y relaciones

Tipos de atributos:

  • Simples: No divisibles (ej. nombre, fecha)
  • Compuestos: Formados por otros atributos (ej. dirección: calle, ciudad, código postal)
  • Multivaluados: Pueden tener múltiples valores (ej. teléfonos)
  • Derivados: Se calculan a partir de otros (ej. edad a partir de fecha_nacimiento)
4

4.Determinar los Dominios de los Atributos

El dominio define los valores posibles que puede tomar un atributo, incluyendo su tipo de dato y restricciones.

Ejemplo para Biblioteca:

Atributo Dominio Restricciones
ISBN VARCHAR(13) Formato válido de ISBN, NOT NULL, UNIQUE
título VARCHAR(200) NOT NULL
año_publicacion INTEGER Entre 1450 y año actual
dni VARCHAR(9) Formato válido, NOT NULL, UNIQUE
email VARCHAR(100) Formato válido de email
fecha_prestamo DATE NOT NULL, ≤ fecha actual

Dominios y restricciones para atributos clave

Tipos comunes de dominios:

  • Numéricos: INTEGER, DECIMAL, FLOAT
  • Texto: VARCHAR(n), CHAR(n), TEXT
  • Fecha/Hora: DATE, TIME, DATETIME
  • Booleanos: BOOLEAN (TRUE/FALSE)
  • Dominios personalizados: Enumeraciones o conjuntos específicos
5

5.Determinar los Identificadores

Los identificadores son atributos o conjuntos de atributos que identifican unívocamente cada instancia de una entidad.

Ejemplo para Biblioteca:

Entidad Identificador Tipo Comentarios
Libro ISBN Natural Identificador único internacional para libros
Autor id_autor Artificial Se crea un ID numérico porque no hay atributo natural único
Usuario dni Natural Documento Nacional de Identidad es único por persona
Préstamo id_prestamo Artificial Número secuencial generado por el sistema
Editorial cif Natural Código de Identificación Fiscal único para empresas

Identificadores principales para cada entidad

Tipos de identificadores:

  • Naturales: Atributos que ya existen en el mundo real (DNI, ISBN)
  • Artificiales: Atributos creados específicamente como identificadores (id_autor, id_prestamo)
  • Compuestos: Combinación de varios atributos cuando ninguno es único por sí solo
6

6.Determinar las Jerarquías de Generalización

Identificar relaciones de generalización/especialización donde una entidad es una versión más específica de otra.

Ejemplo para Biblioteca:

Identificamos las siguientes jerarquías:

Entidad General Entidades Específicas Tipo Atributos Diferenciadores
Usuario Estudiante, Profesor, Personal Solapamiento
  • Estudiante: carrera, año_ingreso
  • Profesor: departamento, antigüedad
  • Personal: puesto, horario
Libro LibroImpreso, LibroDigital Exclusiva
  • LibroImpreso: ubicacion_estante, estado_fisico
  • LibroDigital: formato, tamaño_archivo, url

Jerarquías de generalización identificadas

Tipos de jerarquías:

  • Exclusiva: Una instancia de la superclase pertenece a solo una subclase
  • Solapamiento: Una instancia puede pertenecer a varias subclases
  • Total: Todas las instancias de la superclase deben pertenecer a alguna subclase
  • Parcial: Existen instancias de la superclase que no pertenecen a ninguna subclase
7

7.Dibujar el Diagrama Entidad-Relación

Representación gráfica del esquema conceptual que integra todos los elementos identificados.

Diagrama ER para el Sistema de Biblioteca:

Leyenda del diagrama:

  • Rectángulos: Entidades
  • Elipses: Atributos
  • Rombos: Relaciones
  • Líneas: Conexiones y cardinalidades
  • Triángulos: Jerarquías de generalización
Diagrama ER para sistema de biblioteca

Diagrama Entidad-Relación completo para el sistema de biblioteca

Convenciones comunes en diagramas ER:

  • Entidades: Nombres en singular y en mayúsculas (LIBRO, AUTOR)
  • Atributos clave: Subrayados
  • Cardinalidad: Notación (1, N) o patas de gallo
  • Relaciones: Verbos en minúscula (escribe, presta)
  • Jerarquías: Flechas o triángulos que apuntan a la superclase
8

8.Revisar el Esquema Conceptual con el Usuario

Validación del modelo con los usuarios finales para asegurar que cumple con los requisitos del negocio.

Proceso de Revisión para la Biblioteca:

Preguntas para la revisión:

1. ¿Todas las entidades importantes están incluidas?

Ejemplo: ¿Necesitamos agregar "Revistas" como entidad separada de "Libros"?

2. ¿Las relaciones representan correctamente las reglas del negocio?

Ejemplo: ¿Un libro puede tener múltiples autores? ¿Necesitamos cambiar la cardinalidad?

3. ¿Todos los atributos necesarios están incluidos?

Ejemplo: ¿Necesitamos agregar "género" a los libros o "número_carnet" a los usuarios?

4. ¿Los identificadores son realmente únicos?

Ejemplo: ¿El ISBN identifica unívocamente cada ejemplar físico o necesitamos un "número_inventario"?

5. ¿Las jerarquías reflejan correctamente las categorías del negocio?

Ejemplo: ¿Los tipos de usuario (Estudiante, Profesor) cubren todos los casos necesarios?

Resultado de la revisión:

Después de reuniones con el personal de la biblioteca, se acordaron los siguientes cambios:

  1. Agregar entidad "Revista" con atributos específicos (periodicidad, ISSN)
  2. Cambiar relación Autor-Libro a N:M (un libro puede tener múltiples autores)
  3. Agregar atributo "género" a Libro con un dominio controlado
  4. Agregar subclase "LibroReferencia" con préstamo restringido
↑ Inicio de Contenidos ↑ Inicio de Página

Transformación de Modelo ER a Relacional

📚 Conceptos Básicos

El Modelo Entidad-Relación (ER) es un modelo conceptual que nos permite representar los datos y sus relaciones de forma abstracta, mientras que el Modelo Relacional es el modelo lógico que implementaremos finalmente en una base de datos.

🔍 Proceso de transformación: Convertiremos:

  • Entidades → Tablas
  • Atributos → Columnas
  • Relaciones → Claves foráneas o tablas intermedias

📐 Ejemplo Completo: Sistema de Biblioteca

Modelo Entidad-Relación

Entidad Atributos
Libro id_libro (PK), título, año, ISBN
Autor id_autor (PK), nombre, nacionalidad
Usuario id_usuario (PK), nombre, email, teléfono

Estructura de entidades para el sistema de biblioteca

Relaciones:

  • Autor escribe Libro (1:N)
  • Usuario presta Libro (N:M)

Modelo Relacional Resultante

-- Tabla Autor
CREATE TABLE Autor (
    id_autor INT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    nacionalidad VARCHAR(50)
);

-- Tabla Libro (con clave foránea para relación 1:N)
CREATE TABLE Libro (
    id_libro INT PRIMARY KEY,
    titulo VARCHAR(200) NOT NULL,
    año INT,
    ISBN VARCHAR(20) UNIQUE,
    id_autor INT,
    FOREIGN KEY (id_autor) REFERENCES Autor(id_autor)
);

-- Tabla Usuario
CREATE TABLE Usuario (
    id_usuario INT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE,
    telefono VARCHAR(15)
);

-- Tabla intermedia para relación N:M
CREATE TABLE Prestamo (
    id_prestamo INT PRIMARY KEY,
    id_usuario INT,
    id_libro INT,
    fecha_prestamo DATE NOT NULL,
    fecha_devolucion DATE,
    FOREIGN KEY (id_usuario) REFERENCES Usuario(id_usuario),
    FOREIGN KEY (id_libro) REFERENCES Libro(id_libro)
);

🔑 Observaciones clave:

  1. La relación 1:N (Autor-Libro) se resuelve con id_autor como FK en Libro
  2. La relación N:M (Usuario-Libro) requiere la tabla intermedia Prestamo
  3. Cada tabla mantiene sus atributos como columnas
  4. Las tablas intermedias pueden tener atributos adicionales (fechas, estados)

🛠️ Actividad Práctica

Transforma el siguiente modelo ER a relacional

Entidad Atributos
Proyecto id_proyecto (PK), nombre, fecha_inicio, fecha_fin
Empleado id_empleado (PK), nombre, especialidad, salario
Departamento id_departamento (PK), nombre, presupuesto

Estructura de entidades para el sistema de proyectos

Relaciones:

  • Un Departamento coordina muchos Proyectos (1:N)
  • Un Empleado trabaja en muchos Proyectos y un Proyecto tiene muchos Empleados (N:M)
  • Un Empleado pertenece a un Departamento (1:N)
Tabla Atributos Claves Relaciones
Departamento id_departamento, nombre, presupuesto PK: id_departamento Coordina Proyectos (1:N)
Empleado id_empleado, nombre, especialidad, salario, id_departamento PK: id_empleado
FK: id_departamento
Pertenece a Departamento (1:N)
Trabaja en Proyectos (N:M)
Proyecto id_proyecto, nombre, fecha_inicio, fecha_fin, id_departamento PK: id_proyecto
FK: id_departamento
Coordinado por Departamento (1:N)
Asignado a Empleados (N:M)
Asignacion id_asignacion, id_empleado, id_proyecto, horas_semana, rol PK: id_asignacion
FK: id_empleado, id_proyecto
Tabla intermedia para relación N:M

Estructura relacional resultante para el sistema de proyectos

-- Tabla Departamento
CREATE TABLE Departamento (
    id_departamento INT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    presupuesto DECIMAL(12,2)
);

-- Tabla Empleado (con FK a Departamento)
CREATE TABLE Empleado (
    id_empleado INT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    especialidad VARCHAR(50),
    salario DECIMAL(10,2),
    id_departamento INT,
    FOREIGN KEY (id_departamento) REFERENCES Departamento(id_departamento)
);

-- Tabla Proyecto (con FK a Departamento)
CREATE TABLE Proyecto (
    id_proyecto INT PRIMARY KEY,
    nombre VARCHAR(150) NOT NULL,
    fecha_inicio DATE NOT NULL,
    fecha_fin DATE,
    id_departamento INT,
    FOREIGN KEY (id_departamento) REFERENCES Departamento(id_departamento)
);

-- Tabla intermedia para relación N:M (Empleado-Proyecto)
CREATE TABLE Asignacion (
    id_asignacion INT PRIMARY KEY,
    id_empleado INT,
    id_proyecto INT,
    horas_semana INT,
    rol VARCHAR(50),
    FOREIGN KEY (id_empleado) REFERENCES Empleado(id_empleado),
    FOREIGN KEY (id_proyecto) REFERENCES Proyecto(id_proyecto)
);
↑ Inicio de Contenidos
↑ Inicio de Página

Test UA3: Modelo Relacional

1. ¿Qué representa una entidad en el modelo Entidad-Relación?

2. ¿Qué símbolo se usa comúnmente para representar una entidad en un diagrama ER?

3. ¿Qué representa un atributo en el modelo ER?

4. ¿Cómo se representa una relación en un diagrama ER?

5. ¿Qué significa la cardinalidad 1:N en una relación?

6. ¿Qué es una clave primaria en el modelo relacional?

7. ¿Qué es una clave foránea?

8. ¿Qué operación del álgebra relacional permite combinar datos de dos tablas?

9. ¿Cuál es la forma normal que exige que todos los atributos no clave dependan completamente de la clave primaria?

10. ¿Qué restricción SQL asegura que un atributo no pueda tener valores nulos?

11. ¿Qué tipo de relación se da cuando una entidad se relaciona consigo misma?

12. ¿Qué es un atributo multivaluado en el modelo ER?

13. ¿Qué operación SQL se usa para recuperar datos de una tabla?

14. ¿Qué tipo de join devuelve todas las filas de ambas tablas, emparejándolas cuando coinciden?

15. ¿Qué es una entidad débil en el modelo ER?

16. ¿Qué comando SQL se usa para crear una tabla?

17. ¿Qué tipo de atributo se puede calcular a partir de otros atributos?

18. ¿Qué significa la cardinalidad N:M en una relación?

19. ¿Qué restricción SQL asegura que los valores en un atributo sean únicos?

20. ¿Qué es un diagrama ER?

21. ¿Qué operación del álgebra relacional selecciona un subconjunto de filas de una tabla?

22. ¿Qué tipo de join devuelve solo las filas que tienen coincidencias en ambas tablas?

23. ¿Qué es una superclave en el modelo relacional?

24. ¿Qué comando SQL se usa para eliminar una tabla?

25. ¿Qué es la integridad referencial en una base de datos relacional?

26. ¿Qué tipo de atributo está compuesto por varios atributos simples?

27. ¿Qué operación del álgebra relacional selecciona un subconjunto de columnas de una tabla?

28. ¿Qué es una tupla en el modelo relacional?

29. ¿Qué comando SQL se usa para modificar la estructura de una tabla?

30. ¿Qué es un esquema en una base de datos relacional?

31. ¿Qué representa un atributo clave en el modelo ER?

32. ¿Qué símbolo se usa comúnmente para representar un atributo en un diagrama ER?

33. ¿Qué significa la cardinalidad 1:1 en una relación?

34. ¿Qué es una relación ternaria en el modelo ER?

35. ¿Qué comando SQL se usa para insertar datos en una tabla?

36. ¿Qué es un atributo simple en el modelo ER?

37. ¿Qué es la primera forma normal (1FN) en el modelo relacional?

38. ¿Qué comando SQL se usa para eliminar datos de una tabla?

39. ¿Qué es una restricción CHECK en SQL?

40. ¿Qué es un dominio en el modelo relacional?

41. ¿Qué operación SQL se usa para modificar datos existentes en una tabla?

42. ¿Qué es una vista en SQL?

43. ¿Qué es la redundancia de datos en una base de datos?

44. ¿Qué es un índice en una base de datos relacional?

45. ¿Qué es una transacción en una base de datos?

> La transferencia de datos entre tablas

46. ¿Qué significa ACID en el contexto de transacciones de bases de datos?

47. ¿Qué comando SQL se usa para crear un índice?

48. ¿Qué es una subconsulta en SQL?

49. ¿Qué es la cláusula GROUP BY en SQL?

50. ¿Qué es la cláusula HAVING en SQL?

51. ¿Qué es una función de agregación en SQL?

52. ¿Qué es la cláusula ORDER BY en SQL?

53. ¿Qué es la cláusula WHERE en SQL?

54. ¿Qué es una sentencia DML en SQL?

55. ¿Qué es una sentencia DDL en SQL?

56. ¿Qué es la normalización en bases de datos?

57. ¿Qué es una dependencia funcional en el modelo relacional?

58. ¿Qué es una dependencia transitiva en el modelo relacional?

59. ¿Qué es una unión natural en álgebra relacional?

60. ¿Qué es una transacción anidada en bases de datos?

Nº de Test: 0

Instrucciones:

  • Enviar Respuestas: Corrige el cuestionario actual, muestra los aciertos, fallos y calificación de este intento.
  • Reiniciar: Borra las respuestas marcadas en esta sesión, incrementa el contador de reinicios, pero no elimina los datos de los intentos.
  • Finalizar: Calcula la nota media de todos los intentos realizados hasta ahora y muestra un resumen general.
  • Reiniciar Todo: Borra todos los datos almacenados (reinicios, intentos, calificaciones) y reinicia el cuestionario completamente.
↑ Inicio de Contenidos
↑ Inicio de Página

Ejercicios