Contenido verificado asociado a este RA
Interpretación y Materialización del Diseño Lógico de Bases de Datos
Esta unidad aborda la comprensión de los diseños lógicos de bases de datos y su transformación en esquemas físicos mediante sentencias DDL, asegurando la correcta estructura para la accesibilidad de los datos en aplicaciones web.
Operaciones CRUD, Persistencia y Procedimientos Almacenados
Esta unidad se centra en la manipulación de datos mediante operaciones CRUD y procedimientos almacenados, garantizando la persistencia y la integridad de la información en la base de datos.
Conectividad de Aplicaciones Web con Bases de Datos
Esta unidad explica cómo las aplicaciones web establecen conexiones con bases de datos, ejecutan consultas y recuperan resultados, utilizando objetos de acceso a datos para una interacción eficiente y segura.
Gestión y Publicación de Servidores de Aplicaciones Web
Esta unidad cubre la participación en la gestión de servidores para la publicación de aplicaciones web, incluyendo la configuración de servicios de red para garantizar la seguridad y el rendimiento.
Interconexión de SGBD y Servidor de Aplicaciones Web
Esta unidad se enfoca en la configuración de sistemas de gestión de bases de datos y su interconexión segura y eficiente con el servidor de aplicaciones web, así como la elaboración de manuales de servicio y mantenimiento.
Conceptos clave
Diseño lógico de bases de datosDiagrama Entidad-Relación (ER)Esquema relacionalLenguaje de Definición de Datos (DDL)Clave primariaClave foráneaRestricciones de integridadOperaciones CRUDPersistencia de datosLenguaje de Manipulación de Datos (DML)Consultas SQLProcedimientos almacenadosTransacciones ACIDCadena de conexión (Connection String)API de acceso a datos (JDBC, PDO, etc.)Driver de base de datosConsultas parametrizadasResultSet / RecordSet
Errores que conviene evitar
- {"error":"No definir correctamente las claves foráneas o sus restricciones de integridad referencial.","causa":"Falta de comprensión de las cardinalidades o de la importancia de la integridad referencial.","correccion":"Asegurarse de que cada relación lógica 'uno a muchos' o 'muchos a muchos' (mediante tabla intermedia) se traduzca en claves foráneas con acciones ON DELETE/ON UPDATE adecuadas (CASCADE, SET NULL, RESTRICT) para mantener la coherencia de los datos."}
- {"error":"Utilizar tipos de datos incorrectos o demasiado genéricos.","causa":"Desconocimiento de los tipos de datos específicos del SGBD o falta de análisis de los requisitos de almacenamiento.","correccion":"Investigar los tipos de datos óptimos para cada columna (ej. `DECIMAL(10,2)` para dinero, `VARCHAR(255)` para texto de longitud variable, `TEXT` para textos largos, `BOOLEAN` para valores binarios) para optimizar el almacenamiento y el rendimiento."}
- {"error":"No utilizar transacciones para operaciones que deben ser atómicas.","causa":"Desconocimiento del concepto de atomicidad o de cómo implementar transacciones.","correccion":"Agrupar operaciones relacionadas (ej. insertar un pedido y sus detalles) dentro de un `START TRANSACTION; ... COMMIT;` o `ROLLBACK;` para asegurar que todas se completen con éxito o ninguna lo haga, manteniendo la consistencia de los datos."}
- {"error":"Construir consultas SQL concatenando cadenas de texto directamente con entradas de usuario (SQL Injection).","causa":"Falta de conocimiento sobre vulnerabilidades de seguridad en bases de datos.","correccion":"Utilizar siempre consultas parametrizadas o sentencias preparadas (Prepared Statements) en el código de la aplicación para evitar ataques de inyección SQL, ya que el SGBD diferencia los parámetros de la lógica de la consulta."}
- {"error":"No cerrar las conexiones a la base de datos.","causa":"Olvidar la sentencia de cierre o no manejar excepciones que impidan el cierre.","correccion":"Asegurarse de que las conexiones se cierren siempre, incluso si ocurren errores, utilizando bloques `finally` o mecanismos de gestión automática de recursos (try-with-resources en Java, `with` statement en Python)."}
- {"error":"Almacenar credenciales de base de datos directamente en el código fuente o en archivos de configuración no seguros.","causa":"Falta de buenas prácticas de seguridad.","correccion":"Utilizar variables de entorno, servicios de gestión de secretos (ej. HashiCorp Vault, AWS Secrets Manager) o archivos de configuración con permisos restringidos y fuera del control de versiones."}
- {"error":"Dejar puertos innecesarios abiertos en el firewall.","causa":"Configuración de firewall laxa o falta de conocimiento sobre los puertos que realmente necesita la aplicación.","correccion":"Aplicar el principio de 'mínimo privilegio': cerrar todos los puertos por defecto y abrir solo los estrictamente necesarios (ej. 80, 443, 22 para SSH si es necesario), y restringir el acceso a ellos por IP si es posible."}
- {"error":"No configurar HTTPS o usar certificados autofirmados en producción.","causa":"Desconocimiento de la importancia de la seguridad de la comunicación o de cómo obtener certificados válidos.","correccion":"Obtener certificados SSL/TLS de una autoridad de certificación (CA) reconocida (ej. Let's Encrypt para certificados gratuitos) y configurarlos correctamente en el servidor web para cifrar todo el tráfico de la aplicación."}