proyecto web
archivo 1
Nombre : index.html
login.html
Concepto
¿Cómo definirías una base de datos de tipo clave-valor y cuál es su estructura básica?
¿En qué escenarios crees que sería más eficiente usar una base de datos clave-valor en lugar de una relacional?
¿Qué ventajas ofrece el modelo clave-valor en cuanto a rendimiento y escalabilidad?
¿Qué limitaciones presenta el modelo clave-valor al trabajar con datos complejos?
¿Cómo se accede a la información almacenada en una base de datos clave-valor?
¿Qué similitudes y diferencias encuentras entre las bases de datos clave-valor y los diccionarios en programación?
¿Cómo maneja una base de datos clave-valor las operaciones de actualización de datos?
¿Qué desafíos enfrentan los desarrolladores al modelar datos en bases de datos clave-valor?
¿Por qué el modelo clave-valor es considerado uno de los más simples en bases de datos NoSQL?
¿Cómo afecta la falta de esquemas rígidos en bases de datos clave-valor al diseño de una aplicación?
Bases de datos más usadas
¿Qué características hacen popular a Redis como base de datos clave-valor?
¿Por qué crees que Amazon DynamoDB es ampliamente utilizada en entornos empresariales?
¿En qué se diferencia Riak de otros sistemas clave-valor?
¿Qué tipo de aplicaciones crees que se beneficiarían más del uso de Redis?
¿Qué ventajas ofrece Aerospike frente a otras bases de datos clave-valor?
¿Qué opinas del uso de Memcached en aplicaciones web modernas?
¿Cómo influye la persistencia de datos en la elección de una base clave-valor?
¿Qué criterios considerarías para elegir entre Redis y DynamoDB en un nuevo proyecto?
¿En qué se destacan las bases de datos clave-valor en el manejo de grandes volúmenes de tráfico?
¿Cómo se relacionan las bases de datos clave-valor con el desarrollo de sistemas en tiempo real?
Concepto
¿Cómo describirías una base de datos orientada a documentos y qué estructura utiliza para almacenar los datos?
¿Qué beneficios aporta el uso de documentos en formato JSON o BSON en estas bases de datos?
¿En qué situaciones se prefiere una base orientada a documentos en lugar de una relacional?
¿Qué impacto tiene la flexibilidad del esquema en el modelado de datos en estas bases?
¿Cómo se gestionan las relaciones entre documentos en este tipo de bases de datos?
¿Qué diferencias fundamentales existen entre una base orientada a documentos y una clave-valor?
¿Qué implicaciones tiene el almacenamiento de datos semiestructurados en estas bases?
¿Por qué crees que las bases orientadas a documentos son populares en aplicaciones web modernas?
¿Cómo influye la indexación en el rendimiento de las consultas en bases de datos orientadas a documentos?
¿Qué retos pueden surgir al escalar una base de datos orientada a documentos?
Bases de datos más usadas
¿Qué ventajas hacen que MongoDB sea una de las bases de datos más utilizadas en este modelo?
¿Cómo se compara CouchDB con otras bases de datos orientadas a documentos?
¿Qué te parece el enfoque de Firebase Firestore respecto a la gestión de documentos?
¿En qué tipos de proyectos usarías MongoDB y por qué?
¿Qué diferencias encuentras entre ArangoDB y MongoDB?
¿Cómo influye la replicación en bases como Couchbase en el rendimiento del sistema?
¿Qué papel juega Elasticsearch como base orientada a documentos?
¿Cómo se integra Firebase Firestore con aplicaciones móviles y qué ventajas ofrece?
¿Qué limitaciones pueden presentarse al usar CouchDB en sistemas distribuidos?
¿Qué factores considerarías para elegir entre Firestore y MongoDB?
Concepto
¿Qué caracteriza a una base de datos orientada a grafos?
¿Cómo se representan los nodos y relaciones en este tipo de bases de datos?
¿Qué ventajas ofrece este modelo para manejar relaciones complejas entre datos?
¿Por qué crees que las bases de grafos son útiles en aplicaciones como redes sociales?
¿Cómo se realiza una consulta en una base de datos orientada a grafos?
¿Qué papel juega la teoría de grafos en el diseño de estas bases?
¿Qué dificultades podrías encontrar al diseñar una base orientada a grafos?
¿Qué diferencia hay entre almacenar relaciones en una base relacional y en una de grafos?
¿Cómo se optimiza el rendimiento en consultas sobre grandes grafos?
¿Qué tipo de análisis puedes realizar con datos almacenados en una base de grafos?
Bases de datos más usadas
¿Qué hace a Neo4j una de las bases de grafos más conocidas?
¿Qué opinas sobre el enfoque multimodelo de ArangoDB?
¿Cómo se utiliza Amazon Neptune y en qué casos sería útil?
¿Qué ventajas tiene OrientDB al soportar múltiples modelos de datos?
¿Por qué elegirías TigerGraph para un sistema de análisis de datos?
¿Qué aporta JanusGraph en entornos con grandes volúmenes de datos conectados?
¿Qué criterios seguirías para seleccionar una base de grafos en un proyecto de recomendación de productos?
¿Cómo influye la escalabilidad en la elección de una base de datos de grafos?
¿Qué herramientas ofrece Neo4j para visualizar grafos?
¿Qué importancia tiene el lenguaje Cypher en el uso de Neo4j?
Función “Buscar”
¿Cómo mejora el rendimiento la búsqueda en bases de datos en memoria?
¿Qué diferencia hay entre buscar datos en memoria y en disco?
¿Qué técnicas de búsqueda se utilizan comúnmente en bases de datos en memoria?
¿Qué tipo de operaciones son más eficientes al usar bases en memoria?
¿Cómo se gestionan los índices en bases en memoria?
¿Qué riesgos implica almacenar toda la base de datos en memoria?
¿Qué estrategias se pueden aplicar para evitar la pérdida de datos en bases de datos en memoria?
¿Cómo afecta la búsqueda en tiempo real al diseño de una base de datos en memoria?
¿Qué relación hay entre la velocidad de búsqueda y la estructura de datos usada?
¿Qué retos puede enfrentar una base de datos en memoria al manejar grandes volúmenes de información?
Bases de datos más utilizadas
¿Por qué Redis es una de las bases de datos en memoria más utilizadas?
¿Qué características hacen de Memcached una buena opción para sistemas de caché?
¿En qué casos usarías Redis en lugar de Memcached?
¿Qué papel juegan las bases en memoria en el desarrollo de aplicaciones en tiempo real?
¿Cómo influye la persistencia en la elección de una base de datos en memoria?
¿Qué ventajas y desventajas encuentras en el uso de Redis como base de datos principal?
¿Cómo maneja Redis las estructuras de datos complejas?
¿Qué opinas sobre el uso de bases en memoria para sistemas de recomendación o streaming?
¿Qué alternativas a Redis conoces y en qué situaciones las usarías?
¿Qué tipo de proyectos podrían beneficiarse más del uso de bases en memoria?
Contestar en la libreta estas preguntas
¿Qué diferencia existe entre una clave primaria y una clave foránea, y por qué son importantes en una base de datos relacional?
¿Cómo explicarías el uso de la sentencia JOIN y en qué situaciones conviene usar INNER JOIN o LEFT JOIN?
¿Qué ventajas y desventajas tiene el uso de subconsultas frente a joins en SQL?
¿Cómo funciona la cláusula GROUP BY y en qué casos prácticos es más útil?
¿Qué diferencia hay entre DELETE, TRUNCATE y DROP, y cuándo usarías cada uno?
¿Qué problemas pueden surgir si no se normalizan las tablas de una base de datos?
¿Cómo utilizarías índices en SQL y qué riesgos o limitaciones pueden tener?
¿Qué significa NULL en SQL y qué complicaciones puede causar en consultas?
¿Cómo implementarías un control para evitar registros duplicados en una tabla?
¿Qué ventajas aporta usar transacciones en SQL y en qué escenarios son críticas?
¿Cómo manejarías el rendimiento de una consulta que tarda demasiado en ejecutarse?
¿Cuál es la diferencia entre HAVING y WHERE, y cuándo deberías usar cada uno?
¿Cómo diseñarías una consulta para mostrar los n empleados mejor pagados de una empresa?
¿Qué técnicas usarías para respaldar y recuperar una base de datos en caso de fallo?
¿Qué importancia tiene la seguridad en SQL y cómo evitarías ataques como la inyección SQL?
Las bases de datos no relacionales (NoSQL) son sistemas de almacenamiento que no utilizan el modelo tradicional de tablas y filas como las bases de datos SQL. Están diseñadas para manejar grandes volúmenes de datos, con estructuras más flexibles y escalables, adaptándose a diferentes necesidades.
Estructura flexible: permiten guardar datos en formatos como documentos, grafos, columnas o pares clave-valor.
Escalabilidad horizontal: es sencillo distribuir la información en varios servidores.
Alto rendimiento: optimizan el acceso y la escritura de datos en aplicaciones con gran tráfico.
Soporte para datos no estructurados: admiten información variada, como texto, imágenes o registros JSON.
Modelo de datos: SQL usa tablas y relaciones; NoSQL emplea estructuras más diversas.
Esquema: en SQL el esquema es rígido; en NoSQL puede modificarse sin afectar la base completa.
Escalabilidad: SQL se escala mejor de forma vertical (mejorando el servidor), mientras NoSQL lo hace horizontalmente (añadiendo nodos).
Consultas: en SQL se usa un lenguaje estandarizado (SQL), en NoSQL depende del tipo de base.
Uso recomendado: SQL es ideal para datos consistentes y estructurados; NoSQL, para datos masivos o cambiantes.
Clave-valor: almacenan datos como pares únicos (ej. Redis).
Documentales: guardan información en documentos (JSON, BSON) —ej. MongoDB.
De columnas: optimizadas para datos organizados por columnas —ej. Cassandra, HBase.
De grafos: modelan relaciones complejas entre elementos —ej. Neo4j.
Ventajas:
Gran capacidad para manejar datos masivos y en tiempo real.
Flexibilidad para adaptarse a cambios en la estructura de los datos.
Rendimiento optimizado en operaciones de lectura/escritura.
Desventajas:
Menor estandarización en los lenguajes de consulta.
Algunas carecen de transacciones complejas como en SQL.
Requieren conocimientos específicos según el tipo de base.
Las NoSQL están diseñadas para crecer sin afectar su rendimiento, añadiendo nodos o servidores de manera sencilla. Esto las hace ideales para aplicaciones web, redes sociales o sistemas con millones de usuarios.
Permiten modificar o ampliar la estructura de los datos sin interrumpir el servicio. Es posible agregar campos o atributos a documentos o registros sin necesidad de redefinir todo el esquema.
Su arquitectura está optimizada para responder rápidamente a grandes cantidades de solicitudes, logrando tiempos de acceso reducidos incluso con volúmenes de datos elevados.
Las bases de datos no relacionales representan una alternativa moderna y eficiente para gestionar datos diversos y en constante crecimiento. Su escalabilidad, flexibilidad y rendimiento las hacen especialmente útiles en aplicaciones que requieren rapidez y adaptación, aunque es importante evaluar sus limitaciones frente a los sistemas SQL cuando se necesite consistencia total o transacciones complejas.
Tema A: Álgebra Relacional
El álgebra relacional es un conjunto de operaciones matemáticas que permiten manipular y consultar datos almacenados en bases de datos relacionales. Proporciona una base teórica sobre la cual se construyen los lenguajes de consulta como SQL.
Son las operaciones fundamentales del álgebra relacional. A partir de ellas se construyen las demás.
Se obtienen a partir de combinaciones de los operadores básicos y son muy usados en consultas reales.
El cálculo relacional describe qué datos se desean obtener, no cómo hacerlo. Se divide en dos tipos:
Cálculo relacional de tuplas (TRC): Trabaja con variables que representan filas.
Ej.: { t | t ∈ Empleados AND t.edad > 30 }
Cálculo relacional de dominios (DRC): Trabaja con variables que representan valores de columnas.
Ej.: { <n, e> | ∃d ( <n, e, d> ∈ Empleados AND e > 30 ) }
Esto es la base teórica de SQL.
SQL (Structured Query Language) es el estándar para gestionar bases de datos relacionales.
Incluye:
DDL (Data Definition Language): Definición de tablas.
CREATE TABLE Empleados (
id INT PRIMARY KEY,
nombre VARCHAR(50),
edad INT
);
DML (Data Manipulation Language): Consulta y manipulación de datos.
SELECT nombre, edad FROM Empleados WHERE edad > 30;
DCL (Data Control Language): Control de permisos.
GRANT SELECT ON Empleados TO UsuarioX;
TCL (Transaction Control Language): Control de transacciones.
COMMIT;
ROLLBACK;
El proceso incluye:
Análisis de requerimientos
Diseño conceptual (modelo entidad-relación)
Diseño lógico (tablas, relaciones, normalización)
Implementación física (creación en un SGBD)
Carga de datos
Optimización y mantenimiento
Ejemplo de implementación:
CREATE DATABASE Empresa;
USE Empresa;
CREATE TABLE Departamentos (
idDepto INT PRIMARY KEY,
nombreDepto VARCHAR(50)
);
CREATE TABLE Empleados (
idEmpleado INT PRIMARY KEY,
nombre VARCHAR(50),
edad INT,
idDepto INT,
FOREIGN KEY (idDepto) REFERENCES Departamentos(idDepto)
);
Son atributos o combinaciones de atributos que distinguen unívocamente cada fila de una tabla.
Clave primaria (Primary Key): Identificador único obligatorio.
Clave candidata: Posibles claves primarias.
Clave alterna: Claves candidatas no seleccionadas como primaria.
Clave foránea (Foreign Key): Atributo que referencia una clave primaria en otra tabla.
Ejemplo:
CREATE TABLE Clientes (
idCliente INT PRIMARY KEY, -- Identificador único
nombre VARCHAR(50),
email VARCHAR(50) UNIQUE -- Otro identificador alterno
);
En la implementación de bases de datos relacionales, los operadores relacionales permiten manipular el contenido de las tablas. Estos operadores corresponden a acciones básicas de mantenimiento de datos: insertar nuevos registros, eliminar registros existentes y modificar registros almacenados.
La inserción consiste en agregar nuevas filas a una tabla de la base de datos. Este operador debe respetar las restricciones de integridad (claves primarias, claves foráneas, valores únicos, tipos de datos, etc.).
📌 Sintaxis en SQL:
INSERT INTO nombre_tabla (columna1, columna2, columna3)
VALUES (valor1, valor2, valor3);
📍 Ejemplo
Si tenemos una tabla Estudiantes:
CREATE TABLE Estudiantes (
id_estudiante INT PRIMARY KEY,
nombre VARCHAR(50),
edad INT,
carrera VARCHAR(50)
);
Podemos insertar un registro así:
INSERT INTO Estudiantes (id_estudiante, nombre, edad, carrera)
VALUES (1, 'Ana Pérez', 19, 'Ingeniería en Sistemas');
El borrado elimina una o varias filas de una tabla. Es importante utilizar condiciones para evitar eliminar toda la información por error.
📌 Sintaxis en SQL:
DELETE FROM nombre_tabla
WHERE condición;
📍 Ejemplo
Eliminar un estudiante por su ID:
DELETE FROM Estudiantes
WHERE id_estudiante = 1;
⚠️ Si omitimos la condición:
DELETE FROM Estudiantes;
👉 Se borrarán todos los registros de la tabla (la estructura se conserva).
La modificación cambia los valores de uno o más atributos de un registro existente. Al igual que en DELETE, es fundamental establecer una condición.
📌 Sintaxis en SQL:
UPDATE nombre_tabla
SET columna1 = nuevo_valor1, columna2 = nuevo_valor2
WHERE condición;
📍 Ejemplo
Actualizar la carrera de un estudiante:
UPDATE Estudiantes
SET carrera = 'Inteligencia Artificial'
WHERE id_estudiante = 2;
También podemos modificar varios campos al mismo tiempo:
UPDATE Estudiantes
SET edad = 20, carrera = 'Ciberseguridad'
WHERE nombre = 'Ana Pérez';
Inserción → Permite el crecimiento y actualización de la información en tiempo real.
Borrado → Mantiene la base de datos libre de datos obsoletos o incorrectos.
Modificación → Facilita la actualización de registros sin necesidad de eliminarlos e insertarlos nuevamente.
Todos deben usarse con cuidado, ya que afectan la integridad y consistencia de los datos.
El alumno será capaz de crear una base de datos relacional en MySQL, con al menos 5 tablas relacionadas, insertar registros y realizar consultas básicas.
Crear la base de datos
Nombra la base de datos: EscuelaDB.
Crear las siguientes tablas:
Alumnos: datos personales y a qué grupo pertenece.
Maestros: información básica y especialidad.
Materias: nombre y créditos de cada materia.
Grupos: identificador, grado y maestro responsable.
Calificaciones: relación entre alumnos y materias con su calificación.
⚠️ Importante: Usa llaves primarias (PRIMARY KEY) y foráneas (FOREIGN KEY) para establecer las relaciones.
Insertar al menos 5 registros en cada tabla.
Ejemplo: 5 alumnos, 5 maestros, 5 materias, 3 grupos, 10 calificaciones.
Realizar las siguientes consultas SQL:
Mostrar todos los alumnos con su grupo.
Listar las materias con su número de créditos.
Consultar las calificaciones de un alumno en todas sus materias.
Mostrar los alumnos de un grupo específico.
Listar qué maestro está asignado a cada grupo.
Exportar la base de datos
Desde MySQL Workbench o phpMyAdmin, exportar la base de datos completa en un archivo .sql.
Entregar el archivo como evidencia.
✅ Base de datos creada con al menos 5 tablas.
✅ Uso correcto de PRIMARY KEY y FOREIGN KEY.
✅ Cada tabla con mínimo 5 registros.
✅ Consultas SQL funcionando correctamente.
✅ Exportación correcta de la base en .sql.
Ejemplo
-- Crear base de datos
CREATE DATABASE EscuelaDB;
USE EscuelaDB;
-- Tabla de alumnos
CREATE TABLE Alumnos (
id_alumno INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
apellido VARCHAR(100) NOT NULL,
fecha_nacimiento DATE,
genero ENUM('M','F'),
id_grupo INT
);
-- Tabla de maestros
CREATE TABLE Maestros (
id_maestro INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
apellido VARCHAR(100) NOT NULL,
especialidad VARCHAR(100)
);
-- Tabla de materias
CREATE TABLE Materias (
id_materia INT AUTO_INCREMENT PRIMARY KEY,
nombre_materia VARCHAR(100) NOT NULL,
creditos INT NOT NULL
);
-- Tabla de grupos
CREATE TABLE Grupos (
id_grupo INT AUTO_INCREMENT PRIMARY KEY,
nombre_grupo VARCHAR(50) NOT NULL,
grado INT NOT NULL,
id_maestro INT,
FOREIGN KEY (id_maestro) REFERENCES Maestros(id_maestro)
);
-- Tabla de calificaciones (relación muchos a muchos entre alumnos y materias)
CREATE TABLE Calificaciones (
id_calificacion INT AUTO_INCREMENT PRIMARY KEY,
id_alumno INT,
id_materia INT,
calificacion DECIMAL(4,2),
FOREIGN KEY (id_alumno) REFERENCES Alumnos(id_alumno),
FOREIGN KEY (id_materia) REFERENCES Materias(id_materia)
);
-- Insertar maestros
INSERT INTO Maestros (nombre, apellido, especialidad) VALUES
('Juan', 'Pérez', 'Matemáticas'),
('María', 'González', 'Lengua Española'),
('Carlos', 'Ramírez', 'Historia'),
('Ana', 'Martínez', 'Inglés');
-- Insertar grupos
INSERT INTO Grupos (nombre_grupo, grado, id_maestro) VALUES
('1A', 1, 1),
('2B', 2, 2),
('3C', 3, 3);
-- Insertar alumnos
INSERT INTO Alumnos (nombre, apellido, fecha_nacimiento, genero, id_grupo) VALUES
('Luis', 'Hernández', '2010-05-14', 'M', 1),
('Sofía', 'López', '2011-07-22', 'F', 1),
('Diego', 'Torres', '2009-03-11', 'M', 2),
('Valeria', 'Castro', '2010-09-30', 'F', 3),
('Mateo', 'García', '2011-01-19', 'M', 2);
-- Insertar materias
INSERT INTO Materias (nombre_materia, creditos) VALUES
('Matemáticas', 5),
('Español', 4),
('Historia', 3),
('Inglés', 4);
-- Insertar calificaciones
INSERT INTO Calificaciones (id_alumno, id_materia, calificacion) VALUES
(1, 1, 9.5),
(1, 2, 8.7),
(2, 1, 7.8),
(2, 3, 9.0),
(3, 2, 8.2),
(3, 4, 9.1),
(4, 3, 8.9),
(5, 1, 7.5),
(5, 4, 8.3);
5 tablas: Alumnos, Maestros, Materias, Grupos, Calificaciones.
Relaciones:
Alumnos → Grupos.
Grupos → Maestros.
Calificaciones → Alumnos + Materias.
explicacion del codigo dar click aqui
Ejercicio
💡 Descripción:
Los alumnos desarrollarán una base de datos para una agencia de viajes que gestiona clientes, destinos turísticos, paquetes de viaje, reservas y pagos. Es un contexto interesante, realista y lleno de relaciones entre datos.
La tablas tiene que tener al menos 10 registros