Bienvenida conceptos b谩sicos y contexto hist贸rico de las Bases de Datos

1

Bienvenida conceptos b谩sicos y contexto hist贸rico de las Bases de Datos

2

Playground: tu primera consulta en bases de datos

Introducci贸n a las bases de datos relacionales

3

Historia de las bases de datos relacionales

4

Qu茅 son entidades y atributos

5

Entidades de Platzi Blog

6

Relaciones

7

M煤ltiples muchos

8

Diagrama ER

9

Diagrama F铆sico: tipos de datos y constraints

10

Diagrama F铆sico: normalizaci贸n

11

Formas normales en Bases de Datos relacionales

12

Diagrama F铆sico: normalizando Platziblog

RDBMS (MySQL) o c贸mo hacer lo anterior de manera pr谩ctica

13

Instalaci贸n local de un RDBMS (Windows)

14

驴Qu茅 es RDB y RDBMS?

15

Instalaci贸n local de un RDBMS (Mac)

16

Instalaci贸n local de un RDBMS (Ubuntu)

17

Clientes gr谩ficos

18

Servicios administrados

SQL hasta en la sopa

19

Historia de SQL

20

DDL create

21

Playground: CREATE TABLE

22

CREATE VIEW y DDL ALTER

23

DDL drop

24

Playground: VIEW, ALTER y DROP en SQL

25

DML

26

Playground: CRUD con SQL

27

驴Qu茅 tan standard es SQL?

28

Creando Platziblog: tablas independientes

29

Creando Platziblog: tablas dependientes

30

Creando Platziblog: tablas transitivas

Consultas a una base de datos

31

驴Por qu茅 las consultas son tan importantes?

32

Estructura b谩sica de un Query

33

SELECT

34

Playground: SELECT en SQL

35

FROM y SQL JOINs

36

Utilizando la sentencia FROM

37

Playground: FROM y LEFT JOIN en SQL

38

WHERE

39

Utilizando la sentencia WHERE nulo y no nulo

40

Playground: Filtrando Datos con WHERE

41

GROUP BY

42

ORDER BY y HAVING

43

Playground: Agrupamiento y Ordenamiento de Datos

44

El interminable agujero de conejo (Nested queries)

45

驴C贸mo convertir una pregunta en un query SQL?

46

Pregunt谩ndole a la base de datos

47

Consultando PlatziBlog

48

Playground: Prueba Final con PlatziBlog

Introducci贸n a la bases de datos NO relacionales

49

驴Qu茅 son y cu谩les son los tipos de bases de datos no relacionales?

50

Servicios administrados y jerarqu铆a de datos

Manejo de modelos de datos en bases de datos no relacionales

51

Top level collection con Firebase

52

Creando y borrando documentos en Firestore

53

Colecciones vs subcolecciones

54

Recreando Platziblog

55

Construyendo Platziblog en Firestore

56

Proyecto final: transformando tu proyecto en una db no relacional

Bases de datos en la vida real

57

Bases de datos en la vida real

58

Big Data

59

Data warehouse

60

Data mining

61

ETL

62

Business intelligence

63

Machine Learning

64

Data Science

65

驴Por qu茅 aprender bases de datos hoy?

Bonus

66

Bases de datos relacionales vs no relacionales

67

Elegir una base de datos

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Compra acceso a todo Platzi por 1 a帽o

Antes: $249

Currency
$209/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscr铆bete

Termina en:

15D
16H
50M
34S

Creando y borrando documentos en Firestore

52/67
Recursos

Aportes 140

Preguntas 30

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Tipos de datos en Firestore:

  1. String: Cualquier tipo de valor alfanum茅rico

  2. Number: Soporta enteros y flotantes.

  3. Boolenan: Los cl谩sicos valores True y False

  4. Map: Permite agregar un documento dentro de otro.

  5. Array: Permite agregar un conjunto de datos (soporte multi type) sin nombre e identificador.

  6. Null: Indica que no se ha definido un valor.

  7. Timestamp: Permite almacenar fechas (guarda el a帽o, mes, d铆a y hora).

  8. Geopoint: Guarda una localizaci贸n geogr谩fica (coordenadas latitud-longitud).

  9. Reference: Permite referencia un documento (relaciona dos documentos, no importa su colecci贸n).

Tengo 2 a帽os de experiencia con Firestore, y luego de meterme hasta los dientes al punto de mantener contacto con google devs detr谩s del driver de Firestore para Node levantando hilos en Github, dejenme decirles que Firestore solo es excelente cuando quieres maquetar ideas o hacer MVP de un proyecto. En l贸gicas de negocio nivel medio y avanzado es una verdadera decepci贸n. Vayanse a Mongo Atlas definitivamente, ah铆 yo encontr茅 la soluci贸n a todos mis problemas aunque me haya costado mucho m谩s estudio que lo que me tom贸 Firestore.

Tipos de datos en Firestore
鈥 String
鈥 Number
鈥 Boolenan
鈥 Map -> Da la opcion de meter otro document dentro del que ya estas creando
鈥 Array ->Arreglo para meter un grupo de datos que no se ocupa identificador y estructura
鈥 Null -> No se ha definido el valor
鈥 Timestamp
鈥 Geopoint ->Guarda una localizaci贸n geogr谩fica.
鈥 Reference -> Mandar liga a otro documento. Puede ser en la colecci贸n actual u otra colecci贸n

En la startup que funde (https://waypooltech.com/) usamos firebase y realmente ha sido excelente la experiencia con los servicios!!! recomendada

Pregunta de certificacion:
Tipos de datos de FireStore?

  • string
    -number
    -boolean
    -map
    -array
    -null
    -timestamp
    -geopint

Documentaci贸n oficial Firebase:
https://firebase.google.com/docs

Como curiosidad, dentro de un array no puedes meter directamente otro array, pero si puedes meter un map y dentro del map uno o varios arrays m谩s.

Apuntes:
Un ID en un documento, funciona como un N掳 de serie.
Los tipos de datos con los que se pueden trabajar pueden ser de tipo string (como cadenas de texto), number (que acepta tanto valores enteros como decimales), asi como tambi茅n booleanos (que aceptan un true o false, es decir verdadero o falso).
El tipo de dato map en espec铆fico, permite crear un documento dentro de otro documento. El tipo de datos array, como su nombre lo indica acepta un arreglo que a su vez permite contener datos con sus respectivos 铆ndice y valor, similar al map.
El tipo de datos timestamp y el tipo de dato null, funciona de manera muy similar al modelado SQL.
El tipo de dato geopoint, nos permite guardar una localizaci贸n geogr谩fica, algo muy 煤til en aplicaciones como Google maps.
El tipo de datos reference nos envia una 鈥渓iga鈥 a otro documento, es decir funcionaria como una llave for谩nea, haciendo alusi贸n a SQL.

<h3>Tipos de datos</h3>

string todo lo que es texto

number enteros o decimales

boolean true/false

map meter otro documento dentro del documento

array meter grupos de datos sin identificador

null

timestamp fecha y hora

geopoint localizaci贸n geogr谩fica

reference referencia la liga a otro documento. 鈥渓a llave for谩nea鈥

Definitivamente muy buen curso para ser un b谩sico, genial la explicacion acerca de las bases de datos no relacionales!

37. Mis apuntes sobre: 鈥淐reando y borrando documentos en Firestore鈥

Tenemos los siguientes tipos de datos en Firebase

  • String: Permite de 1 a muchos caracteres consecutivos (cadenas de textos).
  • Number: Permite n煤meros enteros o decimales.
  • Boolean: Permite solo los valores -> True o False.
  • Map: Permite almacenar un documento dentro del valor del campo, y puede tener otro m谩s y otro m谩s.
  • Array: Este tipo de campo permite tener adentro una colecci贸n de campos de cualquier tipo y tama帽o.
  • null: Crea un campo con un nombre pero sin un valor.
  • timestamp: Es un campo que guarda como valor fecha (a帽o, mes y d铆a) y hora (hora, minuto, segundo).
  • geopoing: Guarda la latitud y longitud en grados.
  • reference: Referenciar el campo a otro documento que est谩 en otro lugar.

Me parece soprendente que no puedes crear una colecci贸n sin documentos, pero s铆 puedes eliminar todos los documentos de una colecci贸n pero ella seguir谩 ah铆.

Es curioso, no se puede meter un array dentro de un array pero se puede meter un map y dentro de ese map un array

Orden de los tipos de valor
Cuando una consulta incluye un campo con valores de varios tipos, Cloud Firestore usa un orden determinista basado en representaciones internas. La lista siguiente muestra el orden:

**Null **- Valores nulos
**Boolean **-Valores booleanos
**Integer, Floating, Numeric ** Valores de n煤meros enteros y de coma flotante, en orden num茅rico
Valores de fechas
Valores de strings de texto
Valores de bytes
Referencias de Cloud Firestore
Valores de puntos geogr谩ficos
Valores de matrices
Valores de mapas

Si alguien le sirve y le quedo dudas con lo de el tipo de dato map por ac谩 les dejo un video en el caso de Js, al final la representacion de esta nueva estructura de alamcenar datos no es lejano a lo que hacemos con los lengujes de programacion ejemplo:

en programacion tenemos

1- hash generado por el gestor de memoria del disco (5f1s2)
2- Variable o constante
3- Tipo de dato
4- Valor asignado

https://www.youtube.com/watch?v=e2gBknyVJo8&t=916s

en una base de datos NoSql se pueden definir mapas dentro de un registro.
en DynamoDB funciona de la misma manera
Ejemplo:
{
nombre: 鈥淣ombre estudiante鈥,
Apellido: 鈥淎pellido_Estudiante鈥,
Materias:
{
Nombre_Materia : "Nombre1"
Contenido: 鈥淐ontenido de la mteria鈥
}
}

La profundidad con la cual se puede llegar a trabajar depende de cada base de datos

Al principio no encontraba la ventana que estaba mostrando el profesor en la clase y validando me di cuenta que hab铆a cambiado el nombre del bot贸n de 鈥淒atabase鈥 a 鈥淐loud Firestore鈥. Quiz谩s a alguien le sirva de ayuda jejej

Platzi, 驴d贸nde estabas cuando yo sufr铆a en la universidad tratando de programar aplicaciones m贸viles?
Necesitaba estas clases y mejor explicadas no pueden estar ^_^

Bastante sencilla la interacci贸n con este tipo de base de datos, Firestore se ve que es f谩cil de utilizar, los id de los documentos son complejos pero bueno Google asegura que sean 煤nicos.

Excelente v铆deo, entre todas las variables que vimos me llamo la atenci贸n la de Map para crear subagrupaciones y la Geopoint para poder establecer un punto espec铆fico en el mapa, dependiendo la funcionalidad que le demos a la base de datos, estas tendr谩n bastante utilidad.

me aburri del eco xd

Creando y borrando documentos en Firestore

  • El tipo de dato para las cadenas de texto es string .
  • El tipo de dato para los n煤meros es number .
  • Esta el tipo de dato booleano boolean , este permite el true o false .
  • Existe un tipo de dato llamado map , da la opci贸n de crear 鈥渄ocumentos鈥 dentro de un documento. Para asignar un grupo de campos y valores. Permite crear estructuras de datos m谩s complejas.
  • Esta el tipo de dato array , permite indexar valores.
  • El tipo de dato null , que permite dejar un campo con nombre, pero lo define como un valor null.
  • El tipo timestamp , que permite seleccionar una fecha con el formato DD/MM/AAAA HH:MM:SS .
  • El tipo de dato geopoint , se refiere a guardar una localizaci贸n geogr谩fica. Requiere datos de latitud y longitud.
  • El tipo de dato reference , es una forma de relacionar otro documento con mi documento actual.

Creaci贸n de documentos
El formato es el siguiente:
campos 鈫 tipos de datos 鈫 valor(es)
Tipos de datos en Firestore:

  • string 鈫 cualquier valor de tipo texto (alfanum茅rico)
  • number 鈫 cualquier n煤mero
  • boolean 鈫 valores l贸gicos (true/false)
  • map 鈫 permite insertar otros documentos dentro del documento
  • array 鈫 permite insertar distintos valores de distintos tipos en un documento (no tienen id ni nombre)
  • null 鈫 documento vac铆o, modificable despu茅s
  • timestamp 鈫 fecha y hora
  • geopoint 鈫 ubicaci贸n geogr谩fica (latitud y longitud)
  • reference 鈫 permite enlazar (referenciar) a otro documento

Muy visual este gestor de bases de datos no relacionales.

Firebase actualmente es muy diferente por lo cual recomiendo leer la informaci贸n de la pagina oficial. Evitaras muchos inconvenientes.

No se, pero estoy en Firebase, y no aparece lo mismo que esta explicando el profesor. Tal parece que cambio la interfaz.

El sistema escribe JSON por debajo. El tipo map escribe un objeto 鈥榹}鈥 llaves.

Tipo de datos -Orden de clasificaci贸n
Mapa- Por claves y, luego, por valor
Nulo- Ninguno
Referencia- Por elementos de ruta de acceso (colecci贸n, ID de documento, colecci贸n, ID de documento鈥)
String de texto- Orden de bytes con codificaci贸n UTF-8

Entre mas cerca este el cloud de tus clientes,sera mas rapida la respuesta del servidor para tus clientes.
.

  • Google crea un hasj para definir el id predeterminado por colecci贸n.
  • No es necesario un CHAR o VARCHAR, simplemente se le asigna como un STRING

Los contextos de los tipos de datos especiales de Firestore los asoci茅 correctamente.
Recuerdo que en un proyecto se ped铆a determinar la distancia entre dos puntos geogr谩ficos, y en MongoDB se empleaba algo como GEOjson

Firebase ofrece mucho y eso esta excelente, lo explotar茅 a ver hasta donde me permite la cuenta sin cobro, aunque despu茅s de eso planeo consumir este servicio para probar todas sus herramientas.

Esta es un 谩rea de trabajo totalmente nueva para m铆, por lo cual encuentro bastante interesante la presente lecci贸n. Incluye tipos de datos que nunca hab铆a manejado y estoy emocionada de comenzar a trabajar con ellos.

Importa y exporta datos
Puedes usar el servicio administrado de importaci贸n y exportaci贸n de Firestore a fin de recuperar datos borrados de manera accidental y exportar datos para el procesamiento sin conexi贸n. Puedes exportar todos los documentos o solo colecciones espec铆ficas. Asimismo, puedes importar todos los datos de una exportaci贸n o solo colecciones espec铆ficas. Los datos exportados de una base de datos de Firestore se pueden importar a otra base de datos de Firestore. Tambi茅n puedes cargar exportaciones de Firestore en BigQuery.

En esta p谩gina, se describe c贸mo importar y exportar documentos de Firestore mediante el servicio administrado de importaci贸n y exportaci贸n y Cloud Storage. El servicio administrado de importaci贸n y exportaci贸n de Firestore est谩 disponible a trav茅s de la herramienta de l铆nea de comandos de gcloud y las API (de REST y de RPC) de Firestore.

Las entidades en sql son como plantillas que se deben llenar con la misma cantidad de atributos en cambio cada un documento en una base de datos NOSQL puede seguir sus propias reglas y un regrstro no tiene por que ser igual al otro aunque sea de la misma coleccion

Creando documentos, en el campo valor, tenemos restricciones con la ortograf铆a?..tildes, la 帽鈥 para nombres y apellidos

驴Alguien sabe si dejo una base de datos en Firebase y no se utiliza te cobran por eso?

El tipo de documento 鈥淢ap鈥 me recuerda a la definici贸n de clases en cuanto a programaci贸n se refiere.

Desconoc铆a el tipo de datos MAP, permite ingresar dos valores asociados a coordenadas.

Por su interfaz parece un juguete, pero posta que json es complicado!

Documenception!

Definitivamente tiene mucho parecido con el modelo de BD relacional.

Creer铆a conveniente actualizar esta secci贸n del curso, ya que la pagina web a la fecha de hoy, esta totalmente diferente a como se muestra en el video de hace 4 a帽os

Me estaba dando un poco de miedo esta plataforma, pero con esta clase siento que ya estoy empezando a entender. Excelente profesor

  • String --> Para datos de tipo, cadena de datos.
  • Number --> Datos de tipo integer o float
  • Map --> Crea un documento dentro de otro que se ha creado. pErmite realizar estructuras de datos complejas, agregando un doc o objeto JSON dentro del doc que se est谩 creando.
  • Array --> Arreglo para un grupo de datos, para una serie de valor exceto otro array. No es necesario que tenga orden.
  • Geopoint --> Tipo de dato el cual se refiere a guardar una localizaci贸n geogr谩fica

Creaci贸n de documentos en Firestore

Tipos de Datos

  1. String = Texto
  2. Number = Enteros o decimales (flotantes)
  3. Boolean = True / false
  4. Map = Insertar otro documento dentro del documento actual (document insertion)
  5. Array = Collecci贸n de datos
  6. Null = Ausencia de datos en el campo especificado
  7. Timestamp = Fechas (month,day,year)
  8. Geopoint = Localizaci贸n geogr谩fica (latitud, longitud)
  9. Reference = Unir a otro documento

Huy profe que pedazo de clase se tiro, me parecio muy muy productiva esta clase.

80-123 est谩 en Polonia, Europa

TIPO DE DATOS FIRESTORE EN FORMATO JSON

{
'STRING' : "texto",
'NUMBER' : "numeros enteros y flotantes",
'BOOLEAN' : "true or false",
'MAP' : "agregar un documento dentro de otro documento",
'ARRAY' : "agregar un grupo de datos como array",
'NULL' : "valor nulo",
'TIMESTAMP' : "almacena fechas",
'GEOPOINT' : "guarda localizacion punto A y punto B",
'REFERENCE' : "relaciona los documentos"
}

Documentacion oficial del Emulador Local de FireBase que se una en la clase
https://firebase.google.com/docs/emulator-suite

Tipo de datos:

* String, caracteres acepta letras y numeros

* Number, acepta numeros enteros y flotantes

* Boolean, valor booleano

* Map, Es un tipo de valor que permite agregar otros documentos dentro del mismo, algo asi como si fuera un folder y ademas admite dentro de su estructuraa crear otro tipo de maps

* Array, Arreglos son un tipo de datos que no necesariamente se necesita tener un tipo de identificador para cada uno de los datos sino que solamente se van a almacenar distintos valores dentro de este mismo campo, admite distintos campos de valores en excepcion de otro array

* NULL, Significa que el valor del campo va a tener valor nulo 

* TIMESTAMP, Almacena fecha dia mes y a帽o ademas de la hora

* GEOPOINT, Almacena ubicaciones geograficas con latitud y longitud

* Reference, Es el unico campo donde se ve algo basado en relacion en base de datos NoSQL, Esto lo que hace es referenciar de un documento a otro

Aqui puedes acceder a una guia dentro de la pagina de FIREBASE y entender todo los tipos de DOCUMENTS, COLLECTIONS y otro modelos de datos inlcuso hay un canal de youtube de Google que tambien explica detalles especificos.

https://firebase.google.com/docs/firestore/data-model

Aqui puedes escribir datos al mismo tiempo que crea la coleccion, es bases de datos relacional si no esta creada la tabla genera error

Se nota que es bien completo lo que ofrece, firebase. Me ha gustado mucho, se puede ver claramente la analog铆a con lo que hac铆amos en BD relacionales

La base de datos que creo en Firebase, la puedo exportar o guardar en formato que despu茅s lo pueda leer con Workbench sql?, lo digo por que para organizar la estructura se ve muy bien, y despues la puedo escalar en un servidor privado o trasladarlo a otros proveedor cloud

Hice un cuadro resumen por si le sirve a alguien

Si alguien se confundi贸 como yo en firebase DataBase ahora se llama Cloud firestore y no realtime Database.

Firestore ahora esta generando pago con el Plan Blaze para poder crear una base de datos. 馃槮

Esto est谩 buen铆simo, pero la verdad si me estoy confundiendo bastante 馃槬

Muy interesante los diferentes tipos de datos que soporta Firestore.

Si te esta gustando este tema; Platzi tiene toda una carrera dedicada a firebase: https://platzi.com/firebase/

Muy buena DB, parece simple, se ve facil de usar.

Excelente informaci贸n y bastante amigable la plataforma de Firebase.

Muy interesante lo de map, geopoint y reference

ese tipo de dato map hace mas sencillo a la hora de agregar datos , genial!!

Para ampliar los tipos de datos descritos por el profesor en la clase dejo enlace a la Documentaci贸n oficial de Firestore

Interesante herramienta

Firestore una excelente opci贸n para aprender NoSQL.

al momento de generar los documentos, es necesario meter los valores o se pueden ingresar desde la aplicacion ?

funciones de los tipos de datos que se ingresan

Las hab铆a escuchado nombrar, pero nunca hab铆a tenido la oportunidad de verlas

Est谩 genial este tipo de bases de datos, es muy sencillo crear, actualizar y elminiar los registros que creamos!!

interesante!

Me parece genial este tipo de nuevas herramientas para usar bases de datos !!!

Firebase tiene una interfaz muy amigable

La interfaz de Firestore es muy amigable

Esto es hermoso!!! :鈥(

Firestore es una base de datos NoSQL en tiempo real, lo que significa que es ideal para aplicaciones que requieren sincronizaci贸n de datos en tiempo real y escalabilidad. Aseg煤rate de manejar errores y autorizaciones de forma adecuada en tu aplicaci贸n para mantener tus datos seguros y funcionando sin problemas.

Explicaci贸n clara y concisa, muy clara y de gran ayuda.

Tipos de datos

  • String: Texto
  • Number: tipos num茅ricos enteros y flotantes
  • Boolean: Valor binario / True or false
  • Map: Da la opci贸n de meter un documento dentro de un documento
  • Array: Ingresar una serie de valores ( arreglo para ingresar un grupo de datos en el que no nos interesa un identificador).
  • Null: Si quiero tener ese campo pero ahorita tendr谩 un valor nulo
  • Timestamp: Para almacenar una fecha d铆a mes a帽o y hora.
  • Geopoint: Guardar una localizaci贸n geogr谩ficas (grados coordenadas Latitud, longitud)
  • Reference: Referencia a otro documento de nuestra u otra colecci贸n

Geopoint : Tipo de dato el cual se refiere a guardar una localizaci贸n geogr谩fica, latitud, longitud y se mide en grados.

El tipo de dato geopoint tambi茅n se asegura que el n煤mero ingresado sea una coordenada que existe. Por ejemplo, no se puede agregar una latitud mayor a 90.

firestore esta genial!

Una de las ventajas de las bases de datos relacionales es la cercan铆a y lo parecido a la vida real usando, bases de datos, documentos y colecciones

Tipos de datos

La mayor铆a de los tipos de datos de sql son iguales a los de Firestore, con algunas excepciones

  • Number: Contempla los n煤meros enteros y los n煤meros con decimales
  • Map: Es para crear documentos dentro de otros documentos
  • Array: Agrega un conjunto de datos como forma de array
  • GeoPoint: Agrega la ubicaci贸n geogr谩fica de alg煤n lugar
  • Reference: Sirve como la llave for谩nea, Referencia al documento de alguna colecci贸n

Encontr茅 este link con informaci贸n sobre el tema de como crear una base de datos en Firebase:

https://www.acontracorrientech.com/firebase-guia-practica-parte-1/

Es muy sencillo usar FIREBASE y su intefaz mil veces mas moderna que las DBRM es mucho mas ameno a la vista.

FireStore es sencillo

Firestone una plataforma bastante sencilla de manejar hasta ahora!

Ya hab铆a utilizado firebase en m煤ltiples ocasiones, si hubiese visto esta clase antes鈥 cuantos dolores de cabeza me hubiese ahorrado.

Si deseas eliminar una colecci贸n completa, solo es necesario repetir los pasos:

Nos vamos en la esquina superior y presionamos los tres puntos.
Damos click en 鈥楨liminar colecci贸n鈥.
Nos salta un aviso en el que ponemos el ID de la colecci贸n (en este caso es people) y damos click en 鈥楨liminar鈥.

El tipo de dato GeoPoint, permite el decimal, si no, no podriamos ubicar muchas direcciones o locaciones.

Excelente explicacion acerca de los tipos de datos que se encuentran en firestore, que en el fondo se parecen a los tipos de datos que se encuentran en BD relacionales.

Me parece que a la mitad del video se baja un poco el volumen, cuando empieza a explicar el geopoint 馃憖

Me parece que no est谩 el tipo de dato BLOB, o es que no lo veo

Se ve que puede ser muy agradable trabajar en esa plataforma de base de datos

references

Tipo de dato reference.

El tipo de dato reference es como un foreign key en una base de datos relacional

Es muy sencillo y la interfaz muy amigable!