0% encontró este documento útil (0 votos)
14 vistas34 páginas

Pro401 Documento S6

Definicion de una base de datos SLQ vs No SQL Operaciones CRUD
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas34 páginas

Pro401 Documento S6

Definicion de una base de datos SLQ vs No SQL Operaciones CRUD
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 34

TALLER DE

APLICACIONES MÓVILES

SEMANA 6 BASE DE DATOS.


ESCUELA DE INGENIERÍA Y CONSTRUCCION

Director: Marcelo Lucero

ELABORACIÓN

Experto disciplinar: Javier Miles

Diseño instruccional: Felipe Molina

VALIDACIÓN

Experto disciplinar: Andrés de Alcázar

Jefa de Diseño Instruccional: Alejandra San Juan Reyes

EQUIPO DE DESARROLLO

AIEP

AÑO

2021

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 2


Tabla de contenidos

Aprendizaje esperado de la semana ................................................................................... 4


Introducción ................................................................................................................................ 4
1. -Definición de una base de datos ............................................................................. 5
2. -SQL vs NoSQL ............................................................................................................... 5
3. -Uso de base de datos SQLite con Room de Android vs SQLiteOpenHelper
6
4. -Base de datos en tiempo real firebase, cloud firestore y sus diferencias .. 16
5. -Tecnologías para la interoperabilidad de sistemas: JSON, REST .................28
6. -Operaciones CRUD ....................................................................................................29
7. -Utilización de servicios web desde un dispositivo móvil ................................29
Conclusiones ............................................................................................................................. 31
Referencias ................................................................................................................................32

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 3


Aprendizaje esperado de la semana

Utilizar una base de datos en la nube, considerando almacenamiento de datos


desde dispositivo móvil.

Introducción
• ¿Cómo interopero con otros sistemas?
• ¿Cómo almacenar datos en un dispositivo móvil?

• ¿Qué alternativas de almacenamiento tengo?

Durante esta semana, nos dedicaremos a dar respuesta a las interrogantes

anteriores, utilizando bases de datos locales y en la nube.

Visita el proyecto Inicial en Github de la semana 6, en aieponline/semana6: Cómo


conectar tu aplicación a una Realtime database de Firebase (github.com), escrito
en lenguaje kotlin. En el presente documento, te presentaremos cómo se realiza

con Java, y en el video, podrás ver cómo realizar en kotlin, para que puedas

decidir qué lenguaje es de tu preferencia.

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 4


1. -Definición de una base de datos
“Una base de datos es una colección organizada de información estructurada,
o datos, típicamente almacenados electrónicamente en un sistema de
computadora. Una base de datos es usualmente controlada por un sistema de

gestión de base de datos (DBMS). En conjunto, los datos y el DBMS, junto con
las aplicaciones que están asociados con ellos, se conocen como un sistema de

base de datos, que a menudo se reducen a solo base de datos

Los datos dentro de los tipos más comunes de bases de datos en

funcionamiento hoy en día se modelan típicamente en filas y columnas en una

serie de tablas para que el procesamiento y la consulta de datos sean eficientes.


Luego se puede acceder, administrar, modificar, actualizar, controlar y

organizar fácilmente los datos. La mayoría de las bases de datos utilizan

lenguaje de consulta estructurado (SQL) para escribir y consultar datos.”

(Oracle, s.f)

2. -SQL vs NoSQL
Las bases de datos SQL son relacionales, es decir, sus datos están relacionados
entre sí por medio de llaves primarias/foráneas y son almacenadas como texto
en archivos físicos y de manera estructurada la cual llamamos tablas, las cuales a

su vez, constan de registros.

Estas Bases de Datos gestionan (crear, modificar, eliminar) los datos, mediante el
lenguaje SQL (Structured Query Language).

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 5


NoSQL, es un acrónimo de “Not Only SQL”, los cuales poseen la característica de
ser flexible para almacenar distintos tipos de datos, de manera no estructurada
como documentos de texto, Word o Excel, localizaciones geográficas,

3. -Uso de base de datos SQLite con Room de Android vs


SQLiteOpenHelper

“Room es una librería de acceso a datos SQLite, el cual implementa una capa

intermedia entre la base de datos y la aplicación. De esta manera, se evitan los

problemas de SQLite sin perder las ventajas de su uso.

Room funciona con una arquitectura cuyas clases se marcan con notaciones

preestablecidas.

Las partes de las que se compone Room son las siguientes:

Entity: son clases que definen las tablas de la base de datos y de las entidades

a utilizar.

DAO: interfaces que definen los métodos utilizados para acceder a la base de

datos.

RoomDatabase: sirve de acceso a la base de datos SQLite a través de los DAOs


definidos.

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 6


Además, es recomendable utilizar una clase intermedia a la cual denominamos
Repository cuya finalidad es administrar las diferentes fuentes de datos.

Notaciones de ROOM

Para que se detecten qué clases tendrán que ser tratadas por esta librería y

para indicar ciertas configuraciones debemos utilizar anotaciones. Las

principales son las siguientes:

@Database: para indicar que la clase será el Database. Además, dicha clase
debería ser abstracta y heredar de RoomDatabase.

@Dao: se utiliza para las interfaces de los DAOs.

@Entity: indica que la clase es una entidad.

@PrimaryKey: indica que el atributo al que acompaña será la clave primaria de

la tabla. También podemos establecer que se asigne automáticamente si la


incluimos así: @PrimaryKey(autoGenerate = true)».

@ColumnInfo: sirve para personalizar la columna de la base de datos del

atributo asociado. Podemos indicar, entre otras cosas, un nombre para la

columna diferente al del atributo.

@Ignore: previene que el atributo se almacene como campo en la base de

datos.

@Index: para indicar el índice de la entidad.

@ForeingKey: indica que el atributo es una clave foránea relacionada con la

clave primaria de otra entidad.

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 7


@Embedded: para incluir una entidad dentro de otra.

@Insert: notación para los métodos de los DAOs que inserten en la base de
datos.

@Delete: notación para los métodos de los DAOs que borren en la base de

datos.

@Update: notación para los métodos de los DAOs que actualicen una

entidad en la base de datos.

@Query: notación para un método del DAO que realice una consulta en la

base de datos, la cual deberemos especificar.” (Recio, 2019)

SQLiteOpenHelper

Para utilizar SQLiteOpenHelper, crea una nueva clase, dando clic con el derecho

sobre el package, y luego NEW->JAVA CLASS

I LUSTRACIÓN 1: MILES, J. (2021). C REAR UNA CLASE

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 8


I LUSTRACIÓN 2 MILES, J. (2021). C REAR UNA CLASE

Dentro de la clase recién creada, hereda desde SQLiteOpenHelper, y


posteriormente implementa los métodos.

I LUSTRACIÓN 3 MILES, J. (2021). IMPLEMENTAR MÉTODOS

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 9


Los Métodos que ha creado, son oncreate (se ejecuta cuando se crea la base de
datos), y on Upgrade (se ejecuta cuando hay un cambio de versión de la base de
datos). En la siguiente imagen, se demuestra la implementación.

I LUSTRACIÓN 4 MILES, J. (2021). SELECCIONAR MÉTODOS INICIALES

Ahora, crea un constructor, que reciba un contexto, y los Métodos que ha creado,

son: onCreate (se ejecuta cuando se crea la base de datos), y onUpgrade (se
ejecuta cuando hay un cambio de versión de la base de datos). En la siguiente

imagen, se demuestra la implementación.

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 10


I LUSTRACIÓN 5 MILES, J. (2021). C REAR UNA CLASE

Entonces, de acuerdo con la imagen anterior, se ha creado un constructor que


recibe un contexto.

Para crear una tabla, entonces debes realizar la consulta CREATE TABLE, dentro

de onCreate, como demuestra la siguiente figura:

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 11


I LUSTRACIÓN 6 MILES, J. (2021). MÉTODO ONCREATE .

Posteriormente, ejecutar la instrucción SQL, con db.execSQL, el cual no retorna

valores. Se utiliza para ejecutar consultas que no retornen valores.

Por ejemplo, si quisiéramos agregar un método para agregar un animal, sería de

la siguiente manera:

I LUSTRACIÓN 7 MILES, J. (2021). C REAR UNA CLASE

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 12


Para utilizar la base de datos, entonces se debe instanciar por medio de un objeto,

desde alguna parte del código.

En nuestro caso, ejecutaremos la instancia en la pantalla MenuActivity.java.


Instanciando la clase BaseDatos, y pasándole como parámetro, el contexto.

I LUSTRACIÓN 8 MILES, J. (2021). C REAR UNA CLASE

Ejecuta la aplicación, y posteriormente verifica los resultados de la creación de la

base de datos, y la inserción de nombres, por medio de DataBase Inspector,

siguiendo los siguientes pasos:

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 13


I LUSTRACIÓN 9 MILES, J. (2021). C REAR UNA CLASE

Ya sabes cómo trabajar con una base de datos, con INSERT. Mismo caso, será con

UPDATE y DELETE, los cuales no retornan datos. El único distinto, será SELECT, el
cual debe rescatar los datos en un objeto. Para ello, sería de la siguiente manera:

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 14


I LUSTRACIÓN 10 MILES, J. (2021). C REAR UNA CLASE

Verifica en Logcat, el resultado:

I LUSTRACIÓN 11 MILES, J. (2021). C REAR UNA CLASE

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 15


4. -Base de datos en tiempo real firebase, cloud firestore y sus
diferencias
Firebase Realtime database es el primer producto lanzado por Google, el cual se

destaca por una alta eficiencia, baja latencia y capacidades para realizar consultas
en tiempo real. Por otro lado, Firestore es una base de datos dentro de la

clasificación de NoSQL, la cual tiene una estructura de fácil comprensión y diseño.

Para conectar con una base de datos firebase, debes contar con una cuenta de

Gmail, y dirigirte a:

http://console.firebase.google.com/

Agrega un proyecto, especificando el nombre de tu proyecto, como indica la

siguiente imagen:

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 16


En la siguiente imagen, puedes especificar si utilizarás analítica para tu proyecto.

En este caso, no las utilizaremos.

Una vez que se haya creado tu proyecto, entonces puedes

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 17


Crea una base de datos firebase, como indica la siguiente imagen:

A continuación, inicia en modo de prueba, para que no pida las credenciales (esto

es un ambiente de desarrollo y testing). Esta opción NUNCA se debe hacer en

producción.

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 18


A continuación, selecciona y habilita en dónde se habilitará la base de datos.

Considera el concepto de redes LATENCIA.

Ya puedes ver las colecciones y documentos (o crearlos)

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 19


Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 20
En el costado izquierdo, aparecerá el asistente, para conectar a la base de datos
firebase.

Dentro de las distintas opciones que está ahí, aparecen elementos para

autenticación, base de datos en tiempo real, y Cloud Firestore.

Sigue los pasos que te entrega el tutorial para conectar, la aplicación con firestore,

agregar el sdk, e inicializar la base de datos.

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 21


Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 22
Cuando presionas el paso 1, entonces te pedirá a qué proyecto deseas conectar,
como indica la siguiente imagen:

Una vez que conectas con el proyecto, entonces quedará en espera de la

conexión con tu aplicación, como indica la siguiente imagen.

Una vez finalizado, te indicará que se ha creado el enlace, para conectar con la

aplicación:

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 23


Una vez hecho clic en conectar, aparecerá una página indicando que ya está listo

para ser utilizado

Regresa a tu aplicación Android Studio, y verás que ha cambiado el estado del


paso 1:

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 24


Ahora, resta agregar el paso 2, haciendo clic en él. Lo que´hará, es agregar unas

líneas en el gestor de dependencias gradle, para que las agregue de manera

automática. Basta con hacer click en aceptar cambios.

Verifica que se realiza la instalación del sdk.

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 25


Sigue con el paso 3 y 4, y recuerda realizar las importaciones correspondientes.

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 26


Ejecuta la aplicación, y verifica en LogCat (ALT+6), los resultados de Log.d (debug)

y Log.w (Warning).

Verifica que se haya agregado el documento, desde la consola de firebase.

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 27


5. -Tecnologías para la interoperabilidad de sistemas: JSON,
REST
Para interoperar con otros sistemas, es necesario intercambiar datos en algún
formato específico. Sin embargo, todos los lenguajes son capaces de leer un

archivo de texto. Existe un formato llamado JSON, el cual es el acrónimo para

JavaScript Object Notation, o bien en español, Notación de Objetos Javascript, el

cual establece que para identificar un arreglo, se realiza por medio de las llaves

cuadradas [ ], y para declarar objetos del tipo clave/valor, se realiza por medio de
las llaves curvas { }, estableciéndose como {“clave”:”valor}. De esta manera, un

conjunto de objetos, sería:

[{“clave”:”valor},{“clave1”:”valor},{“clave2”:”valor}]

Por otra parte, REST es el acrónimo para REpresentational State Transfer, el cual

es una interfaz de programación de aplicaciones (API), utilizando el protocolo

HTTP. Normalmente, se realizan envíos por medio de archivos estructurados,


como XML (eXtensible Markup Language).

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 28


6. -Operaciones CRUD
Cuando hablamos de CRUD, es el acrónimo para Create Read Update y Delete;
Vale decir, las funcionalidades básicas que debe realizar un software, para

interactuar con la base de datos.

Para ello, debes crear una clase, que contenga los métodos, y que reciban los

datos para cada operación. Por ejemplo, para agregar, recibe un objeto. Para
eliminar, recibes solamente el ID el cual quieras eliminar. Para actualizar, recibe el

objeto completo, y reemplaza los datos.

7. -Utilización de servicios web desde un dispositivo móvil


Para poder obtener un servicio web, (como por ejemplo un archivo json), se
puede realizar por medio de consultas simples, como aparece en el siguiente

código.

String url = "http://my-json-feed";

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest


(Request.Method.GET, url, null, new
Response.Listener<JSONObject>() {

@Override
public void onResponse(JSONObject response) {
textView.setText("Response: " + response.toString());
}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
// TODO: Handle error

}
});

// Access the RequestQueue through your singleton class.


MySingleton.getInstance(this).addToRequestQueue(jsonObjectRequest);
NOTA: Recuerda agregar el permiso correspondiente INTERNET, en el archivo
Manifest.

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 29


Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 30
Conclusiones

El uso y selección de una base de datos local o remota, relacional o no relacional,


es muy importante, para el buen desempeño de tu aplicación. Muchas empresas

importantes (como Facebook) han modificado su modificado su motor, para


obtener un mejor desempeño. Otros motores de dato como Cassandra y

MongoDB, han dado muy buenos resultados con grandes volúmenes de dato.

Recuerda clonar desde el repositorio aieponline/semana6: Cómo conectar tu


aplicacion a una Realtime database de Firebase (github.com), para que puedas

probar la aplicación de ejemplo.

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 31


Referencias

Android Developers. (s. f.). Android.com. Recuperado 17 de agosto de 2021, de


http://developer.android.com

Android fragmento (Fragmento). (s. f.-b). w3big. Recuperado 7 de septiembre de


2021, de http://www.w3big.com/es/android/android-fragment.html

Aprende Java Classes en 1 hora (y cinco minutos). (2020, mayo 25).

Cómo configurar las opciones para desarrolladores en el dispositivo. (s. f.). Android.com.

Recuperado 17 de agosto de 2021, de


https://developer.android.com/studio/debug/dev-options?hl=es-419

Eclipse Packages. (s. f.). Eclipse.org. Recuperado 17 de agosto de 2021, de


https://www.eclipse.org/downloads/packages/

Endicott, S. (2021, julio 6). Don’t wait until Windows 11 — here’s how to run Android apps

on your PC right now. Windows Central. https://www.windowscentral.com/dont-wait-


until-windows-11-heres-how-run-android-apps-your-pc-right-now

Install Android Studio. (s. f.). Android.com. Recuperado 17 de agosto de 2021, de

https://developer.android.com/studio/install

Ionic. (s. f.). Cross-platform mobile app development: Ionic framework.

Ionicframework.com. Recuperado 17 de agosto de 2021, de https://ionicframework.com/

Java SE Development Kit 8 - Downloads. (s. f.). Oracle.com. Recuperado 17 de agosto de


2021, de https://www.oracle.com/cl/java/technologies/javase/javase-jdk8-

downloads.html

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 32


Kotlin command-line compiler. (s. f.). Kotlinlang.Org. Recuperado 17 de agosto de 2021,
de https://kotlinlang.org/docs/command-line.html

Meijer, E. (s. f.). Static typing where possible, dynamic typing when needed: The end of the
cold war between programming languages. Archive.org. Recuperado 17 de agosto de

2021, de
https://web.archive.org/web/20070216025556/http://pico.vub.ac.be/~wdmeuter/RDL0

4/papers/Meijer.pdf

Nieto, J. G. (2019, octubre 22). APKOnline, un emulador de Android online gratuito para
probar apps y juegos desde el navegador. Xatakandroid.com; Xataka Android.

https://www.xatakandroid.com/aplicaciones-android/apkonline-emulador-android-
online-gratuito-para-probar-apps-juegos-navegador

No title. (s. f.). Java.com. Recuperado 17 de agosto de 2021, de

https://www.java.com/es/download/help/whatis_java.html

React Native. (s. f.). Reactnative.dev. Recuperado 17 de agosto de 2021, de

https://reactnative.dev/

Recio, A. P. (2019, marzo 4). Persistencia de datos en Android con Room - Adictos al
trabajo. Adictosaltrabajo.com.

https://www.adictosaltrabajo.com/2019/03/04/persistencia-de-datos-en-android-con-
room/

Strobel, S., & Uhl, T. (1996). GNU Emacs. En Linux Unleashing the Workstation in Your PC
(pp. 287-324). Springer US.

Visual Studio Code - code editing. Redefined. (2016, abril 14). Visualstudio.com.

https://code.visualstudio.com/

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 33


Vue Native. (s. f.). Vue-native.io. Recuperado 17 de agosto de 2021, de https://vue-
native.io/

¿Qué es una base de datos? (s/f). Oracle.com. Recuperado el 13 de septiembre de 2021,


de https://www.oracle.com/cl/database/what-is-database/

Taller de Aplicaciones Móviles • Semana 6 – BBDD Proyecto 34

También podría gustarte