Creamos el entorno
python -m venv venv
Activamos el entorno
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass; .\venv\Scripts\Activate
Instalamos las dependencias
pip install -r requirements.txt
Iniciamos Jupyter Lab
jupyter lab
- Un modelo de datos provee una notación para describir datos mediante tres elementos:
- Estructura de los datos
- Restricciones que aplican sobre los datos
- Operaciones que pueden realizarse sobre los datos
- Los modelos de datos constituyen la estructura subyacente de una base de datos
- Clasificación de modelos:
- Modelos lógicos: basados en objetos (entidad-relación, orientado a objetos) y basados en registros (relacional)
- Modelos no lógicos
- Es un modelo lógico basado en objetos que representa el significado de los datos independientemente de su implementación física
- Componentes estructurales:
- Entidades: objetos distinguibles (ejemplos: persona, auto)
- Relaciones: asociaciones entre entidades (ejemplo: "es dueño de")
- Atributos: información sobre entidades o relaciones
- Dominio: conjunto de valores posibles para un atributo
- Rol: función que cumple una entidad en una relación
- Representación gráfica:
- Rectángulos para entidades
- Rombos para relaciones
- Círculos para atributos (rellenos si son identificadores)
- Líneas con notaciones para cardinalidad
- Cardinalidad: indica cuántas veces una entidad puede participar en una relación (1:1, 1:N, N:M)
- Identificadores/claves: atributos que identifican de forma única a una entidad
- Pueden ser simples o compuestos
- Solo las entidades pueden tener atributos identificadores
- Especialización: definir subconjuntos de entidades (ejemplo: empleados → médicos)
- Generalización: proceso inverso a la especialización, creando entidades de nivel superior
- Agregación: mecanismo para tratar una relación como una entidad de alto nivel
- Útil cuando se necesita relacionar información con una relación existente
- Ejemplo: relacionar entrevistas (relación entre compañía y solicitante) con ofertas de empleo
- Los materiales presentados son solo un resumen de los conceptos
- Estudiantes deben consultar la bibliografía para profundizar
- Se espera participación activa:
--
- El modelo relacional representa datos como tablas bidimensionales llamadas relaciones
- Elementos principales:
- Relaciones (tablas): Estructuras bidimensionales que almacenan datos
- Atributos: Columnas de las tablas que representan propiedades
- Esquema: Nombre de la relación + conjunto de atributos (sin orden preestablecido)
- Tuplas: Filas de cada relación que contienen valores concretos
- Dominio: Cada componente debe ser atómico (no compuesto)
- Clave: Conjunto de atributos que no permite valores repetidos
- Transformación de entidades:
- Crear una relación con el mismo nombre y atributos
- La clave en el modelo relacional corresponde al identificador de la entidad
- Transformación de relaciones:
- Crear una relación con el mismo nombre
- Incluir como atributos los identificadores de las entidades participantes
- Agregar los atributos propios de la relación
- La clave depende de la cardinalidad
- Relaciones con roles: Renombrar atributos cuando una entidad participa más de una vez
- Ejemplo: Empleado-Director donde se renombra "número de empleado" a "número de director"
- Generalización: Tres opciones de transformación
- Solo transformar la entidad de nivel superior (agregando atributo discriminante)
- Solo transformar las entidades de nivel inferior (repitiendo atributos comunes)
- Transformar todas las entidades (nivel superior e inferior)
- Especialización: Dos opciones de transformación
- Solo transformar la entidad de nivel superior (con atributo discriminante)
- Transformar todas las entidades (nivel superior e inferior)
- Agregación: Transformar entidades y relaciones participantes, y la relación con la agregación
- Interpretar el modelo de entidades y relaciones presentado
- Redactar la semántica del modelo en lenguaje coloquial
- Aplicar las reglas para transformar el modelo E-R al modelo relacional
- Subir consultas al foro sobre el contenido de la clase
El álgebra relacional funciona como un lenguaje procedimental de consultas y como un lenguaje de manipulación de datos. Como lenguaje de consulta, permite recuperar información mediante operaciones fundamentales y adicionales, mientras que como lenguaje de manipulación permite agregar, modificar y eliminar datos.
Las operaciones fundamentales son aquellas que no pueden reescribirse de otra manera:
- Selección: Operación unaria que filtra tuplas según una condición, generando un subconjunto horizontal.
- Proyección: Operación unaria que genera un subconjunto vertical al seleccionar solo ciertos atributos.
- Producto Cartesiano: Operación binaria que relaciona cada tupla de una relación con todas las tuplas de otra relación.
- Renombre: Operación unaria que permite cambiar el nombre de una relación o sus atributos.
- Unión: Operación binaria que requiere unión compatible y combina tuplas de ambas relaciones sin repetidos.
- Diferencia: Operación binaria que requiere unión compatible y obtiene tuplas que están en la primera relación pero no en la segunda.
Estas operaciones pueden reescribirse usando las fundamentales, pero aportan legibilidad:
- Intersección: Devuelve tuplas comunes entre dos relaciones con unión compatible.
- Producto Theta (Θ): Genera tuplas aplicando una condición sobre el producto cartesiano, manteniendo columnas duplicadas.
- Producto Natural: Similar al producto theta pero elimina columnas duplicadas.
- División: Opera con un dividendo y un divisor, buscando tuplas que se relacionen con todas las tuplas del divisor.
- Asignación: Permite modularizar consultas complejas asignando resultados intermedios a relaciones temporales.
Estas operaciones modifican la cantidad o valores de tuplas:
- Inserción: Agrega una o varias tuplas a una relación, ya sea especificadas directamente o como resultado de otra consulta.
- Eliminación: Elimina tuplas que cumplan ciertas condiciones o que estén explícitamente especificadas.
- Actualización: Modifica valores de atributos en tuplas específicas o en toda la relación.
- Modularidad: Para consultas complejas, es recomendable utilizar la asignación para trabajar por pasos.
- Legibilidad: Evitar anidar muchas operaciones con paréntesis que dificulten la comprensión.
- Notación lineal: Las consultas se escriben e interpretan de izquierda a derecha.
- Desambiguación: Usar notación puntual para distinguir atributos con el mismo nombre en diferentes relaciones.