Skip to content

This is a local and temporary database for a final exam of the UCB SCZ introduction to programming

Notifications You must be signed in to change notification settings

zodiacsilence/database-final-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@santiagoabuawad/bd

🎓Propuesta

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.

linea

📖Tabla Base de datos

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 Vertical Tablas AWS, Azure, Google Cloud
PostgreSQL Relacional PostgreSQL PostgreSQL SQL 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 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.

linea

🔎Justificacion

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).

linea

🐢 Estructura Repositorio

proyecto
│   ├── funct-call.h
│   ├── funct.cpp
│   ├── main.cpp
│   ├── struct.h
│   ├── diagrama-bd.png

Estructura

struct Fecha {
  int anio;
  int mes;
  int dia;
};

Funciones

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

linea

🌲Diagrama de flujo

linea

Aqui podemos ver la estructura primitiva del programa como mediante sentencias logramos filtrar las entradas y almacenar los eventos en la fecha deseade

linea

🥪Funcionando

imagen

linea

👤Creditos

Santiago Abuawad
Santiago Abuawad

linea

🔧Tecnologias

vsc cpp Ubuntu

About

This is a local and temporary database for a final exam of the UCB SCZ introduction to programming

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages