Pérdidas, números rojos , mala administración son factores que toda empresa teme. Uno de los generadores de este problema es la mala gestión de información . El mal manejo de esta no solo ralentiza el rendimiento laboral, sino también causa a largo y corto plazo todos estos factores. Es por eso que, como desarrollador, creo que una buena base de datos es esencial para cualquier empresa que quiera destacar en el ámbito laboral. Una base de datos no solo anula todo lo anteriormente mencionado, sino también destaca a la empresa entre otras que no han podido visualizar esta increíble tecnología.
Base de Datos | Tipo | Sistema de Gestión | Licencia | Lenguaje de Consulta | Soporte para Transacciones | Escalabilidad | Modelo de Datos | Soporte para la Nube |
---|---|---|---|---|---|---|---|---|
MySQL | Relacional | MySQL | GPL | SQL | Sí | Vertical | Tablas | AWS, Azure, Google Cloud |
PostgreSQL | Relacional | PostgreSQL | PostgreSQL | SQL | Sí | Horizontal y Vertical | Tablas | AWS, Azure, Google Cloud |
MongoDB | No relacional | MongoDB | SSPL, Apache | NoSQL | Limitado | Horizontal | Documentos | AWS, Azure, Google Cloud |
Cassandra | No relacional | Apache Cassandra | Apache | NoSQL | No | Horizontal | Clave-valor | AWS, Azure, Google Cloud |
Neo4j | No relacional | Neo4j | GPL, Comercial | Cypher | Sí | Horizontal | Grafo | AWS, Azure, Google Cloud |
Estas son las tecnologias mas conocidas en el sector de las bases de datos aqui tenemos sus caracterisitcas y una compracion al respecto.
Almacenamiento de información Permiten almacenar grandes cantidades de información organizada de manera que se puede acceder, gestionar y actualizar eficientemente. Toma de decisiones La información organizada en una base de datos puede ser utilizada para análisis y toma de decisiones estratégicas, ayudando a las empresas a comprender mejor sus operaciones, clientes y mercados. Eficiencia operacional Automatizan y simplifican muchos procesos, reduciendo errores humanos y aumentando la eficiencia. Soporte para aplicaciones de negocios Las bases de datos son la columna vertebral de muchas aplicaciones empresariales como sistemas de planificación de recursos empresariales (ERP) y gestión de relaciones con clientes (CRM).
proyecto
│ ├── funct-call.h
│ ├── funct.cpp
│ ├── main.cpp
│ ├── struct.h
│ ├── diagrama-bd.png
struct Fecha {
int anio;
int mes;
int dia;
};
Validar Fecha
bool validarFecha(int anio, int mes, int dia) {
if(anio == 0) {
cout << "Year value is invalid: " << anio << endl;
return false;
}
if(mes < 1 || mes > 12 )
{
cout << "Month value is invalid: "<< mes << endl;
return false;
}
if (dia < 1 || dia > 31)
{
cout << "Day value is invalid: "<<dia<<endl;
return false;
}
if(mes == 2)
{
if(dia > 29)
{
cout << "Day value is invalid: "<< dia << endl;
return false;
}
}
else if(mes == 4 || mes == 6 || mes == 9 || mes == 11)
{
if(dia > 30) {
cout << "Day value is invalid: "<< dia << endl;
return false;
}
}
return true;
}
Basicamente mediante una funcion booleana dentro de funcionan agrego filtros en forma de sentencias que permiten detectar si una fecha no es valida es decir su formato es erroneo
Contar Guiones
int contarGuiones(const string& str) {
int count = 0;
for (char c : str) {
if (c == '-') {
count++;
}
}
return count;
}
Esta funcion me permite asegurarme que la fecha siga el formato year-moth-day
formatearFecha
string formatearFecha(int anio, int mes, int dia) {
return to_string(anio) + "-" + (mes < 10 ? "0" : "") + to_string(mes) + "-" + (dia < 10 ? "0" : "") + to_string(dia);
}
Esta funcion me permite agregar los 0 que faltan a la fecha
insertarEventoEnOrden
void insertarEventoEnOrden(vector<string>& eventos, const string& evento) {
auto it = eventos.begin();
while (it != eventos.end() && *it < evento) {
++it;
}
if(it == eventos.end() || *it != evento) {
eventos.insert(it,evento);
}
}
Con esto ordeno los eventos en orden acendente como es requerido
imprimirFechas
void imprimirFechas(const map<string, vector<string>>& fechas) {
for (const auto& par : fechas) {
cout << "Fecha: " << par.first << endl;
for (const auto& evento : par.second) {
cout << " - " << evento << endl;
}
cout << "-----------------------------------" << endl;
}
}
Con esta funcion muestro las fechas en consola
eliminarEvento
bool eliminarEvento(vector<string>& eventos, const string& evento) {
for (auto it = eventos.begin(); it != eventos.end(); ++it) {
if (*it == evento) {
eventos.erase(it);
return true;
}
}
return false;
}
esta funcion de tipo booleana me permite eliminar los eventos la uso para los comandos de eliminacion