/car-fleet-sql-db

Scripts SQL para una base de datos relacional orientada a la gestión de flotas de vehículos.

Base de Datos Relacional de Gestión de Flota de Coches

Este repositorio contiene el diseño, estructura y scripts SQL para una base de datos relacional orientada a la gestión de flotas de vehículos. El modelo está optimizado para almacenar y consultar información sobre coches, revisiones técnicas, pólizas de seguro, características técnicas y estructura de marcas.

Archivos

📁 car-fleet-sql-db/
├── script_mysql.sql        → Script SQL completo para MySQL
├── script_postgresql.sql   → Versión adaptada a PostgreSQL
├── coches.csv              → Dataset con más de 80 coches
├── coches.sql              → Archivo de base de datos para MySQL
├── diagrams.pdf            → Diagrama E-R completo
└── README.md

Enfoque de Negocio

La base de datos está pensada como un sistema modular y escalable para compañías que gestionan una flota de vehículos, como:

  • Empresas de renting o leasing
  • Concesionarios de automóviles
  • Aseguradoras
  • Talleres con flota asociada
  • Plataformas de movilidad (sharing, logística, etc.)

Este sistema facilita un seguimiento detallado de:

  • Vehículos y sus atributos (modelo, marca, color, grupo, kms, fecha de compra)
  • Historial de revisiones con control de kilometraje, fechas e importes
  • Pólizas de seguro activas por vehículo y aseguradora correspondiente
  • Monedas utilizadas en las transacciones

Modelo Relacional

La base de datos está compuesta por 9 tablas relacionales conectadas a través de claves primarias y foráneas.

  • Coche: Información clave de cada vehículo (matrícula, modelo, kms, etc.).
  • Revisión: Registro de mantenimientos y revisiones, con importe y fecha.
  • Moneda: Control multimoneda para las transacciones de revisiones.
  • Seguro: Pólizas y fecha de alta asociadas a cada coche.
  • Aseguradora: Catálogo de compañías aseguradoras.
  • Modelo: Modelos específicos de vehículos.
  • Marca: Marca a la que pertenece cada modelo.
  • Grupo: Agrupación de marcas (conglomerados automovilísticos).
  • Color: Catálogo de colores disponibles.

📎 Consulta el diagrama completo en diagrams.pdf o en este enlace (diagrams.net).

Relaciones y Cardinalidad

  • 1:N → Un modelo pertenece a una marca, una marca a un grupo, etc.
  • 1:1 → Un coche tiene su póliza activa más reciente (seguro actual).
  • N:M simulada → Se pueden registrar múltiples pólizas por coche a lo largo del tiempo.
  • 1:N → Un coche puede tener múltiples revisiones (historial técnico).

Scripts Disponibles

En la raíz del repositorio encontrarás los siguientes archivos SQL:

  • script_mysql.sql: Script completo para la creación y carga de datos en MySQL.
  • script_postgresql.sql: Versión adaptada para PostgreSQL (estructura y consultas).

Datos y Consultas

Incluye más de 80 modelos de coches, pólizas históricas, colores, aseguradoras, y un histórico de revisiones técnicas con importes y fechas en varias monedas (EUR, USD, COP, MXN).

Algunas consultas destacadas incluidas:

-- Vehículos con su marca, grupo y aseguradora actual
SELECT
  c.matricula,
  c.fecha_compra,
  m.nombre_modelo,
  ma.nombre_marca,
  g.nombre_grupo,
  col.nombre_color,
  c.kms_totales,
  s.n_poliza,
  a.nombre_aseguradora
FROM coche c
JOIN modelo m ON c.id_modelo = m.id_modelo
JOIN marca ma ON m.id_marca = ma.id_marca
JOIN grupo g ON ma.id_grupo = g.id_grupo
JOIN color col ON c.id_color = col.id_color
JOIN (
  SELECT matricula, MAX(fecha_alta_seguro) AS ultima_fecha
  FROM seguro
  GROUP BY matricula
) s_max ON s_max.matricula = c.matricula
JOIN seguro s ON s.matricula = s_max.matricula AND s.fecha_alta_seguro = s_max.ultima_fecha
JOIN aseguradora a ON s.id_aseguradora = a.id_aseguradora
ORDER BY c.matricula;

Cómo usar este repositorio

  1. Clona el repositorio:
git clone git@github.com:rociobenitez/car-fleet-sql-db.git
  1. Carga el script en tu gestor de base de datos
  • Para MySQL: importa script_mysql.sql
  • Para PostgreSQL: usa script_postgresql.sql
  1. Explora los datos
  • Revisa la estructura de tablas.
  • Lanza consultas predefinidas.
  • Usa los datos reales del CSV coches.csv si quieres importarlos como tabla de referencia.