# data[].attributes.body
Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar fácilmente.

Cada base de datos se compone de una o más tablas que guarda un conjunto de datos. Cada tabla tiene una o más columnas y filas. Las columnas guardan una parte de la información sobre cada elemento que queramos guardar en la tabla, cada fila de la tabla conforma un registro.

Para obtener la información almacenada en las bases de datos se emplean las consultas. Una consulta es una solicitud al gestor de la base de datos para acceder, borrar o modificar la información presente en la database. Para ello se emplea un lenguaje específico (el más común es SQL

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

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

# data[].attributes.body
BASES DE DATOS RELACIONALES

1. Las bases de datos relacionales se basa en el modelo identidad-relación

2. Las bases de datos relacionales se caracterizan por ser una colección ordenada de registros que se organiza en un conjunto de tablas y están relacionadas entre sí.

3.  Las bases de datos relacionales se organizan a través de identificadores, cada tabla tiene un identificador único que hacen más facil organizar cada una de las tabla.

4. Los datos se guardan en tablas siguiendo un patrón preciso que cada dato debe seguir para poder ser guardado.

BASES DE DATOS NO RELACIONALES

1. Las bases de datos no relacionales están diseñadas para modelos de datos específicos y que no necesitan ser relacionados con otros modelos.

2.  Las bases de datos no relacionales son excelentes para aplicaciones donde la consulta es constante y debe hacerse rápido, los chats por ejemplo son un buen ejemplo, constantemente estamos escribiendo datos y consultándolos.

3.  las bases de datos no relacionales ofrecen una alternativa en la que las operaciones entre elementos relacionados se sustituyen por otras estrategias, cada base de datos ofrece algunas distintas, en algunas de ellas por ejemplo duplicamos información o almacenamos resultados de un cálculo para no tener que estarlo realizando cada que necesitemos esa información.

# data[].attributes.body
SQL o lenguaje de consulta estructurada es un lenguaje de programación estándar para el manejo de información desde una base de datos relacional.
Una base de datos relacional se refiere a la relación que tienen distintas entidades o tablas dentro de la base de datos.

Es importante porque utilizando el lenguaje de programación SQL podemos hacer el mantenimiento a la base de datos, podemos crear tablas, insertar datos en estas tablas, modificar esa misma información o eliminar estas tablas y hacer consultas de estos datos.

Para poder manejar esta información con SQL necesitamos un Sistema Gestor de Base de Datos como; MySQL, Oracle, SQL Server, entre otros.

# data[].attributes.body
Es un sistema de gestión de bases de datos relacional de código abierto, basado en lenguaje de consulta estructurado SQL.

La mejor de las características de MySql  es que almacena los datos de forma eficiente en la memoria, asegurando que los datos sean consistentes y no redundantes. Como resultado, realizar consultas y operaciones en MySQL es rápido.

Contiene varios tipos de datos, como enteros sin signo, enteros con signo, flotante (FLOAT), doble (DOUBLE), carácter (CHAR), carácter variable (VARCHAR), texto, blob, fecha, hora, fecha y hora, marca de tiempo, año, etc. en.

SQL y MySQL no son lo mismo

Debido a lo parecido de los nombres hay quienes confunden estos 2 términos. Sin embargo, no son lo mismo. MySQL es un sistema de gestión de bases de datos relacionales en SQL. Mientras que SQL  es un lenguaje estándar de programación que sirve para administrar (los sistemas de gestión de) las bases de datos, como MySQL.

# 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 base de datos es un software que permite la creación, modificación y gestión de base de datos, te dan herramientas para garantizar la seguridad y la integridad de los datos, se pueden crear tablas y relaciones entre ellas, se realizan consultas, gestión de usuarios y permisos.

Su objetivo es servir como interfaz (una interfaz es el punto de conexión entre dos sistemas) entre el usuario y las aplicaciones porque toda la organización es mediante tablas, cada tabla es una entidad o concepto, las filas de cada tabla representan como los registros y las columnas de cada tabla representan los atributos.

Digamos como en un restaurante
una tabla seria "clientes"
otra tabla seria "pedidos"
y su forma de relacionarse es mediante claves que establecen un vinculo entre las filas de las tablas
en este caso la clave seria "cliente_id"
así permitiría relacionar un pedido con un cliente específico

por ejemplo tenemos: MySQL, Oracle y Microsoft SQL Server

# data[].attributes.headline
¿Qué es el modelo relacional en base de datos?

# data[].attributes.subject
¿Qué es el modelo relacional en base de datos?

# data[].attributes.body
Es un modelo de datos basado en la lógica de predicados y en la teoría de conjuntos. Su idea fundamental es el uso de relaciones.
Este modelo esta basado en que todos los datos están almacenados en tablas (entidades/relaciones) y cada una de estas es un conjunto de datos, por tanto una base de datos es un conjunto de relaciones. La agrupación se origina en la tabla: tabla -> fila (tupla) -> campo (atributo)

El Modelo Relacional se ocupa de:

La estructura de datos

La manipulación de datos

La integridad de los datos

Características

Los datos son atómicos ó monovaluados;

Los datos de cualquier columna son de un solo tipo.

Cada columna posee un nombre único.

El orden de las columnas no es de importancia para la tabla.

Las columnas de una relación se conocen como atributos.

Cada atributo tiene un dominio,

No existen 2 filas en la tabla que sean idénticas.

La información en las bases de datos son representados como datos explícitos.

Cada relación tiene un nombre específico y diferente al resto de las relaciones.

Los valores de los atributos son atómicos: en cada tupla, cada atributo (columna) toma un solo valor. Se dice que las relaciones están normalizadas.

El orden de los atributos no importa: los atributos no están ordenados.

Cada tupla es distinta de las demás: no hay tuplas duplicadas

El orden de las tuplas no importa: las tuplas no están ordenadas.

Los atributos son atómicos: en cada tupla, cada atributo (columna) toma un solo valor. Se dice que las relaciones están normalizadas.

# data[].attributes.headline
Pasos para crear un modelo entidad-relación

# data[].attributes.subject
Pasos para crear un modelo entidad-relación

# data[].attributes.body
Un diagrama entidad-relación, también conocido como modelo entidad relación, es un tipo de diagrama de flujo que muestra cómo las "entidades", como personas, objetos o conceptos, se relacionan entre sí dentro de un sistema.

Para crear un modelo entidad-relación debemos seguir los siguientes pasos:

Identificar los componentes:
Determina las entidades: Las entidades generalmente son sustantivos como auto, banco, estudiante o producto.
Identifica las relaciones: Las relaciones resaltan cómo las entidades interactúan entre sí.
Agrega atributos: Los atributos muestran características específicas de una entidad, detallando qué información es importante para el modelo.

# data[].attributes.headline
Normalización de una Base de Datos relacional

# data[].attributes.subject
Normalización de una Base de Datos relacional

# data[].attributes.body
La normalización es el proceso para la simplificación de datos.
El objetivo al usar la normalización es: usar el menor espacio de almacenamiento posible, eliminar datos repetidos, eliminar errores lógicos y datos desordenados.

# data[].attributes.headline
Manipulación de Base de Datos: DML (Data Manipulation Language)

# data[].attributes.subject
Manipulación de Base de Datos: DML (Data Manipulation Language)

# data[].attributes.body
¿Para qué sirven las sentencias DDL?
Son aquellas utilizadas para la creación de una base de datos y todos sus componentes: tablas, índices, relaciones, disparadores (triggers), procedimientos almacenados, etc.

Realice un ejemplo en donde explique para qué sirve la sentencia CREATE

Por ejemplo para crear una base de datos

create database ejemplo
create table empleado

Realice un ejemplo en donde explique para qué sirve la sentencia ALTER

Después de crear la base de datos con la sentencia CREATE,  que también la utilizamos para crear nuestra tabla, podemos utilizar la sentencia ALTER si queremos alterar o modificar esta tabla:

alter table empleado

add edademp

alter table empleado
add prueba int

Realice un ejemplo en donde explique para qué sirve la sentencia DROP

Agregamos por error el campo prueba, así que podemos utilizar la sentencia DROP para eliminar

alter table empleado
drop column prueba

Realice un ejemplo en donde explique para qué sirve la sentencia TRUNCATE

Con esta sentencia podemos eliminar todas las filas de una tabla.
Si ya habíamos llenado los datos en nuestra tabla empleado, utilizando

truncate table empleado

Eliminaríamos todas las filas

# data[].attributes.headline
Manipulación de Base de Datos:DML (Data Manipulation Language)

# data[].attributes.subject
Manipulación de Base de Datos:DML (Data Manipulation Language)

# data[].attributes.body
¿Para qué sirven las sentencias DML?
Las sentencias DML se utilizan para controlar la información contenida en la base de datos

Realice un ejemplo en donde explique para qué sirve la sentencias SELECT

La sentencia select se utiliza para realizar consultas sobre los datos
Por ejemplo, tenemos una tabla con la base de datos de las sedes de un supermercado en todo el país y necesitamos listar todas las ciudades de los supermercados.
SELECT Ciudad (el dato que necesitamos)
FROM SD_Supermercados (donde está ubicado)

Realice un ejemplo en donde explique para qué sirve la sentencias INSERT

Añade filas o datos una tabla.
Por ejemplo tenemos una tabla con los datos de todos los libros de una librería y necesitamos anexar información

insert into books_datails (nombre_books)

values ('El mundo de Sofía')

Realice un ejemplo en donde explique para qué sirve la sentencias UPDATE

La sentencia UPDATE actualiza los valores de las columnas especificadas en las filas de una tabla, vista o apodo, o las tablas, apodos o vistas subyacentes de la selección completa especificada.
Por ejemplo tenemos una tabla con los datos de todos los libros de una librería y necesitamos modificar el nombre que agregamos hace un rato

update books_datails
set nombre_books= 'La Biblia'

Realice un ejemplo en donde explique para qué sirve la sentencias DELETE

Nos permite eliminar registros de la tabla.
Por ejemplo tenemos una tabla con los datos de todos los libros de una librería y necesitamos modificar el año de publicación de un libro.

delete from books_datails
where id_libro=2

# data[].attributes.body
Es un SGBD (Sistema Gestor de Base de Datos) multiplataforma NoSQL, orientado a documentos y de código abierto.

Características
Cada registro se denomina documento.
En lugar de guardar los datos en tablas, tal y como se hace en las bases de datos relacionales, MongoDB guarda estructuras de datos en documentos en formato BSON, o Binary JSON.
Guarda de forma clara longitudes de campos, índices de arrays, y otra información útil para el escaneo de datos, ocupando más espacio que JSON.
Los documentos se pueden agrupar en colecciones (como las tablas en una BD relacional, pero almacenando documentos sin un esquema establecido).
Se destaca por su rendimiento y su sencillo sistema de consulta de los contenidos de la base de datos.
La sección de la publicación actual es Conceptos Teóricos Básicos.

# 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
MongoDB Atlas es un servicio de Cloud Database (o Base de Datos en la Nube), que te permite crear y administrar tu BBDD Mongo desde cualquier lugar del mundo, a través de su plataforma.

# data[].attributes.body
JSON es una notación de objetos de JavaScript que permite tener una forma sencilla para poder representar infromación o datos, algunos problemas que JSON tiene para que la información viaje desde y hacía la base de datos es: el formato basado en texto es muy lento, es poco eficiente y soporta un tipo de datos limitados.

BSON es una estructura que permite tener la misma información pero con un formato más eficiente que JSON. Según la documentación la base de datos MongoDB utiliza el formaton BSON, sin embargo no significa que MongoDB no acepta JSON.

Es decir, a simple vista podemos pensar que estamos trabajando en JSON pero internamente se utiliza BSON.

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

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

# data[].attributes.body
Las decisiones para el modelado de los datos implica determinar como se debe estructurar los documentos para ganar en eficiencia. Una de las decisiones primordiales es saber cuando debemos de emplear documentos embebidos o cuando referencias a otros documentos

EMBEDDING

Esta decisión implica la desnormalización de los datos, almacenando dos documentos relacionados en un único documento. Las operaciones a este documento son mucho menos costosas para el servidor que las operaciones que involucran múltiples documentos. En general, se debe de emplear este modelo cuando se tienen relaciones del tipo “contiene” entre entidades. Básicamente en relaciones Uno a Uno.

RELACIONES ENTRE DOCUMENTOS

Este tipo de decisiones se deben de tomar cuando se tienen relaciones Uno a Muchos donde la parte de muchos siempre aparecen o son visionados desde el contexto de sus documentos padres. Por ejemplo en el siguiente ejemplo podemos ver una referencia entre documentos entre la colección Producto y Comentarios del producto. En este caso merece la pena llevar a los comentarios en una nueva colección en vez de embeberlos si los comentarios van a ser referenciados y filtrados por usuario si ese tipo de consultas se requirieren en gran cantidad en la aplicación

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

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

# data[].attributes.body
OPERADORES DE COMPARACIÓN
se utilizan para comparar valores y devolver un resultado

$eq: igual que (equal)

$ne: distinto de (not equal)

$gt: valores mayores que (greater than)

$gte: valores mayores o iguales que (greater than or equal)

$lt: valores menores que (lower than)

$lte: valores menores o iguales que (lower than or equal)

$in: sus valores se encuentran dentro del array especificado. Por ejemplo: { "pais": { $in: ["España", "Francia"] }} mostrará todos los documentos cuyo campo pais sea España o Francia

$nin: operación contraria a $in, obtiene los documentos cuyo valor NO esté en el array.

OPERADORES DE ELEMENTO

se utilizan para comprobar si cierto campo existe o no, y su tipo

$exists: comprueba que el campo existe. Por ejemplo: { "nacionalidad" : {$exists: true} } muestra los documentos que contienen un campo llamado nacionalidad. Fijarse en que no es lo mismo que filtrar por un campo con valor a null, puesto que en ese caso devolvería tanto los documentos que contienen el campo seteado a null, como aquellos que no contienen ese campo

$type: comprueba el tipo del campo. Por ejemplo: { "longitud": { $type: "int" }} obtendrá los documentos cuyo campo longitud tenga un valor entero de 32 bit

OPERADORES LÓGICOS
Cuando necesitamos construir consultas que deban cumplir varias condiciones utilizaremos los operadores lógicos.

$or: filtra los documentos que cumplan alguna de las condiciones del array. Por ejemplo: { $or: [ { "edad": {$gte: 60}}, { "edad": {$lte:10}} ]} filtra los documentos cuyo campo edad tenga valor mayor o igual que 60 O valor menor o igual que 10

$and: similar a $or, pero en este caso los documentos deben cumplir todas las condiciones del array. Su uso puede resultar superfluo teniendo en cuenta que en un filtro normal, las condiciones indicadas se juntan mediante operadores lógicos. Normalmente se usa en situaciones en las que se deben aplicar varias condiciones sobre un mismo campo. En una consulta normal, los campos deben ser únicos.

# 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
MongoDB tiene un esquema flexible, donde las colecciones no fuerzan tener una estructura idéntica para todos los documentos. Esto significa que los documentos de la misma coleccion no necesitan tener el mismo numero de campos o estructura. Cada documento solo necesita contener un numero relevante de campos de la entidad u objeto que el documento representa

# data[].attributes.body
Es una librería para Node.js que nos permite escribir consultas para una base de datos de MongooDB, con características como validaciones, construcción de queries, middlewares, conversión de tipos y algunas otras, que enriquecen la funcionalidad de la base de datos.
Mongoose funciona como una capa adicional sobre MongoDB a través de la cuál se implementan y automatizan muchas de las tareas habituales de trabajar con una base de datos.