Está en la página 1de 3

CREATE DATABASE Simulacro;

/*==========================
============================*/
ALTER DATABASE Simulacro COLLATE = 'utf8mb4_bin';
USE Simulacro;
/*==========================
============================*/
CREATE TABLE Usuario (
Id_Usuario INT(10),
Nombre_Usuario VARCHAR(100) NOT NULL,
Clave VARCHAR(40),
Mail_Usuario VARCHAR(100),
CONSTRAINT consPK_Usuario PRIMARY KEY (Id_Usuario),
CONSTRAINT consUK1_Usuario UNIQUE(Mail_Usuario)
);
CREATE TABLE Rol (
Id_Rol INT(10),
Nombre_Rol VARCHAR(100),
Descripcion VARCHAR(200),
CONSTRAINT consPK_Rol PRIMARY KEY (Id_Rol)
);
CREATE TABLE UsuarioRol (
Id_Rol INT(10),
Id_Usuario INT(10),
CONSTRAINT consFK_UsuarioRol_Rol FOREIGN KEY (Id_Rol) REFERENCES Rol(Id_Rol),
CONSTRAINT consFK_UsuarioRol_Usuario FOREIGN KEY(Id_Usuario) REFERENCES
Usuario(Id_Usuario)
);
/*==========================
============================*/
CREATE TABLE Aud_Rol (
Id_Rol INT(10),
Nombre_Rol VARCHAR(100),
Descripcion VARCHAR(200),
event VARCHAR(30),
event_date DATETIME
);

CREATE TRIGGER tr_update_Rol BEFORE UPDATE ON Rol


FOR EACH ROW
INSERT INTO Aud_Rol
VALUES (OLD.Id_Rol,OLD.Nombre_Rol,OLD.Descripcion,
'ACTUALIZACION',NOW());

/*==========================
============================*/
CREATE TABLE UsuarioBackup (
Id_Usuario INT(10),
Nombre_Usuario VARCHAR(100) NOT NULL,
Clave VARCHAR(40),
Mail_Usuario VARCHAR(100)
);

DELIMITER $$
CREATE PROCEDURE Copia_Usuarios()
BEGIN
TRUNCATE TABLE UsuarioBackup;
INSERT INTO UsuarioBackup SELECT * FROM Usuario;
END$$
select * from Usuario;
select * from UsuarioBackup;

CALL Copia_Usuarios();

TRUNCATE TABLE UsuarioBackup;

/*==========================
============================*/

INSERT INTO Usuario(Id_Usuario,Nombre_Usuario,Clave,Mail_Usuario) VALUES


('82649173','Ramiro Meneses','8789rtert8rt#$%%#','ramirom@hotmail.com');
INSERT INTO Usuario(Id_Usuario,Nombre_Usuario,Clave,Mail_Usuario) VALUES
('57535159','Victorino Malo','Ajhhjgf565677"&&/(','victorinobad@gmail.com');
INSERT INTO Usuario(Id_Usuario,Nombre_Usuario,Clave,Mail_Usuario) VALUES
('84862426','Nena Jimenez','545454S$H&/&/','lanena@yahoo.com');
INSERT INTO Usuario(Id_Usuario,Nombre_Usuario,Clave,Mail_Usuario) VALUES
('14129896','Andres Guarin','5465kkj/(/787j','andresg@latimail.com');

INSERT INTO Rol(Id_Rol,Nombre_Rol,Descripcion) VALUES


('10001','Administrador','Tiene todos los accesos sinrestricciones');
INSERT INTO Rol(Id_Rol,Nombre_Rol,Descripcion) VALUES ('10002','Supervisor','Tiene
acceso a estudiantes y funcionarios');
INSERT INTO Rol(Id_Rol,Nombre_Rol,Descripcion) VALUES ('10003','Funcionario','Tiene
restricciones referentes al funcionario');
INSERT INTO Rol(Id_Rol,Nombre_Rol,Descripcion) VALUES ('10004','Estudiante','Tiene
restricciones referentes al estudiante');
INSERT INTO Rol(Id_Rol,Nombre_Rol,Descripcion) VALUES ('10005','Aspirante','Tiene
restricciones referentes al aspirante');

INSERT INTO UsuarioRol(Id_Rol,Id_Usuario) VALUES ('10003','82649173');


INSERT INTO UsuarioRol(Id_Rol,Id_Usuario) VALUES ('10005','84862426');
INSERT INTO UsuarioRol(Id_Rol,Id_Usuario) VALUES ('10004','57535159');
INSERT INTO UsuarioRol(Id_Rol,Id_Usuario) VALUES ('10002','82649173');
INSERT INTO UsuarioRol(Id_Rol,Id_Usuario) VALUES ('10004','84862426');
INSERT INTO UsuarioRol(Id_Rol,Id_Usuario) VALUES ('10003','14129896');
INSERT INTO UsuarioRol(Id_Rol,Id_Usuario) VALUES ('10005','82649173');
INSERT INTO UsuarioRol(Id_Rol,Id_Usuario) VALUES ('10001','14129896');
INSERT INTO UsuarioRol(Id_Rol,Id_Usuario) VALUES ('10004','14129896');
INSERT INTO UsuarioRol(Id_Rol,Id_Usuario) VALUES ('10003','84862426');
INSERT INTO UsuarioRol(Id_Rol,Id_Usuario) VALUES ('10002','84862426');

/*==========================
============================*/

SELECT Usuario.Id_Usuario,Usuario.Nombre_Usuario,Nombre_Rol
FROM Usuario,Rol,UsuarioRol
WHERE Usuario.Id_usuario=UsuarioRol.Id_Usuario
AND UsuarioRol.Id_Rol=Rol.Id_Rol
ORDER BY Rol.Nombre_Rol;

/*==========================
============================*/

SELECT
Usuario.Id_Usuario,Usuario.Nombre_Usuario,Usuario.Clave,Usuario.Mail_Usuario,
COUNT(Rol.Nombre_Rol) cant_Roles
FROM Usuario,Rol,UsuarioRol
WHERE Usuario.Id_usuario=UsuarioRol.Id_Usuario
AND UsuarioRol.Id_Rol=Rol.Id_Rol
GROUP BY
Usuario.Id_Usuario,Usuario.Nombre_Usuario,Usuario.Clave,Usuario.Mail_Usuario
HAVING COUNT(Rol.Nombre_Rol) > 1;

También podría gustarte