Diseño y creación de una base de datos
relacional para gestionar la información de vehículos y sus mantenimientos.
Objetivos principales:
Identificar la información relevante: A partir
de un conjunto de datos (imágenes en este caso), se identificaron las entidades
clave (vehículos, empleados, mantenimientos) y sus atributos (marca, modelo,
nombre del empleado, fecha de mantenimiento, etc.).
Establecer relaciones: Se determinaron las
relaciones entre estas entidades (un vehículo puede tener múltiples
mantenimientos, un empleado puede ser responsable de varios vehículos).
Crear un diagrama de entidad-relación: Se
representó visualmente la estructura de la base de datos, mostrando las
entidades y sus relaciones.
Diseñar tablas: Se definieron las tablas
necesarias para almacenar la información, especificando los campos y las claves
primarias y foráneas.
Entendido. A partir de los objetivos proporcionados, se estructurará un tutorial detallado sobre el diseño y la creación de una base de datos relacional para gestionar información de vehículos y sus mantenimientos.
Tutorial: Diseño y Creación de una Base de Datos Relacional para Gestión de Vehículos y Mantenimientos
Este tutorial te guiará paso a paso en el proceso de diseñar y estructurar una base de datos relacional, enfocándose en la gestión de vehículos y sus respectivos mantenimientos. Utilizaremos los principios del modelado de datos para asegurar una estructura lógica y eficiente.
1. Identificar la Información Relevante (Entidades y Atributos)
El primer paso es abstraer la información del mundo real y categorizarla en entidades (objetos principales) y atributos (sus características). Aunque el enunciado original menciona "imágenes", en este contexto, asumiremos que las imágenes contienen la siguiente información textual para su procesamiento:
- Vehículos: Necesitamos almacenar datos sobre cada automóvil, camión, etc.
- Empleados: Quienes realizan los mantenimientos.
- Mantenimientos: Los registros de cada servicio o reparación realizado a un vehículo.
A continuación, desglosemos cada entidad con sus posibles atributos:
-
Entidad: Vehículo
ID_Vehiculo
(Identificador único, clave primaria)Marca
(Ej. Toyota, Ford, Nissan)Modelo
(Ej. Corolla, F-150, Altima)Año
(Año de fabricación)Placa
(Número de matrícula)Color
Numero_Motor
(Identificador único del motor)Tipo_Combustible
(Ej. Gasolina, Diesel, Eléctrico)Propietario_Nombre
(Si se gestiona un único propietario, o se podría crear una entidad "Propietario")
-
Entidad: Empleado
ID_Empleado
(Identificador único, clave primaria)Nombre
Apellido
Cargo
(Ej. Mecánico, Técnico, Gerente)Telefono
Email
-
Entidad: Mantenimiento
ID_Mantenimiento
(Identificador único, clave primaria)ID_Vehiculo
(Clave foránea que enlaza alVehiculo
al que se le realizó el mantenimiento)ID_Empleado
(Clave foránea que enlaza alEmpleado
que realizó el mantenimiento)Fecha_Mantenimiento
Tipo_Mantenimiento
(Ej. Cambio de aceite, Revisión, Reparación de frenos)Costo
Observaciones
(Descripción detallada del trabajo realizado)
2. Establecer Relaciones entre Entidades
Una vez identificadas las entidades y sus atributos, el siguiente paso es comprender cómo se interconectan. Esto se conoce como establecer las relaciones, que definen cómo los datos de una tabla se asocian con los datos de otra.
Analicemos las relaciones clave:
-
Vehículo y Mantenimiento:
- Un Vehículo puede tener múltiples Mantenimientos.
- Un Mantenimiento se realiza a un único Vehículo.
- Tipo de Relación: Uno a Muchos (1:N) entre
Vehículo
yMantenimiento
. La clave primaria deVehículo
(ID_Vehiculo
) se convierte en una clave foránea enMantenimiento
.
-
Empleado y Mantenimiento:
- Un Empleado puede realizar múltiples Mantenimientos.
- Un Mantenimiento es realizado por un único Empleado (en este modelo simplificado, si fueran varios, necesitaríamos una tabla intermedia).
- Tipo de Relación: Uno a Muchos (1:N) entre
Empleado
yMantenimiento
. La clave primaria deEmpleado
(ID_Empleado
) se convierte en una clave foránea enMantenimiento
.
-
Empleado y Vehículo (Responsabilidad):
-
Un Empleado puede ser responsable de varios Vehículos.
-
Un Vehículo puede ser atendido por varios Empleados (a lo largo del tiempo o para diferentes tipos de mantenimiento). Esto sugiere una relación de Muchos a Muchos (N:M). Para resolver esto en una base de datos relacional, se introduce una tabla intermedia o de "unión".
-
Entidad de Unión: Asignacion_Empleado_Vehiculo
ID_Asignacion
(Clave primaria)ID_Empleado
(Clave foránea)ID_Vehiculo
(Clave foránea)Fecha_Asignacion
(Cuándo se asignó el empleado a ese vehículo)Rol_Asignacion
(Ej. Mecánico Principal, Especialista en Motor)- Tipo de Relación: Muchos a Muchos (N:M) entre
Empleado
yVehículo
, resuelta por la entidadAsignacion_Empleado_Vehiculo
.
-
3. Crear un Diagrama de Entidad-Relación (DER)
El Diagrama Entidad-Relación es la representación visual de las entidades y sus relaciones. Utilizaremos la notación "patas de gallo" por su claridad en mostrar la cardinalidad (uno, muchos).
+-----------+ +-------------+ +---------------+ +-----------+
| Vehiculo | | Asignacion_ | | Mantenimiento | | Empleado |
| | | Emp_Vehiculo| | | | |
+-----------+ +-------------+ +---------------+ +-----------+
| ID_Vehiculo (PK) | ID_Asignacion (PK) | ID_Mantenimiento (PK) | ID_Empleado (PK) |
| Marca | ID_Vehiculo (FK) | ID_Vehiculo (FK) | Nombre |
| Modelo | ID_Empleado (FK) | ID_Empleado (FK) | Apellido |
| Año | Fecha_Asignacion | Fecha_Mantenimiento | Cargo |
| Placa | Rol_Asignacion | Tipo_Mantenimiento | Telefono |
| Color +-------------+ | Costo | Email |
| Num_Motor /|\ | | | Observaciones +-----------+
| Tipo_Combustible | | | +---------------+
| Propietario_Nombre | | |
+-----------+ | | |
|--------------|----|-----------|--------------------|
| (Uno) | | (Muchos) | (Uno) | (Muchos)
| | | | |
(CERO o UNO)----(CERO o MUCHOS)-----< (UNO)-------------< (UNO o MUCHOS)
Cardinalidades explicadas:
* Un VEHÍCULO (1) puede tener CERO o MUCHAS ASIGNACIONES_EMP_VEHICULO (0..N).
* Una ASIGNACIÓN_EMP_VEHICULO (1) se refiere a UN ÚNICO VEHÍCULO (1).
* Un EMPLEADO (1) puede tener CERO o MUCHAS ASIGNACIONES_EMP_VEHICULO (0..N).
* Una ASIGNACIÓN_EMP_VEHICULO (1) se refiere a UN ÚNICO EMPLEADO (1).
* Un VEHÍCULO (1) puede tener CERO o MUCHOS MANTENIMIENTOS (0..N).
* Un MANTENIMIENTO (1) se realiza sobre UN ÚNICO VEHÍCULO (1).
* Un EMPLEADO (1) puede realizar CERO o MUCHOS MANTENIMIENTOS (0..N).
* Un MANTENIMIENTO (1) es realizado por UN ÚNICO EMPLEADO (1).
4. Diseñar Tablas (Esquema Relacional)
Con el DER como guía, el siguiente paso es transformar este modelo conceptual en un diseño lógico de tablas, especificando los tipos de datos y las restricciones de clave primaria y foránea.
-
Tabla:
Vehiculos
id_vehiculo
INT PRIMARY KEY AUTO_INCREMENT (o VARCHAR para placas si es más práctico como PK)marca
VARCHAR(50) NOT NULLmodelo
VARCHAR(50) NOT NULLaño
INTplaca
VARCHAR(10) UNIQUE NOT NULLcolor
VARCHAR(30)numero_motor
VARCHAR(50) UNIQUEtipo_combustible
VARCHAR(20)propietario_nombre
VARCHAR(100) (asumiendo que es un campo simple por ahora)
-
Tabla:
Empleados
id_empleado
INT PRIMARY KEY AUTO_INCREMENTnombre
VARCHAR(50) NOT NULLapellido
VARCHAR(50) NOT NULLcargo
VARCHAR(50)telefono
VARCHAR(20)email
VARCHAR(100) UNIQUE
-
Tabla:
Mantenimientos
id_mantenimiento
INT PRIMARY KEY AUTO_INCREMENTid_vehiculo
INT NOT NULL (FOREIGN KEY REFERENCESVehiculos(id_vehiculo)
)id_empleado
INT NOT NULL (FOREIGN KEY REFERENCESEmpleados(id_empleado)
)fecha_mantenimiento
DATE NOT NULLtipo_mantenimiento
VARCHAR(100) NOT NULLcosto
DECIMAL(10, 2)observaciones
TEXT
-
Tabla:
Asignaciones_Empleado_Vehiculo
(Tabla para relación N:M)id_asignacion
INT PRIMARY KEY AUTO_INCREMENTid_empleado
INT NOT NULL (FOREIGN KEY REFERENCESEmpleados(id_empleado)
)id_vehiculo
INT NOT NULL (FOREIGN KEY REFERENCESVehiculos(id_vehiculo)
)fecha_asignacion
DATErol_asignacion
VARCHAR(50)- UNIQUE(
id_empleado
,id_vehiculo
,fecha_asignacion
) (Para evitar asignaciones duplicadas el mismo día)
5. Escribir Sentencias SQL para Crear las Tablas
Ahora, translate estos diseños de tabla en sentencias SQL, utilizando un lenguaje como MySQL o PostgreSQL (las diferencias suelen ser menores para CREATE TABLE
).
-- Creación de la tabla Vehiculos
CREATE TABLE Vehiculos (
id_vehiculo INT AUTO_INCREMENT PRIMARY KEY,
marca VARCHAR(50) NOT NULL,
modelo VARCHAR(50) NOT NULL,
año INT,
placa VARCHAR(10) UNIQUE NOT NULL,
color VARCHAR(30),
numero_motor VARCHAR(50) UNIQUE,
tipo_combustible VARCHAR(20),
propietario_nombre VARCHAR(100)
);
-- Creación de la tabla Empleados
CREATE TABLE Empleados (
id_empleado INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
apellido VARCHAR(50) NOT NULL,
cargo VARCHAR(50),
telefono VARCHAR(20),
email VARCHAR(100) UNIQUE
);
-- Creación de la tabla Mantenimientos
CREATE TABLE Mantenimientos (
id_mantenimiento INT AUTO_INCREMENT PRIMARY KEY,
id_vehiculo INT NOT NULL,
id_empleado INT NOT NULL,
fecha_mantenimiento DATE NOT NULL,
tipo_mantenimiento VARCHAR(100) NOT NULL,
costo DECIMAL(10, 2),
observaciones TEXT,
FOREIGN KEY (id_vehiculo) REFERENCES Vehiculos(id_vehiculo) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (id_empleado) REFERENCES Empleados(id_empleado) ON DELETE RESTRICT ON UPDATE CASCADE
);
-- Creación de la tabla Asignaciones_Empleado_Vehiculo (para la relación N:M)
CREATE TABLE Asignaciones_Empleado_Vehiculo (
id_asignacion INT AUTO_INCREMENT PRIMARY KEY,
id_empleado INT NOT NULL,
id_vehiculo INT NOT NULL,
fecha_asignacion DATE,
rol_asignacion VARCHAR(50),
FOREIGN KEY (id_empleado) REFERENCES Empleados(id_empleado) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (id_vehiculo) REFERENCES Vehiculos(id_vehiculo) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE (id_empleado, id_vehiculo, fecha_asignacion) -- Evita duplicados para la misma asignación en el mismo día
);
Consideraciones Adicionales sobre FOREIGN KEY
:
ON DELETE CASCADE
: Si un registro en la tablaVehiculos
(padre) es eliminado, todos losMantenimientos
yAsignaciones
asociados a ese vehículo en las tablas hijas también se eliminarán automáticamente. Útil cuando la información hija no tiene sentido sin el padre.ON DELETE RESTRICT
(o NO ACTION): Si unEmpleado
(padre) tieneMantenimientos
asociados en la tabla hija, no se permitirá eliminar eseEmpleado
. Se debe eliminar primero los registros de la tabla hija.ON UPDATE CASCADE
: Si elID_Vehiculo
oID_Empleado
cambia en la tabla padre, se actualizará automáticamente en las tablas hijas.
Al completar este tutorial, tendrás un modelo de base de datos relacional robusto y listo para ser implementado en un SGBD, capaz de gestionar eficientemente la información de vehículos y sus mantenimientos. ¿Te gustaría explorar cómo insertar datos o realizar consultas básicas?
Referencias
American Psychological Association. (2020). Publication Manual of the American Psychological Association (7th ed.). American Psychological
Comentarios
Publicar un comentario