Untitled
unknown
mysql
13 days ago
2.9 kB
1
Indexable
Never
-- Crear la tabla Enfermera CREATE TABLE Enfermera ( id_enfermera INT AUTO_INCREMENT, nombres VARCHAR(100), apellidos VARCHAR(100), codigo_enfermera VARCHAR(50), direccion VARCHAR(255), edad INT, genero ENUM('M', 'F'), documento_identificacion VARCHAR(50), telefono VARCHAR(20), cargo VARCHAR(50), email VARCHAR(100), PRIMARY KEY (id_enfermera) ); -- Crear el procedimiento almacenado para insertar 10,000 datos -- agrege transaction por si fallaba al hacer los insert DELIMITER $$ CREATE PROCEDURE InsertarEnfermeras() BEGIN DECLARE i INT DEFAULT 1; DECLARE exitHandler INT DEFAULT 0; -- Declaramos un manejador de errores para capturar cualquier problema DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN -- En caso de error, hacemos un rollback y terminamos ROLLBACK; SET exitHandler = 1; END; -- Iniciamos la transacción después de declarar los handlers START TRANSACTION; -- Bucle para insertar 10,000 enfermeras WHILE i <= 10000 DO INSERT INTO Enfermera (nombres, apellidos, codigo_enfermera, direccion, edad, genero, documento_identificacion, telefono, cargo, email) VALUES ( CONCAT('Nombre', i), CONCAT('Apellido', i), CONCAT('COD-', LPAD(i, 5, '0')), CONCAT('Direccion ', i), FLOOR(20 + (RAND() * 40)), -- Edad aleatoria entre 20 y 60 IF(RAND() > 0.5, 'F', 'M'), -- Genero aleatorio CONCAT('DOC-', LPAD(i, 6, '0')), CONCAT('555-555-', LPAD(i, 4, '0')), 'Enfermera', CONCAT('email', i, '@example.com') ); SET i = i + 1; END WHILE; -- Si no hubo errores, hacemos un commit IF exitHandler = 0 THEN COMMIT; END IF; END$$ DELIMITER ; CALL InsertarEnfermeras(); SELECT count(*) as total_registros FROM hospital.enfermera; -- Agregar una restricción "Primary key" sobre el campo id_enfermera -- Esto ya lo hemos hecho en el paso 1 al definir PRIMARY KEY (id_enfermera) en la creación de la tabla. Si queremos verificar que la clave primaria fue creada correctamente: SHOW INDEXES FROM Enfermera WHERE Key_name = 'PRIMARY'; -- Crear índices en los atributos necesarios CREATE INDEX idx_documento_identificacion ON Enfermera (documento_identificacion); CREATE INDEX idx_telefono ON Enfermera (telefono); CREATE INDEX idx_email ON Enfermera (email); -- Crear un índice compuesto sobre los campos "nombres" y "apellidos" CREATE INDEX idx_nombres_apellidos ON Enfermera (nombres, apellidos); -- Crear un índice compuesto sobre tres campos en la tabla Enfermera CREATE INDEX idx_edad_genero_cargo ON Enfermera (edad, genero, cargo); -- Listar todos los índices de la tabla Enfermera SHOW INDEXES FROM Enfermera;
Leave a Comment