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.
📁 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
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
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).
- 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).
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).
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;
- Clona el repositorio:
git clone git@github.com:rociobenitez/car-fleet-sql-db.git
- Carga el script en tu gestor de base de datos
- Para MySQL: importa
script_mysql.sql
- Para PostgreSQL: usa
script_postgresql.sql
- 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.