LANIA_Proyecto/carpeta_temporal/script_base_datos/lania_cc.sql

233 lines
7.0 KiB
SQL

DROP DATABASE IF EXISTS laniacc;
CREATE DATABASE laniacc DEFAULT CHARACTER SET utf8mb4;
USE laniacc;
-- DDL -------------------------------------------------------------------------------------
CREATE TABLE genero (
id_genero TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
descripcion VARCHAR(20) NOT NULL UNIQUE
) ENGINE=InnoDB;
CREATE TABLE rango_edad (
id_rango_edad TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
descripcion VARCHAR(15) NOT NULL UNIQUE
) ENGINE=InnoDB;
CREATE TABLE tipo_identificacion (
id_tipo_id TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
descripcion VARCHAR(50) NOT NULL UNIQUE
) ENGINE=InnoDB;
CREATE TABLE nivel_estudio (
id_nivel TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
descripcion VARCHAR(50) NOT NULL UNIQUE
) ENGINE=InnoDB;
CREATE TABLE giro (
id_giro TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
descripcion VARCHAR(100) NOT NULL UNIQUE
) ENGINE=InnoDB;
CREATE TABLE examen (
id_examen SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre_examen VARCHAR(150) NOT NULL UNIQUE
) ENGINE=InnoDB;
-- IMPORTAR BASE DE DATOS DE INEGI
-- Catalogo de motivos
CREATE TABLE motivo_examen (
id INT AUTO_INCREMENT PRIMARY KEY,
descripcion VARCHAR(255) NOT NULL UNIQUE
);
-- 1. TABLA CANDIDATO (datos básicos)
CREATE TABLE candidato (
id_candidato INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
fecha_entrada DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
fecha_salida DATETIME DEFAULT NULL,
nombres VARCHAR(100) NOT NULL,
primer_apellido VARCHAR(100) NOT NULL,
segundo_apellido VARCHAR(100) DEFAULT NULL,
correo VARCHAR(150) NOT NULL,
telefono VARCHAR(30) NOT NULL,
id_examen SMALLINT UNSIGNED NOT NULL,
id_tipo_id TINYINT UNSIGNED NOT NULL,
id_rango_edad TINYINT UNSIGNED NOT NULL,
id_genero TINYINT UNSIGNED NOT NULL,
FOREIGN KEY (id_examen) REFERENCES examen(id_examen),
FOREIGN KEY (id_tipo_id) REFERENCES tipo_identificacion(id_tipo_id),
FOREIGN KEY (id_rango_edad) REFERENCES rango_edad(id_rango_edad),
FOREIGN KEY (id_genero) REFERENCES genero(id_genero)
) ENGINE=InnoDB;
-- 2. TABLA INFO_CANDIDATOS (datos extendidos)
CREATE TABLE info_candidatos (
id_candidato INT UNSIGNED PRIMARY KEY,
id_pais INT NOT NULL,
id_estado INT DEFAULT NULL,
id_municipio INT DEFAULT NULL,
id_colonia INT DEFAULT NULL,
id_nivel TINYINT UNSIGNED NOT NULL,
id_giro TINYINT UNSIGNED NOT NULL,
nombre_empresa_institucion VARCHAR(150) NOT NULL,
id_motivo_examen INT NOT NULL,
calificacion_servicio TINYINT NOT NULL,
consentimiento_pub TINYINT NOT NULL,
FOREIGN KEY (id_candidato) REFERENCES candidato(id_candidato)
ON DELETE CASCADE,
FOREIGN KEY (id_pais) REFERENCES paises(id),
FOREIGN KEY (id_estado) REFERENCES estados(id),
FOREIGN KEY (id_municipio) REFERENCES municipios(id),
FOREIGN KEY (id_colonia) REFERENCES colonias(id),
FOREIGN KEY (id_nivel) REFERENCES nivel_estudio(id_nivel),
FOREIGN KEY (id_giro) REFERENCES giro(id_giro),
FOREIGN KEY (id_motivo_examen) REFERENCES motivo_examen(id)
) ENGINE=InnoDB;
CREATE TABLE usuario (
id INT AUTO_INCREMENT PRIMARY KEY,
usuario VARCHAR(150) UNIQUE NOT NULL,
contrasena VARCHAR(255) NOT NULL
) ENGINE=InnoDB;
-- OAuth 2.0
CREATE TABLE oauth_clients (
client_id VARCHAR(80) NOT NULL,
client_secret VARCHAR(80) NOT NULL,
redirect_uri VARCHAR(2000) DEFAULT NULL,
grant_types VARCHAR(80) DEFAULT NULL,
scope VARCHAR(4000) DEFAULT NULL,
user_id VARCHAR(80) DEFAULT NULL,
PRIMARY KEY (client_id)
);
CREATE TABLE oauth_access_tokens (
access_token VARCHAR(255) NOT NULL,
client_id VARCHAR(80) NOT NULL,
user_id VARCHAR(80) DEFAULT NULL,
expires TIMESTAMP NOT NULL,
scope VARCHAR(4000) DEFAULT NULL,
PRIMARY KEY (access_token)
);
CREATE TABLE oauth_refresh_tokens (
refresh_token VARCHAR(40) NOT NULL,
client_id VARCHAR(80) NOT NULL,
user_id VARCHAR(80) DEFAULT NULL,
expires TIMESTAMP NOT NULL,
scope VARCHAR(4000) DEFAULT NULL,
PRIMARY KEY (refresh_token)
);
CREATE TABLE oauth_scopes (
scope VARCHAR(80) NOT NULL,
is_default BOOLEAN,
PRIMARY KEY (scope)
);
-- DML -------------------------------------------------------------------------------------
-- Inserción catalogo "genero":
INSERT INTO genero (id_genero, descripcion) VALUES
(1, 'Masculino'),
(2, 'Femenino'),
(3, 'Prefiero no decir');
-- Inserción catalogo "rango_edad":
INSERT INTO rango_edad (id_rango_edad, descripcion) VALUES
(1, 'Menos de 18'),
(2, '18-24'),
(3, '24-34'),
(4, '35-44'),
(5, '44-54'),
(6, '55-64'),
(7, '65 o más');
-- Inserción catalogo "tipo_identificacion":
INSERT INTO tipo_identificacion (id_tipo_id, descripcion) VALUES
(1, 'Credencial de estudiante'),
(2, 'INE'),
(3, 'Pasaporte'),
(4, 'Licencia de conducir'),
(5, 'Cartilla militar');
-- Inserción catalogo "nivel_estudio":
INSERT INTO nivel_estudio (id_nivel, descripcion) VALUES
(1, 'Primaria'),
(2, 'Secundaria'),
(3, 'Bachillerato'),
(4, 'Técnico Superior Universitario'),
(5, 'Licenciatura'),
(6, 'Maestría'),
(7, 'Doctorado'),
(8, 'Otro');
-- Inserción catalogo "giro_empresa" considerando los giros de las empresas más comunes:
INSERT INTO giro (id_giro, descripcion) VALUES
(1, 'Tecnologías de la información'),
(2, 'Gobierno'),
(3, 'Finanzas'),
(4, 'Salud'),
(5, 'Educación'),
(6, 'Telecomunicaciones'),
(7, 'Retail'),
(8, 'Manufactura'),
(9, 'Logística y transporte'),
(10, 'Construcción'),
(11, 'Turismo y hospitalidad'),
(12, 'Energía y recursos Naturales'),
(13, 'Agricultura y alimentación'),
(14, 'Medios de comunicación y entretenimiento'),
(15, 'Otros');
-- Inserción catalogo "examen" se refiere al nombre de la organización a la que pertence el examen:
INSERT INTO examen (id_examen, nombre_examen) VALUES
(1, 'Cisco'),
(2, 'IBM'),
(3, 'Microsoft'),
(4, 'Oracle'),
(5, 'SAP'),
(6, 'CompTIA'),
(7, 'Amazon Web Services'),
(8, 'Google Cloud Platform'),
(9, 'Salesforce'),
(10, 'Red Hat'),
(11, 'VMware'),
(12, 'Palo Alto Networks'),
(13, 'Fortinet'),
(14, 'Juniper Networks'),
(15, 'Otros');
-- Depues de importar la bd de inegi
insert into paises(nombre) values('Otro');
-- Inserts para poblar la tabla motivos_examen_certificacion
INSERT INTO motivo_examen (descripcion) VALUES
('Mejora u oportunidad laboral'),
('Requisito de la empresa o puesto'),
('Incremento salarial'),
('Crecimiento personal'),
('Cambio de carrera o sector laboral'),
('Requisito académico'),
('Mantenerse actualizado'),
('Requisito para obtener otra certificación de nivel superior');
INSERT INTO oauth_clients (client_id, client_secret, redirect_uri, grant_types, scope, user_id)
VALUES ('testclient', 'testpass', NULL, 'client_credentials', 'basic', NULL);
INSERT INTO oauth_scopes (scope, is_default) VALUES ('basic', true);