# data[].attributes.body
Una base de datos es una colección organizada y estructurada de información que se puede acceder y gestionar fácilmente. Los datos se administran a través de un sistema de gestión de base de datos (DataBase Management System o DBMS).

# data[].attributes.headline
¿Cuáles son las principales diferencias entre bases dedatos relacionadas y no relacionadas?

# data[].attributes.subject
¿Cuáles son las principales diferencias entre bases dedatos relacionadas y no relacionadas?

# data[].attributes.body
Las bases de datos relacionales se basan en la organización de la información en partes pequeñas que se integran mediante identificadores; a diferencia de las bases de datos no relacionales que, como su nombre lo indica, no tienen un identificador que sirva para relacionar dos o más conjuntos de datos.
FUENTE:
https://www.pragma.com.co/academia/lecciones/bases-de-datos-relacionales-vs.-no-relacionales#:~:text=Las%20bases%20de%20datos%20relacionales%20se%20basan%20en%20la%20organizaci%C3%B3n,o%20m%C3%A1s%20conjuntos%20de%20datos.

# data[].attributes.attachment_link.readable_text
Es muy común que los desarrolladores de software estemos en la situación de elegir entre bases de datos relacionales y no relacionales. No es para verlo como un dilema o pensar que dependiendo de la decisión vamos a fracasar, en realidad con cualquiera de las dos opciones, es posible construir nuestro sistema, dependiendo de lo que queramos.

Entonces surgen diferentes interrogantes: ¿Es importante saber las diferencias entre ambas bases de datos? ¿Cuál deberíamos usar en cada caso? Estas son preguntas bastante interesantes, puesto que un buen diseño de la base de datos es un factor de alta influencia con respecto a la calidad del proyecto. Dependiendo de la naturaleza de éste, se debe elegir la base de datos, ya que las dos tienen diferentes características. Lee: 3 tipos de análisis de datos para mejorar la toma de decisiones

Para conocer un poco de historia, las bases de datos relacionales se comenzaron a utilizar en los años 80; a diferencia de las no relacionales que se están empezando a usar y tuvieron un importante crecimiento entre 2012 y 2015. Sin embargo, hoy sigue siendo más popular la primera opción.

Bases de Datos relacionales

Son una colección de elementos de datos organizados en un conjunto de tablas formalmente descritas, desde donde se puede acceder a los datos o volver a montarlos de muchas maneras diferentes sin tener que reorganizar las tablas de la base. La interfaz estándar de programa de usuario y aplicación a una base de datos relacional, es el Lenguaje de Consultas Estructuradas (SQL). Los comando SQL se utilizan tanto para consultas interactivas como para obtener información de una base de datos relacional y la recopilación de datos para informes.

Las bases de datos relacionales se basan en la organización de la información en partes pequeñas que se integran mediante identificadores; a diferencia de las bases de datos no relacionales que, como su nombre lo indica, no tienen un identificador que sirva para relacionar dos o más conjuntos de datos. Además son más robustas, es decir, tienen mayor capacidad de almacenamiento, y son menos vulnerables ante fallas, estas son sus principales características.

Bases de datos no relacionales

Están diseñadas específicamente para modelos de datos específicos y tienen esquemas flexibles para crear aplicaciones modernas. Son ampliamente reconocidas porque son fáciles de desarrollar, tanto en funcionalidad como en rendimiento a escala. Usan una variedad de modelos de datos, que incluyen documentos, gráficos, clave-valor, en-memoria y búsqueda.

Las bases de datos no relacionales (NoSQL) son las que, a diferencia de las relacionales, no tienen un identificador que sirva de relación entre un conjunto de datos y otros. Como veremos, la información se organiza normalmente mediante documentos y es muy útil cuando no tenemos un esquema exacto de lo que se va a almacenar.

Con relación a formatos, la información de una base de datos puede ser almacenada en tablas o documentos. Cuando los datos son organizados en un archivo de Excel, es en formato tabla, pero cuando simplemente son datos escritos como cartas, fórmulas o recetas, son datos en formato documento. Esto aplica para los dos tipos de bases de datos.

Habitualmente los datos almacenados en tablas son bases de datos relacionales, porque existe la posibilidad de enlazar los datos de una tabla con los de otra y los datos almacenados en documentos son no relacionales, aunque no siempre tiene que ser así. Por ejemplo, los datos de una tabla pueden ser transcritos a un documento, todo depende del punto de vista y la necesidad del problema que se vaya enfrentar.

Para ilustrar una de las diferencias entre bases de datos SQL y NOSQL, vamos a dar un ejemplo. Imaginemos por un momento una ciudad como Medellín (Colombia), donde todas las personas hablan el mismo idioma, por tanto es la única forma de que todos los residentes se comuniquen e interactúen. Si se cambia ese idioma se perjudican todos los residentes.

Las bases de datos relacionales utilizan un lenguaje de consulta estructurado para la manipulación de datos, estas se conforman por filas, columnas y registros y se almacenan por tablas. Para manipular los datos en SQL, se requiere primero determinar la estructura de estos, si se cambia la estructura de uno de los datos, puede perjudicar todo el sistema, ya que las tablas están relacionadas.

Ahora imaginemos otra ciudad como Bogotá (Colombia) y pensemos hipotéticamente que en cada uno de los hogares se habla un idioma diferente, todos interactúan distinto y no hay entendimiento entre todos, pero nadie afecta a nadie. Las bases de datos no relacionales tienen un esquema dinámico, no se requiere la estructura de los datos para su manipulación. Los datos se pueden almacenar de cualquier manera, columnas, documentos, gráficos, etc, y cada documento puede tener su propia estructura, sin afectar los demás, puede agregar más campos a medida que se avanza. Están conformadas por documentos, campos y datos del documento, además, se almacenan por colecciones.

¿Entonces cuándo utilizar SQL o NOSQL?

Para ilustrar una de las diferencias entre bases de datos SQL y NOSQL, vamos a dar un ejemplo. Imaginemos por un momento una ciudad como Medellín (Colombia), donde todas las personas hablan el mismo idioma, por tanto es la única forma de que todos los residentes se comuniquen e interactúen. Si se cambia ese idioma se perjudican todos los residentes.

Las bases de datos relacionales utilizan un lenguaje de consulta estructurado para la manipulación de datos, estas se conforman por filas, columnas y registros y se almacenan por tablas. Para manipular los datos en SQL, se requiere primero determinar la estructura de estos, si se cambia la estructura de uno de los datos, puede perjudicar todo el sistema, ya que las tablas están relacionadas.

Ahora imaginemos otra ciudad como Bogotá (Colombia) y pensemos hipotéticamente que en cada uno de los hogares se habla un idioma diferente, todos interactúan distinto y no hay entendimiento entre todos, pero nadie afecta a nadie. Las bases de datos no relacionales tienen un esquema dinámico, no se requiere la estructura de los datos para su manipulación. Los datos se pueden almacenar de cualquier manera, columnas, documentos, gráficos, etc, y cada documento puede tener su propia estructura, sin afectar los demás, puede agregar más campos a medida que se avanza. Están conformadas por documentos, campos y datos del documento, además, se almacenan por colecciones.

¿Cuándo utilizar SQL o NOSQL?

Tanto SQL como NoSQL son tipos de bases de datos recomendadas para utilizar a la hora de comenzar con tus proyectos, cada una de ellas con ventajas y desventajas.

Por ejemplo los sistemas contables, o de inventario, son sistemas que requieren transacciones de varias filas, para este tipo de trabajos la mejor opción son las bases de datos SQL (MySq). Si los sistemas son de gestión de contenido, aplicaciones móviles, sistemas de análisis en tiempo real, bases de datos con un crecimiento rápido, con un esquema descentralizado, la mejor opción son bases de datos NOSQL (MongoDB).

Algunas de las ventajas de SQL: mayor soporte y más variedad de herramientas debido a que lleva más tiempo en el mercado, es útil para manejar y obtener los datos, permite agregar otros servidores de SQL, por ejemplo una persona puede acceder a la base de datos de otra.

Como desventajas de SQL están: No es flexible (antes de ingresar los objetos, deben estar correctamente validados), mientras más compleja sea la base de datos, requiere mayor procesamiento y eso se puede ver reflejado en el rendimiento y consumo de recursos.

Ahora, conozcamos algunas de las ventajas de las bases de datos NOSQL: permite una alta escalabilidad (ayuda a reducir la carga de trabajo), flexible a diferentes tipos de datos, los datos deben cumplir con el tipo de dato definido, y algunas desventajas: la integridad de los datos se afecta por el poco soporte, menos seguridad al ejecutar consultas, no existe estandarización, en la mayoría de los casos son poco compatibles con las bases de datos SQL, casi todo su mantenimiento se debe realizar por consola debido a que existen pocas herramientas.

Muchas personas piensan que deben migrar sus bases de datos a tecnologías NOSQL ya que es lo "nuevo", pero es un pensamiento errado. NOSQL no es el reemplazo de SQL, simplemente es un modelo diferente que ofrece ventajas y soluciones a problemas que poseen las bases de datos relacionales.

# data[].attributes.attachment_link.title
Bases de datos relacionales vs. no relacionales

# data[].attributes.attachment_link.description
Es muy común que los desarrolladores de software estemos en la situación de elegir entre bases de datos relacionales y no relacionales. No es para verlo como un dilema o pensar que dependiendo de la decisión vamos a fracasar, en realidad con cualquiera de las dos opciones, es posible construir nuestro sistema, dependiendo de lo que queramos.

# data[].attributes.headline
¿Qué es un Sistema Gestor de Base de Datos? Dar tres ejemplos de este tipo de programas?

# data[].attributes.subject
¿Qué es un Sistema Gestor de Base de Datos? Dar tres ejemplos de este tipo de programas?

# data[].attributes.body
Un sistema gestor de bases de datos (SGBD) es un software constituido por una serie de programas dirigidos a crear, gestionar y administrar la información que se encuentra en la base de datos.
Gestores para bases de datos:
Relacionales: En la industria hay varias compañías dedicadas a ser manejadoras de bases de datos relacionales como SQL Server, Oracle, MariaDB, entre otras.
No relacionales: Todavía están avanzando y existen ejemplos muy distintos como cassandra, elasticsearch, neo4j, MongoDB, entre otras.

# data[].attributes.body
MySQL es un sistema de gestión de bases de datos relacional

# data[].attributes.body
MongoDB es un sistema de base de datos NoSQL, orientado a documentos y de código abierto.
En lugar de guardar los datos en tablas, tal y como se hace en las bases de datos relacionales, MongoDB guarda estructuras de datos BSON (una especificación similar a JSON) con un esquema dinámico, haciendo que la integración de los datos en ciertas aplicaciones sea más fácil y rápida.

# data[].attributes.headline
¿Qué es el modelo relacional en base de datos    ¿Cuáles son los pasos para crear un modelo entidad - relación?

# data[].attributes.subject
¿Qué es el modelo relacional en base de datos    ¿Cuáles son los pasos para crear un modelo entidad - relación?

# data[].attributes.body
El modelo relacional define la implementación lógica de la información del negocio mediante una serie de tablas, campos, restricciones, relaciones entre las mismas, etc… que deben reflejar la semántica del negocio.
El diseño del modelo entidad-relación, corresponde a la segunda fase de la creación de una base de datos, que se realiza una vez hemos recopilado toda la información por parte del cliente. Los elementos básicos de un modelo entidad-relación son las entidades, las relaciones, los atributos y las cardinalidades.

Las diferentes entidades (objetos o sujetos de la base de datos de los que queremos almacenar información) tienen atributos -es decir, propiedades y características-, y las entidades se relacionan entre ellas. También se pueden representar entidades débiles, cuya existencia está ligada a otra entidad (fuerte).

Un atributo o un conjunto de atributos de una entidad puede ser clave primaria, entendida como una propiedad que identifica de forma única un registro de una tabla. Por ejemplo, el DNI en el registro de un alumno, del que también guardamos otra información -atributos- como el nombre, los apellidos, el teléfono de contacto y la carrera en la cual se ha matriculado.

Por último, se indica la cardinalidad, consistente en la participación que hay entre las entidades.

# data[].attributes.body
La importancia de saber SQL a la hora de trabajar con bases de datos: ejemplo PostgreSQL/PostGIS

El lenguaje de consulta estructurado o SQL (por sus siglas en inglés Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas. Digamos que es el medio estándar para consultar bases de datos relacionales.

El lenguaje de tipo SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales y permite así una gran variedad de operaciones.  Es uno de los éxitos de las bases relacionales.

El lenguaje SQL está compuesto por: comandos, cláusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.

Así, existen tres grandes grupos de comandos SQL:

DLL (Data Definition Language) que permiten crear y definir nuevas bases de datos, campos e índices.

DML (Data Manipulation Language) que permiten llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado.

DCL (Data Control Language) que se encargan de definir las permisos sobre los datos.

# data[].attributes.body
ALTER: La sentencia ALTER se utiliza para modificar la estructura de una tabla existente. Por ejemplo, si queremos agregar una nueva columna "Fecha_nacimiento" a la tabla "Empleados" podríamos utilizar la siguiente sentencia SQL:

ALTER TABLE Empleados ADD Fecha_nacimiento DATE;

# data[].attributes.body
DROP: La sentencia DROP se utiliza para eliminar una tabla, una vista, un índice, un procedimiento almacenado o una función de una base de datos. Por ejemplo, si queremos eliminar la tabla "Empleados" podríamos utilizar la siguiente sentencia SQL:

DROP TABLE Empleados;

# data[].attributes.body
TRUNCATE se utiliza para eliminar todos los datos de una tabla, pero deja intacta la estructura de la tabla. Es más rápido que DELETE ya que no genera registros de transacciones. Por ejemplo, si queremos eliminar todos los datos de la tabla "Empleados" podríamos utilizar la siguiente sentencia SQL:

TRUNCATE TABLE Empleados;

# data[].attributes.body
SELECT: La sentencia SELECT se utiliza para seleccionar datos de una tabla o varias tablas en una base de datos. Por ejemplo, si queremos seleccionar todos los campos de la tabla "Empleados" podríamos utilizar la siguiente sentencia SQL:

SELECT * FROM Empleados;

# data[].attributes.body
INSERT: La sentencia INSERT se utiliza para insertar nuevos datos en una tabla. Por ejemplo, si queremos insertar un nuevo empleado con ID = 1, Nombre = "Juan" y Salario = 1000 en la tabla "Empleados", podríamos utilizar la siguiente sentencia SQL:

INSERT INTO Empleados (ID, Nombre, Salario) VALUES (1, 'Juan', 1000);

# data[].attributes.body
UPDATE: La sentencia UPDATE se utiliza para actualizar datos existentes en una tabla. Por ejemplo, si queremos actualizar el salario de un empleado con ID = 1 a 1500 en la tabla "Empleados", podríamos utilizar la siguiente sentencia SQL:

UPDATE Empleados SET Salario = 1500 WHERE ID = 1;

# data[].attributes.body
DELETE: La sentencia DELETE se utiliza para eliminar datos existentes en una tabla. Por ejemplo, si queremos eliminar un empleado con ID = 1 en la tabla "Empleados", podríamos utilizar la siguiente sentencia SQL:

DELETE FROM Empleados WHERE ID = 1;

# data[].attributes.body
La normalización de una base de datos relacional es el proceso de organizar las tablas en una base de datos para reducir la redundancia y mejorar la integridad de los datos. Existen varios niveles de normalización, conocidos como formas normales, que se utilizan para alcanzar este objetivo. A continuación se describen algunas de las formas normales más comunes:

1ª Forma Normal (1NF): Una tabla está en 1NF si cada fila tiene un valor único en la columna clave y no hay valores repetidos en las demás columnas.

2ª Forma Normal (2NF): Una tabla está en 2NF si cumple con la 1NF y todas las columnas no clave dependen funcionalmente de la clave completa.

3ª Forma Normal (3NF): Una tabla está en 3NF si cumple con la 2NF y no existen dependencias transitivas.

La 4ª Forma Normal (BCNF) y la 5ª Forma Normal (5NF) son también son importantes pero son menos comunes.

# data[].attributes.headline
¿Qué es Mongo Atlass y como crear una cuenta?

# data[].attributes.subject
¿Qué es Mongo Atlass y como crear una cuenta?

# data[].attributes.body
Mongo atlass es una plataforma en linea o servicio en la nube que nos permite administrar una base de datos no SQL.
Algunas caracteristicas de Mongo son:
Sistema de clusterización
Motor de mongo en un servidor
Sistema de replicación
Nos permite crear escalamiento y sistema de replicacion ideal.
Crear cuenta:
1. Ir a la pagina oficial de Mongo Atlass
2. Registrarse
3. Seleccionar el plan gratuito
4. Elejir proveedor
5. Nombre de cluster

# data[].attributes.body
Mongoose es una terminal de programación que proporciona una interfaz para interactuar con una base de datos MongoDB y gestionar documentos de manera más fácil y eficiente. Mongoose simplifica el trabajo con la base de datos MongoDB al proporcionar una abstracción del esquema de documentos y un conjunto de métodos que puedes utilizar para interactuar con los datos.

# data[].attributes.headline
¿Qué significa que MongoDB tenga un esquema flexible?

# data[].attributes.subject
¿Qué significa que MongoDB tenga un esquema flexible?

# data[].attributes.body
La flexibilidad de MongoDB se basa en que no tiene una estructura de datos rígida para los documentos, lo que permite almacenar diferentes tipos de datos y no requiere almacenar datos que no existen. Sin embargo, esta flexibilidad también puede hacer que sea más difícil controlar la consistencia y la integridad de los datos en comparación con otras bases de datos que tienen una estructura más definida. Mongoose proporciona una mayor consistencia y control sobre tus datos al permitirte definir un esquema para tus documentos.

# data[].attributes.body
Los documentos son registros individuales que representan una única entrada de datos en la base de datos. Cada documento es un objeto JSON con una estructura flexible que puede tener diferentes campos y tipos de datos.

Las colecciones son grupos de documentos similares que se almacenan juntos. Por ejemplo, una colección de usuarios podría contener documentos que representan a cada usuario individual en la aplicación.

# data[].attributes.headline
¿Cuál es la diferencia entre JSON y BSON?

# data[].attributes.subject
¿Cuál es la diferencia entre JSON y BSON?

# data[].attributes.body
La principal diferencia entre JSON y BSON es que JSON es un formato de texto y BSON es un formato binario. Esto significa que BSON es más eficiente en términos de tamaño y velocidad, lo que lo hace más adecuado para su uso en sistemas de bases de datos. Además, BSON permite almacenar tipos de datos adicionales, como fechas y objetos binarios, que no están disponibles en JSON.

# data[].attributes.headline
¿Cuáles operadores podemos encontrar en MongoDB y para qué seusan?

# data[].attributes.subject
¿Cuáles operadores podemos encontrar en MongoDB y para qué seusan?

# data[].attributes.body
Operadores de comparación: estos operadores se utilizan para comparar valores y realizar consultas en función de condiciones específicas. Por ejemplo, el operador "$lt" (less than) se utiliza para seleccionar documentos con un valor de campo inferior a un determinado valor.

Operadores lógicos: estos operadores se utilizan para combinar varias condiciones y realizar consultas más complejas. Por ejemplo, el operador "$or" se utiliza para seleccionar documentos que cumplen cualquiera de varias condiciones.

Operadores de proyección: estos operadores se utilizan para controlar qué campos se devuelven en una consulta. Por ejemplo, el operador "$exclude" se utiliza para excluir campos específicos de los resultados de la consulta.

Operadores de agregación: estos operadores se utilizan para procesar los datos de la base de datos y generar estadísticas y resúmenes. Por ejemplo, el operador "$group" se utiliza para agrupar documentos por un campo específico y calcular valores agregados para cada grupo.

Operadores de actualización: estos operadores se utilizan para modificar los datos de la base de datos. Por ejemplo, el operador "$set" se utiliza para establecer un nuevo valor para un campo en un documento o para agregar un nuevo campo a un documento.

# data[].attributes.headline
¿Cuál es la metodología más recomendada para el modelamientode datos?

# data[].attributes.subject
¿Cuál es la metodología más recomendada para el modelamientode datos?

# data[].attributes.body
La metodología de modelamiento basada en documentos se centra en representar los datos como documentos individuales en lugar de como filas en tablas. Cada documento puede tener una estructura única y almacenar diferentes tipos de datos. Esto permite una gran flexibilidad en la representación de los datos y facilita la escalabilidad de la aplicación.

Algunos de los principios básicos que se recomiendan seguir al modelar los datos en MongoDB incluyen:

Normalización: MongoDB es una base de datos denormalizada, lo que significa que no se requiere que los datos estén organizados en tablas relacionadas. Sin embargo, es importante evitar la duplicación de datos y mantener un buen control de la consistencia de los datos.

Estructura de documentos: la estructura de los documentos debe reflejar la estructura lógica de los datos y hacer que sea fácil para la aplicación acceder a los datos de manera eficiente.

Escalabilidad: es importante considerar cómo los datos y la estructura de los documentos se verán afectados por la creciente cantidad de datos y la creciente demanda de la aplicación.

Rendimiento: es importante optimizar la consulta y la actualización de los datos para garantizar un rendimiento óptimo de la aplicación.

# data[].attributes.headline
¿Cuáles son los tipos de validaciones que podemos encontrar enMongoDB?

# data[].attributes.subject
¿Cuáles son los tipos de validaciones que podemos encontrar enMongoDB?

# data[].attributes.body
1. Validación de esquema: MongoDB proporciona una forma de validar la estructura de los documentos a través de la opción "validator" en una colección. Se puede especificar una expresión regular o una función de validación que se aplicará a todos los documentos nuevos o actualizados en la colección.

2. Validación de campo: MongoDB permite especificar un tipo de datos para cada campo en un documento. Esto permite validar que los datos en un campo sean del tipo correcto y evitar errores comunes.

3. Validación personalizada: Además de las validaciones incorporadas, MongoDB permite la creación de validaciones personalizadas a través de funciones de validación. Estas funciones permiten validar la integridad de los datos en un documento antes de guardarlo o actualizarlo.

# data[].attributes.headline
¿Qué diferencias hay entre embeber y referenciar en MongoDB?

# data[].attributes.subject
¿Qué diferencias hay entre embeber y referenciar en MongoDB?

# data[].attributes.body
1. Embebidos: Se refiere a la inclusión de documentos anidados dentro de otro documento. Por ejemplo, si tenemos un documento de usuario que incluye información sobre su dirección, podemos embeber la dirección dentro del documento de usuario. Con embebidos, los datos se almacenan en un solo documento y se pueden consultar de manera eficiente sin tener que realizar una consulta adicional a la base de datos. Sin embargo, existe un límite en el tamaño de un documento y puede resultar en la creación de documentos grandes y complejos que son difíciles de mantener.

2. Referenciados: Se refiere a la inclusión de una referencia a un documento en otro documento. Por ejemplo, si tenemos un documento de usuario y otro documento de dirección, podemos referenciar la dirección desde el documento de usuario. Con referenciados, los documentos se almacenan de forma separada y se pueden actualizar y consultar de forma independiente. Esto puede ser útil para ahorrar espacio y evitar problemas de tamaño, pero también puede requerir consultas adicionales para recuperar los datos relacionados.