UNIDAD 3
BASE DE DATOS NO RELACIONALES
1. Tema: Integración de una base de datos no relacional en un sistema.
2. Código de la práctica:
3. Duración de la práctica: 10
4. Fundamento de la práctica: Implementación de CRUD con MONGODB y un lenguaje de
programación como PHP, Python o JAVA
5. Objetivos a alcanzar: Conocer los beneficios en la implementación de base de datos no
relacionales mediante la selección de tecnología adecuada para el desarrollo y despliegue de
aplicaciones web robustas.
6. Evaluación de aprendizaje:
• Se evaluará considerando el 75% el procedimiento y el 25% el resultado de la práctica de
la nota asignada según el sistema de evaluación del PEA.
7. Conocimientos previos:
• Manejo de un lenguaje de programación
• Generalidades de base de datos no relacionales
• Diferencias de los tipos de base de datos no relacionales
8. Preparación previa del estudio:
• Investigar la estructura del CRUD de base de datos no relacionales
• Identificar las herramientas contempladas en base de datos no relacionales.
• Diferenciar los tipos de base datos
9. Normas de seguridad en la práctica:
• Mantener la cordialidad y educación en clase.
• Respetar las opiniones y partición de los demás.
• Participación activa de los estudiantes.
• Manejar normas de seguridad en laboratorio o manejo de equipos tecnológicos.
10. Procedimientos a emplear:
• Identificar las características del CRUD con MONGODB y un lenguaje de programación
como PHP, Python o JAVA
• Seleccionar una base de datos NoSQL
• Diseñar la estructura de datos y Crea la interfaz de usuario
• Implementar la funcionalidad CRUD y Realiza pruebas y depuración
Desarrollo de la Práctica 4: Integración de una base de datos
Tema: Integración de una base de datos no relacional en un sistema.
1. Producto: El estudiante desarrollará un sistema con la integración de una base de datos no
relacional como MongoDB.
2. Componentes: Cuaderno de trabajo, pizarra, marcadores, proyector, computador con
herramientas de Xamp, Apache, MongoDB.
1
3. Elaboración de material P.O.P.
El estudiante para realizar la actividad práctica debe seguir los siguientes pasos:
a. Abrir la herramienta MongoDB en el cual debe ingresar la URI y presionar el botón
CONNECT
b. En la opción Databases dar click en +, seleccionando Create Database con el nombre
“veterinaria”
c. Una vez creada la base de datos dar click “Create collection” y colocar el nombre “doctor”
d. Dar click posteriormente en “import data” y seleccionar el archivo con datos para la tabla
con la extensión .csv
2
e. Listo los datos almacenados dando click en el botón importar verificando los tipos de
datos
f. Generar en visual Code el proyecto “crud_veterinaria” para crear el archivo y escribir la
programación en INDEX.PHP
<?php
require_once "./clases/Conexion.php";
include "./clases/Crud.php";
$crud = new Crud();
$datos = $crud->mostrarDatos();
//print_r($datos);
?>
<?php include "./header.php";?>
<div class="container">
<div class="row">
<div class="col">
<div class="card mt-4">
<div class="card-body">
<h2> CRUD MONGO</h2>
<a href="agregar.php" class= "btn btn-primary">
<i class="fa-solid fa-plus"></i> Agregar un registro </a>
<hr>
<table class ="table table-sm table-hover table-bordered">
<thead>
<th>Cedula </th>
3
<th>Nombres </th>
<th>Apellidos </th>
<th>Editar </th>
<th>Eliminar </th>
</thead>
<tbody>
<?php
foreach ($datos as $item){
?>
<tr>
<td><?php echo $item->paterno;?> </td>
<td>
</td>
<td>
</td>
<td class="text-center">
<form action ="actualizar.php" method ="post">
<input type="text" hidden
value="<?php echo $item->_id; ?>" name="id"/>
<button class="btn btn-warning">
<i class="fa-solid fa-pen-to-square"></i>Editar
</button>
</form>
</td>
<td class="text-center">
<form action ="eliminar.php" method ="post">
<input type="text" hidden
value="<?php echo $item->_id; ?>" name="id"/>
<button class="btn btn-danger">
<i class="fa-solid fa-trash"></i> Eliminar
</button>
</form>
</td>
</tr>
<?php }
?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<?php include "./scripts.php" ?>
g. Crear el archivo y escribir la programación en AGREGAR.PHP – VISTA
<?php include "./header.php";?>
4
<div class="container">
<div class="row">
<div class="col">
<div class="card mt-4">
<div class="card-body">
<h2> AGREGAR NUEVO REGISTRO</h2>
<hr>
<a href="index.php" class="btn btn-outline-info">
<i class="fa-solid fa-backward"></i> Regresar </a>
<form action ="./procesos/insertar.php" method ="post">
<label for="cedula"> cedula
</label>
<input type="text" class="form-control" id="cedula" name="cedula"></input>
<label for="nombre"> Nombre
</label>
<input type="text" class="form-control" id="Nombre" name="Nombre"></input>
<label for="apellido"> apellidos
</label>
<input type="text" class="form-control" id="apellidos" name="apellidos"></input>
<button class="btn btn-primary mt-3">
<i class="fa-solid fa-plus"></i>Agregar
</button>
</form>
</div>
</div>
</div>
</div>
</div>
<?php include "./scripts.php" ?>
h. Crear el archivo y escribir la programación en INSERTAR.PHP – PROCESO
<?php
include "../clases/Conexion.php";
include "../clases/Crud.php";
$Crud = new Crud();
$datos = array(
"paterno" => $_POST['cedula'],
"materno" => $_POST['cedula'],
"nombre" => $_POST['cedula'],
"fecha_nacimiento" => $_POST['cedula']
);
5
$respuesta = $Crud->insertarDatos($datos);
if($respuesta->getInsertedId() > 0){
header("location:../index.php");
}else{
?>
<script>
alert("no se inserto");
</script>
<?php
}
?>
i. Crear el archivo y escribir la programación en CRUD.PHP
<?php
class Crud extends Conexion{
public function mostrarDatos(){
try{
$conexion = parent::conectar();
$coleccion = $conexion->personas;
$datos = $coleccion->find();
return $datos;
}catch(\Throwable $th){
return $th->getMessage();
}
}
public function insertarDatos($datos){
try{
$conexion = parent::conectar();
$coleccion = $conexion->personas;
$resultado = $coleccion->insertOne($datos);
return $resultado;
}catch(\Throwable $th){
return $th->getMessage();
}
}
public function obtenerDatos($id){
try{
$conexion = parent::conectar();
$coleccion = $conexion->personas;
$datos = $coleccion->findOne(
array('_id' => new MongoDB\BSON\ObjectId($id)
));
return $datos;
}catch(\Throwable $th){
return $th->getMessage();
6
}
}
public function eliminarD($id){
try{
$conexion = parent::conectar();
$coleccion = $conexion->personas;
$respuesta = $coleccion->deleteOne(
array(
'_id'=> new MongoDB\BSON\ObjectId($id)
)
);
return $respuesta;
}catch(\Throwable $th){
return $th->getMessage();
}
}
public function actualizarD($id, $datos){
try{
$conexion = parent::conectar();
$coleccion = $conexion->personas;
$respuesta = $coleccion->updateOne(
['_id'=> new MongoDB\BSON\ObjectId($id)], [
'$set' => $datos
]
);
return $respuesta;
}catch(\Throwable $th){
return $th->getMessage();
}
}
}
?>
j. Crear el archivo y escribir la programación en ELIMINAR.PHP – VISTA
<?php
include './clases/Conexion.php';
include './clases/Crud.php';
include "./header.php";
$crud = new Crud();
$id= $_POST['id'];
$datos = $crud -> obtenerDatos($id);
//echo $datos->nombre;
?>
7
<div class="container">
<div class="row">
<div class="col">
<div class="card border-danger mt-4">
<div class="card-body">
<h2> ELIMINAR REGISTRO</h2>
<hr>
<a href="index.php" class="btn btn-outline-info">
<i class="fa-solid fa-backward"></i> Regresar </a>
<table class ="table table-sm table-hover table-bordered">
<thead>
<th>Cedula </th>
<th>Nombres </th>
<th>Apellidos </th>
</thead>
<tbody>
<tr>
<td>
<?php echo $datos->paterno; ?>
</td>
<td>
<?php echo $datos->materno; ?>
</td>
<td>
<?php echo $datos->nombre; ?>
</td>
</tr>
</table>
<hr>
<div class="alert alert-danger" role="alert">
<p>esta seguro de eliminar?</p>
<p>Una vez eliminado no puede recuperar</p>
</div>
<form action ="./procesos/eliminarP.php" method ="post">
<input type="text" hidden
value="<?php echo $datos->_id; ?>" name="id"/>
<button class="btn btn-danger">
<i class="fa-solid fa-trash"></i> Eliminar
</button>
</form>
</div>
</div>
</div>
8
</div>
</div>
<?php include "./scripts.php" ?>
k. Crear el archivo y escribir la programación en ELIMINARP.PHP – PROCESO
<?php
include '../clases/Conexion.php';
include '../clases/Crud.php';
$crud = new Crud();
$id = $_POST['id'];
$respuesta = $crud-> eliminarD($id);
if($respuesta->getDeletedCount() > 0){
header("location:../index.php");
}else{
?>
<script>
alert("no se elimino");
</script>
<?php
}
?>
l. Crear el archivo y escribir la programación en ACTUALIZAR.PHP – VISTA
<?php
include './clases/Conexion.php';
include './clases/Crud.php';
include "./header.php";
$crud = new Crud();
$id= $_POST['id'];
$datos = $crud -> obtenerDatos($id);
//echo $datos->nombre;
?>
<div class="container">
<div class="row">
<div class="col">
<div class="card mt-4">
<div class="card-body">
<h2> ACTUALIZAR REGISTRO</h2>
<hr>
<a href="index.php" class="btn btn-outline-info">
<i class="fa-solid fa-backward"></i> Regresar </a>
<form action ="./procesos/actualizarP.php" method ="post">
9
<input type="text" hidden
value="<?php echo $datos->_id; ?>" name="id"/>
<label for="cedula"> paterno
</label>
<input type="text" class="form-control" id="paterno" name="paterno"
value="<?php echo $datos->paterno; ?> "></input>
<label for="nombre"> materno
</label>
<input type="text" class="form-control" id="materno" name="materno"
value="<?php echo $datos->materno; ?> "></input>
<label for="apellido"> nombre
</label>
<input type="text" class="form-control" id="nombre" name="nombre"
value="<?php echo $datos->nombre; ?> "></input>
<button class="btn btn-warning mt-3">
<i class="fa-solid fa-pen-to-square"></i>Actualizar
</button>
</form>
</div>
</div>
</div>
</div>
</div>
<?php include "./scripts.php" ?>
m. Crear el archivo y escribir la programación en ACTUALIZARP.PHP – PROCESO
<?php
include "../clases/Conexion.php";
include "../clases/Crud.php";
$crud = new Crud();
$datos = array(
"paterno" => $_POST['paterno'],
"materno" => $_POST['materno'],
"nombre" => $_POST['nombre'],
"fecha_nacimiento" => $_POST['paterno']
);
$id = $_POST['id'];
$respuesta = $crud -> actualizarD($id, $datos);
//preguntar si hubo al menos 1 modificacion
//pregunta matchCount no se modificacion pero se actualizo con la misma informacion
if($respuesta->getModifiedCount() > 0 || $respuesta -> getmatchedCount() >0){
10
header("location:../index.php");
}else{
?>
<script>
alert("no se actualizo");
</script>
<?php
}
?>
n. Finalmente probar la programación realizada mediante un navegador web y probar el
CRUD de veterinaria.
11. Bibliografía:
Básica
• Pandora FMS. (2021). Bases de datos NoSQL: Guía con las ventajas y desventajas. Recuperado
el 27 de marzo de 2023, de https://pandorafms.com/blog/es/bases-de-datos-nosql/
• Laudon, K. C. (1996). Administración de los sistemas de información: organización y tecnología.
Pearson Education.
Complementaria
• Crehana. (2022). ¿Qué es un web service y cómo funciona? [2022]. Recuperado el 27 de marzo
de 2023, de https://www.crehana.com/blog/transformacion-digital/que-es-web-service
• Idempiere. (2023). Community Powered Enterprise - Free Open Source ERP and CRM.
Recuperado el 27 de marzo de 2023, de https://www.idempiere.org/
11