105 - vistas (encriptar) |
Una empresa almacena la informaciĆ³n de sus empleados en dos tablas llamadas "empleados" y "secciones".
Eliminamos las tablas, si existen:
if object_id('empleados') is not null drop table empleados; if object_id('secciones') is not null drop table secciones;
Creamos las tablas:
create table secciones( codigo tinyint identity, nombre varchar(20), sueldo decimal(5,2) constraint CK_secciones_sueldo check (sueldo>=0), constraint PK_secciones primary key (codigo) ); create table empleados( legajo int identity, documento char(8) constraint CK_empleados_documento check (documento like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), sexo char(1) constraint CK_empleados_sexo check (sexo in ('f','m')), apellido varchar(20), nombre varchar(20), domicilio varchar(30), seccion tinyint not null, cantidadhijos tinyint constraint CK_empleados_hijos check (cantidadhijos>=0), estadocivil char(10) constraint CK_empleados_estadocivil check (estadocivil in ('casado','divorciado','soltero','viudo')), fechaingreso datetime, constraint PK_empleados primary key (legajo), constraint FK_empleados_seccion foreign key (seccion) references secciones(codigo) on update cascade, constraint UQ_empleados_documento unique(documento) );
Eliminamos la vista "vista_empleados" si existe:
if object_id('vista_empleados') is not null drop view vista_empleados;
Creamos una vista con su definiciĆ³n oculta:
create view vista_empleados with encryption as select (apellido+' '+e.nombre) as nombre,sexo, s.nombre as seccion, cantidadhijos from empleados as e join secciones as s on codigo=seccion;
Ejecutamos el procedimiento almacenado del sistema "sp_helptext" seguido del nombre de una vista encriptada:
exec sp_helptext vista_empleados;
No se muestra.