233 lines
7.0 KiB
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); |