Está en la página 1de 31

Instituto Politécnico Nacional

Unidad Profesional Interdisciplinaria de


Ingeniería y Tecnologías Avanzadas

Ingeniería Telemática

Bases de Datos Distribuidas

Segundo Departamental

Grupo 3TV2

Distribución, transacciones y federación de bases de datos

1
Índice

Tareas
Tarea 4 ………………………………………………………… Pág. 2
Ejercicios ………………………………………………………….
Pág. 6
Presentación 1 …………………………………………………………
Cierre

2
Arquitectura ANSI/SPARC
El objetivo principal de la arquitectura ANSI/SPARC es definir un SGBD con
el máximo grado de independencia, separando las aplicaciones de
usuario y la base de datos física. Para ello se utilizan tres niveles de
abstracción conocidos como interno, conceptual y externo.

1. El nivel interno es el más cercano a la máquina. Es una representación a


bajo nivel de la BD en la que se define la forma en la que los datos se
almacenan físicamente en la máquina. Se definen características como los
dispositivos en donde se almacenan los datos, el espacio que se reserva,
las estrategias de acceso, la creación de ficheros de índices, etc. Es
dependiente de la máquina en que se vaya a instalar la BD, del sistema
operativo que exista, etc.

2. El nivel conceptual tiene un esquema conceptual, que describe la


estructura de los datos que van a ser almacenados en la base de datos. El
esquema conceptual esconde los detalles del almacenamiento físico y se
concentra en describir entidades, tipos de datos, relaciones, operaciones
de usuario y restricciones .
3. El nivel externo o nivel de vista incluye varios esquemas externos o vistas
de usuario. Cada esquema externo describe la parte de la base de datos
en la que está interesado un grupo de usuarios en particular y esconde el
resto de la base de datos para esos usuarios. La información se manipula
sin saber cómo está almacenada internamente (nivel interno) ni su
organización (nivel conceptual).

El Nivel Externo

3
El nivel externo es el más cercano a los usuarios, es decir, es el que se
ocupa de la forma en la que los usuarios perciben los datos. El nivel externo
es del usuario individual. Estos usuarios pueden ser o bien

programadores de aplicaciones o usuarios finales con conocimientos muy


variables de informática. El administrador de la base de datos es un caso
especial (también debe interesarse por los demás niveles de la
arquitectura).
El Nivel Conceptual

El nivel conceptual es un nivel de mediación entre el nivel interno y externo.


La vista conceptual es una representación de toda la información
contenida en la base de datos, también (como en el caso de una vista
externa) en una forma un tanto abstracta si se compara con el
almacenamiento físico de los datos. Además, puede ser muy diferente de
la forma como percibe los datos cualquier usuario individual. A grandes
rasgos, la vista conceptual debe ser un panorama de los datos “tal como
son”, y no como por fuerza los perciben los usuarios debido a las
limitaciones del lenguaje o el equipo específicos utilizados, por ejemplo.

La vista conceptual se compone de varias ocurrencias de varios tipos de


registro conceptual. Por ejemplo, puede estar formada por un conjunto de
ocurrencias de registros de departamento unido un conjunto de
ocurrencias de registro de empleado y a un conjunto de ocurrencias de
registros de proveedor y a un conjunto de ocurrencia de registros de
parte... Un registro conceptual no es por necesidad idéntico a un registro
externo, por un lado, ni a un registro almacenado, por el otro.

El Nivel Interno

El tercer nivel de la arquitectura es el nivel interno. La vista interna es una


representación de bajo nivel de toda la base de datos; se compone de
varias ocurrencias de varios tipos de registro interno. Este último término es
el que utiliza ANSI/SPARC para referirse a la construcción que hemos
estado llamando registro almacenado. La vista interna, por tanto, todavía
está a un paso del nivel físico, ya que no manejo registros físicos (llamados
también páginas o bloques), ni otras consideraciones específicas de los
dispositivos como son los tamaños de cilindros o de pistas.

4
La vista interna se define mediante el esquema interno, el cual no sólo
define los diversos tipos de registros almacenados sino también especifica
que índices hay, cómo se representan los campos almacenados, en qué
secuencia física se encuentran los registros almacenados, etc. El esquema
interno se escribe con otro lenguaje más de definición de datos, el DDL
interno.
Normal;

5
1.- Distribución de la base de datos (Registro nacional de
Profesionistas)

use Registro_Nacional_Profesionistas
USE master
DROP DATABASE Registro_Nacional_Profesionistas

drop view Segmento_3


create view Segmento_3 as select * from dbo.[Base de datos nacional de
profesionistas]
where ENTIDAD in ('Distrito Federal', 'HIDALGO', 'MÉXICO');

Select * from Segmento_3


select * from Entidades
--CREACION DE LA TABLA CARRERAS:
drop table [dbo].[Carreras_Profesionales]
GO
Create table [dbo].[Carreras_Profesionales](
[Id_Carrera] [int] Primary Key identity (200000,1) NOT NULL,
[Descripcion][varchar](max) NOT NULL
)

--ANALISIS DE LOS DATOS PARA LLENADO


Select distinct Carrera, count(*)
from [dbo].[Base de datos nacional de profesionistas]
group by Carrera
order by 1

--Ajustes:

Update B
Set B.Carrera='NO DEFINIDA' --select *
from [dbo].[Base de datos nacional de profesionistas] B
where Carrera is null or Carrera ='(NULL)';

Update B
Set B.Carrera='NO DEFINIDA' --select *
from [dbo].[Base de datos nacional de profesionistas] B
where Carrera in ('BELLO PRETRA','CECILIA');

--cARGA DE DATOS DE cARRERAS


Insert into [dbo].[Carreras_Profesionales]([Descripcion])
Select distinct Carrera
from [dbo].[Segmento_3]
order by 1

--VERIFICACION DE LA CARGA
Select * from [dbo].Carreras_Profesionales
order by 1

--AGREGAR CAMPO PARA IDENTIFICADOR


Alter table [dbo].[Base de datos nacional de profesionistas] add Id_Carrera int;
GO

6
--VINCULACION DE LLAVES:
Update BD set Id_Carrera=C.Id_Carrera --select *
from [dbo].[Base de datos nacional de profesionistas] BD
inner join [dbo].Carreras_Profesionales C on C.Descripcion = BD.Carrera
inner join Segmento_3 S on S.entidad= BD.entidad ;

select * from Carreras_Profesionales

--CREAR TABLA ENTIDADES

--Ajuste extranjeros
Update B
Set B.Entidad='EXTRANJERO' --select *
from [dbo].[Base de datos nacional de profesionistas] B
where Entidad is NULL;

Update B
Set B.Entidad='NO DEFINIDA' --select *
from [dbo].[Base de datos nacional de profesionistas] B
where Entidad in ('BENEMÉRITA ESCUELA NORMAL DE COAHUILA', 'C.E.C. Y T.E. DE TABASCO
PLANTEL NO. 04 COMALCALCO',
'CEDULA CANCELADA', 'COLEGIO NACIONAL DE EDUCACIÓN PROFESIONAL TÉCNICA', 'ESCUELA DE
ENFERMERÍA DE LA SUBSECRETARÍA ESTATAL ',
'ESCUELA MEDICO MILITAR: [S.D.N.]','ESCUELA NORMAL JUAN ENRIQUEZ DE TLACOTALPAN,
VER.','ESCUELA NORMAL RURAL LIC. BENITO JUAREZ [PANOTLA,', 'ESCUELA NORMAL RURAL
LUIS VILLARREAL',
'INSTITUTO DE CIENCIAS Y ESTUDIOS SUPERIORES DE TAM', 'INSTITUTO LEONARDO BRAVO',
'INSTITUTO POLITÉCNICO NACIONAL', 'INSTITUTO TECNOLÓGICO DE SALTILLO (I.T.R.)',
'INSTITUTO TECNOLÓGICO DE VALLE DEL YAQUI (I.T.A. N', 'INSTITUTO TECNOLÓGICO DEL
VALLE DE OAXACA (I.T.A.', 'INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE ')
or Entidad like 'UNIVERSI%';

--CRETANDO TABLA ENTIDADES

drop table [dbo].[Entidades]


GO
Create table [dbo].[Entidades](
[Id_Entidad] [int] Primary Key identity (1,1) NOT NULL,
[Nombre][varchar](max) NOT NULL
)

insert into [dbo].[Entidades]([Nombre])


select distinct Entidad
from [dbo].[Base de datos nacional de profesionistas]
order by 1
--AGREGAR CAMPO PARA IDENTIFICADOR:
Alter Table [dbo].[Base de datos nacional de profesionistas] add Id_Entidad int;
GO
--Vinculacion de llaves:
Update BD Set Id_Entidad =E.Id_Entidad from
[dbo].[Base de datos nacional de profesionistas] BD
inner join [dbo].[Entidades] E on E.Nombre= BD.Entidad

select * from Entidades

7
--COORRER A PARTIOR DE AQUI

--TABLA INSTITUCIONES_EDUCATIVAS
drop table [dbo].[Instituciones_Educativas]
GO
Create table [dbo].[Instituciones_Educativas](
[Id_Institucion] [int] Primary Key identity (1,1) NOT NULL,
[Nombre][varchar](max) NOT NULL
)

insert into [dbo].[Instituciones_Educativas]([Nombre])


select distinct [INSTITUCION EDUCATIVA]
from [dbo].[Base de datos nacional de profesionistas]
order by 1
--AGREGAR CAMPO PARA IDENTIFICADOR:
Alter Table [dbo].[Base de datos nacional de profesionistas] add Id_Institucion int;
GO
--Vinculacion de llaves:
Update BD Set Id_Institucion =I.Id_Institucion -- select *
from [dbo].[Base de datos nacional de profesionistas] BD
inner join [dbo].[Instituciones_Educativas] I on I.Nombre= BD.[INSTITUCION
EDUCATIVA]
inner join Segmento_3 S on S.Entidad = BD.Entidad;

--TABLA PROFESIONISTAS
--Proceso para Profesionistas---------------

--Detectar inconsistencias
SELECT *
FROM [DBO].[Base de datos nacional de profesionistas] BD order by NOMBRE

SELECT * FROM Profesionistas;

SELECT DISTINCT BD.CEDULA, COUNT(*)


FROM [DBO].[Base de datos nacional de profesionistas] BD
GROUP BY BD.CEDULA
ORDER BY 2,1

--Corregir inconsistencias

Update B
Set B.Nombre='Sin_Nombre'
from [dbo].[Base de datos nacional de profesionistas] B
where B.Nombre is null or Nombre ='(NULL)';

Update B
Set B.Nombre='Sin_Nombre'
from [dbo].[Base de datos nacional de profesionistas] B
where B.Nombre in (
'--- --- - CANCELADO LE CORRESPONDE 188936 -',
'--- --- --- CANCELADO LE CORRESPONDE AE-1179 ---',
'--- --- --- CANCELADO LE CORRESPONDE AESSA-30110 -',
'--- --- --- HACER REFERENCIA A LA CÉDULA 0088648 -',

8
'--- --- -- SOLICITAR INFORMACION A LA DGP --',
'--- --- -- SOLICITAR INFORMACION A LA DGP --',
'-- -- -- SOLICITAR INFORMACION A LA DGP --',
'-- -- -- SOLICITAR INFORMACION A LA DGP --',
'-- -- -- SOLICITAR INFORMACION A LA DGP --',
'-- -- -- SOLICITAR INFORMACION A LA DGP --',
'-- -- -- SOLICITAR INFORMACION A LA DGP --',
'-- -- -- SOLICITAR INFORMACION A LA DGP --',
'-- -- -- SOLICITAR INFORMACION A LA DGP --',
'-- -- -- SOLICITAR INFORMACION A LA DGP --',
'-- -- -- SOLICITAR INFORMACION A LA DGP --',
'-- -- -- SOLICITAR INFORMACION A LA DGP --',
'-- -- -- SOLICITAR INFORMACION A LA DGP --',
'-- -- -- SOLICITAR INFORMACION A LA DGP --',
'-- -- --1364038 CAMBIA A 1364037 C2--',
'- - PERALES ISABEL DEL CARMEN',
'--- --- SOLICITAR INFORMACION A LA DGP',
'--- --- SOLICITAR INFORMACIÓN A LA DGP',
'-- -- --SOLICITAR INFORMACIÓN A LA DGP --',
'--- CANCELADO POR RESOLUCION DEL 21 DE NOVIEMBRE D',
'--- CANCELADO POR RESOLUCION DEL 23 DE NOVIEMBRE D',
'--- CANCELADO POR RESOLUCION DEL 23 DE NOVIEMBRE D',
'--- CANCELADO POR RESOLUCION DEL 23 DE NOVIEMBRE D',
'--- CANCELADO POR RESOLUCION DEL 23 DE NOVIEMBRE D',
'--- CANCELADO POR RESOLUCION DEL 23 DE NOVIEMBRE D',
'--- CANCELADO POR RESOLUCION DEL 23 DE NOVIEMBRE D',
'--- CANCELADO POR RESOLUCION DEL 28 DE NOVIEMBRE D',
'--- CANCELADO POR RESOLUCION DEL 30 DE AGOSTO DE 2');

--Creacion de vista provisional


CREATE VIEW Profesionistasv as select distinct (BD.NOMBRE) from
[Base de datos nacional de profesionistas] BD;

drop view Profesionistasv;


--Eliminacion de la tabla
DROP TABLE [DBO].Profesionistas
GO

--Creacion de tabla con nuevos campos,


CREATE TABLE [DBO].Profesionistas(
[Id_Profesionista][int] PRIMARY KEY IDENTITY(2000001,1) NOT NULL,
[Nombre][varchar](max) NOT NULL
)
GO

--Insertar datos a entidades corregidos


INSERT INTO [DBO].Profesionistas([Nombre])
SELECT DISTINCT P.NOMBRE
FROM [DBO].Profesionistasv P
ORDER BY 1

SELECT * from dbo.[Base de datos nacional de profesionistas] P where


P.Id_Profesionista='5000207';

--Comprobacion de los datos


SELECT *FROM [DBO].Profesionistas
ORDER BY 1

9
--AGREGAR CAMPO PARA IDENTIFICADOR
ALTER TABLE [DBO].[Base de datos nacional de profesionistas] ADD Id_Profesionista
INT;
GO

--Relacionar las tablas con id


UPDATE BD SET BD.Id_Profesionista = P.Id_Profesionista FROM
[DBO].[Base de datos nacional de profesionistas] BD
INNER JOIN [dbo].Profesionistas P ON P.Nombre = BD.NOMBRE
inner join Segmento_3 S on S.Entidad = BD.Entidad;
--INNER JOIN Profesionistasv P1 ON P1.NOMBRE = P.Nombre

--Comprobacion
select * from [Base de datos nacional de profesionistas] where cedula ='0001686'
select * from [Base de datos nacional de profesionistas] where cedula ='4963418'

--Creacion de tabla con nuevos campos,


CREATE TABLE [DBO].Cedulas_Profesionales(
[Id_Profesionista][int] NOT NULL,
[Cedula_Profesional][varchar](255),
[Id_Carrera][int],
[Id_Institucion][int],
[Id_Entidad][int],
CONSTRAINT PK_Cedulas_Prof PRIMARY KEY
(Id_Profesionista,[Cedula_Profesional],Id_Carrera )
)
GO

drop table Cedulas_Profesionales

INSERT INTO DBO.Cedulas_Profesionales ([Id_Profesionista], [Cedula_Profesional],


[Id_Carrera], [Id_Institucion],[Id_Entidad])
SELECT DISTINCT [Id_Profesionista], [CEDULA], [Id_Carrera],
[Id_Institucion],[Id_Entidad]
FROM Segmento_3 S3;

select * from Carreras_Profesionales


select * from Entidades
select * from cedulas_Profesionales

Alter table Cedulas_Profesionales


add constraint FKProfesionista
foreign key (Id_Profesionista) REFERENCES Profesionistas

Alter table Cedulas_Profesionales


add constraint FKCarrera
foreign key (Id_Carrera) REFERENCES Carreras_Profesionales

Alter table Cedulas_Profesionales


add constraint FKInstitucion
foreign key (Id_Institucion) REFERENCES Instituciones_Educativas

Alter table Cedulas_Profesionales


add constraint FKEntidad

10
foreign key (Id_Entidad) REFERENCES Entidades
2.- Consultas distribuidas (Openquery, Opendatasource)

-CANTIDAD DE EGRESADO ORDENADOS DE MAYOR A MENOR

Select E3.Nombre , count (CP3.Id_Profesionista) as No_Profesionistas


from Cedulas_Profesionales CP3 inner join Entidades E3
on CP3.Id_Entidad= E3.Id_Entidad
group by E3.Nombre

union

--REGION 1:
Select E1.Nombre , count (CP1.Id_Profesionista) as No_Profesionistas
from SV1.[Registro_Nacional_Profesionistas].dbo.Cedula_Profesional CP1 inner join
Entidades E1 on CP1.Id_Entidad= E1.Id_Entidad
group by E1.Nombre

union
--REGION 2:

Select E2.Nombre , count (CP2.Id_Profesionista) as No_Profesionistas


from SV2.[Registro_Nacional_Profesionistas].dbo.Cedula_Profesional CP2 inner join
Entidades E2 on CP2.Id_Entidad= E2.Id_Entidad
group by E2.Nombre

union
--REGION 4:
Select E4.Nombre , count (CP4.Id_Profesionista) as No_Profesionistas
from SV4.[Registro_Nacional_Profesionistas].dbo.Cedula_Profesional CP4 inner join
Entidades E4 on CP4.Id_Entidad= E4.Id_Entidad
group by E4.Nombre

order by No_Profesionistas desc

--con OPENQUERY
Select E3.Nombre , count (CP3.Id_Profesionista) as No_Profesionistas
from Cedulas_Profesionales CP3 inner join Entidades E3
on CP3.Id_Entidad= E3.Id_Entidad
group by E3.Nombre

union

Select * from openquery (SV1,'Select E1.Nombre, count (CP1.Id_Profesionista) as


No_Profesionistas
from [Registro_Nacional_Profesionistas].dbo.Cedula_Profesional CP1 inner join
[Registro_Nacional_Profesionistas].dbo.Entidades E1 on CP1.Id_Entidad=
E1.Id_Entidad
group by E1.Nombre')
union

Select * from openquery (SV2,'Select E1.Nombre, count (CP1.Id_Profesionista) as


No_Profesionistas
from [Registro_Nacional_Profesionistas].dbo.Cedula_Profesional CP1 inner join

11
[Registro_Nacional_Profesionistas].dbo.Entidades E1 on CP1.Id_Entidad=
E1.Id_Entidad
group by E1.Nombre')
union
Select * from openquery (SV4,'Select E1.Nombre, count (CP1.Id_Profesionista) as
No_Profesionistas
from [Registro_Nacional_Profesionistas].dbo.Cedula_Profesional CP1 inner join
[Registro_Nacional_Profesionistas].dbo.Entidades E1 on CP1.Id_Entidad=
E1.Id_Entidad
group by E1.Nombre')
order by No_Profesionistas desc

--CON OPENDATASOURCE:
Select E3.Nombre , count (CP3.Id_Profesionista) as No_Profesionistas
from Cedulas_Profesionales CP3 inner join Entidades E3
on CP3.Id_Entidad= E3.Id_Entidad
group by E3.Nombre

union

Select E1.Nombre , count (CP1.Id_Profesionista) as No_Profesionistas from


OPENDATASOURCE ('SSISOLEDB','Data Source=PC20-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').[Registro_Nacional_Profesionistas].dbo.Cedula
_Profesional CP1 inner join
Entidades E1 on CP1.Id_Entidad= E1.Id_Entidad
group by E1.Nombre

union

Select E2.Nombre , count (CP2.Id_Profesionista) as No_Profesionistas from


OPENDATASOURCE ('SSISOLEDB','Data Source=PC23-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').[Registro_Nacional_Profesionistas].dbo.Cedula
_Profesional CP1 inner join
Entidades E2 on CP2.Id_Entidad= E2.Id_Entidad
group by E2.Nombre

union

Select E4.Nombre , count (CP4.Id_Profesionista) as No_Profesionistas from


OPENDATASOURCE ('SSISOLEDB','Data Source=PC21-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').[Registro_Nacional_Profesionistas].dbo.Cedula
_Profesional CP1 inner join
Entidades E4 on CP4.Id_Entidad= E4.Id_Entidad
group by E4.Nombre

----CONSULTA 2:

--CANTIDAD DE EGRESADOS POR INSTITUCION Y NIVEL:

--CNSULTA NORMAL:
select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as
Cantidad,'TECNICOS' as Grado
from Cedulas_Profesionales CP
inner join Instituciones_Educativas I on CP.Id_Institucion = I.Id_Institucion
inner join Carreras_Profesionales C on C.Id_Carrera = CP.Id_Carrera

12
where C.Descripcion LIKE '%TÉCNICO%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'TECNICOS' as Grado
from sv1.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv1.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv1.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%TÉCNICO%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'TECNICOS' as Grado
from sv2.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv2.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv2.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%TÉCNICO%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'TECNICOS' as Grado
from sv4.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv4.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv4.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%TÉCNICO%'
group by I.Nombre

UNION
-------------------------------------------------------------------------
--LICENCIATUARAS

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'LICENCIATURA' as Grado
from Cedulas_Profesionales CP
inner join Instituciones_Educativas I on CP.Id_Institucion = I.Id_Institucion
inner join Carreras_Profesionales C on C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%LICENCIATURA%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'LICENCIATURA' as Grado
from sv1.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP

13
inner join sv1.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv1.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%LICENCIATURA%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'LICENCIATURA' as Grado
from sv2.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv2.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv2.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%LICENCIATURA%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'LICENCIATURA' as Grado
from sv4.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv4.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv4.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%LICENCIATURA%'
group by I.Nombre

-----------------maestria
UNION

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'MAESTRÍA' as Grado
from Cedulas_Profesionales CP
inner join Instituciones_Educativas I on CP.Id_Institucion = I.Id_Institucion
inner join Carreras_Profesionales C on C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%MAESTRÍA%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'MAESTRÍA' as Grado
from sv1.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv1.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv1.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%MAESTRÍA%'
group by I.Nombre

union

14
select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as
Cantidad,'MAESTRÍA' as Grado
from sv2.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv2.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv2.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%MAESTRÍA%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'MAESTRÍA' as Grado
from sv4.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv4.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv4.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%MAESTRÍA%'
group by I.Nombre

-----------
union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'DOCTORADO' as Grado
from Cedulas_Profesionales CP
inner join Instituciones_Educativas I on CP.Id_Institucion = I.Id_Institucion
inner join Carreras_Profesionales C on C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%DOCTORADO%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'DOCTORADO' as Grado
from sv1.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv1.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv1.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%DOCTORADO%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'DOCTORADO' as Grado
from sv2.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv2.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv2.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%DOCTORADO%'
group by I.Nombre

15
union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'DOCTORADO' as Grado
from sv4.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv4.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv4.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%DOCTORADO%'
group by I.Nombre

--CON OPENQUERY

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'TECNICOS' as Grado
from Cedulas_Profesionales CP
inner join Instituciones_Educativas I on CP.Id_Institucion = I.Id_Institucion
inner join Carreras_Profesionales C on C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%TÉCNICO%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'TECNICOS' as Grado from openquery (SV1,'Select *
from Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera')
where C.Descripcion LIKE '%TÉCNICO%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'TECNICOS' as Grado from openquery (SV2,'Select *
from Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera')
where C.Descripcion LIKE '%TÉCNICO%'
group by I.Nombre

union
select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as
Cantidad,'TECNICOS' as Grado from openquery (SV4,'Select *
from Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera')

16
where C.Descripcion LIKE '%TÉCNICO%'
group by I.Nombre

UNION
-------------------------------------------------------------------------
--LICENCIATUARAS

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'LICENCIATURA' as Grado
from Cedulas_Profesionales CP
inner join Instituciones_Educativas I on CP.Id_Institucion = I.Id_Institucion
inner join Carreras_Profesionales C on C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%LICENCIATURA%'
group by I.Nombre

union

Select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'LICENCIATURA' as Grado from openquery (SV1,'select *
from sv1.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv1.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv1.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera')
where C.Descripcion LIKE '%LICENCIATURA%'
group by I.Nombre

union

Select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'LICENCIATURA' from openquery (SV2,'select *
from sv2.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv2.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv2.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera')
where C.Descripcion LIKE '%LICENCIATURA%'
group by I.Nombre

union

Select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'LICENCIATURA' from openquery (SV4,'select *
from sv4.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv4.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv4.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera')
where C.Descripcion LIKE '%LICENCIATURA%'
group by I.Nombre

-----------------maestria
UNION

17
select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as
Cantidad,'MAESTRÍA' as Grado
from Cedulas_Profesionales CP
inner join Instituciones_Educativas I on CP.Id_Institucion = I.Id_Institucion
inner join Carreras_Profesionales C on C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%MAESTRÍA%'
group by I.Nombre

union

Select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'MAESTRÍA' as Gradofrom openquery (SV1,'select *
from sv1.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv1.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv1.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera')
where C.Descripcion LIKE '%MAESTRÍA%'
group by I.Nombre

union

Select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'MAESTRÍA' from openquery (SV2,'select *
from sv2.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv2.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv2.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera')
where C.Descripcion LIKE '%MAESTRÍA%'
group by I.Nombre

union

Select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'MAESTRÍA' from openquery (SV4,'select *
from sv4.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv4.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv4.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera')
where C.Descripcion LIKE '%MAESTRÍA%'
group by I.Nombre

-----------
union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'DOCTORADO' as Grado
from Cedulas_Profesionales CP
inner join Instituciones_Educativas I on CP.Id_Institucion = I.Id_Institucion
inner join Carreras_Profesionales C on C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%DOCTORADO%'
group by I.Nombre

union

18
Select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as
Cantidad,'DOCTORADO' as Grado from openquery (SV1,'select *
from sv1.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv1.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv1.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera')
where C.Descripcion LIKE '%DOCTORADO%'
group by I.Nombre

union

Select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'DOCTORADO' from openquery (SV2,'select *
from sv2.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv2.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv2.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera')
where C.Descripcion LIKE '%DOCTORADO%'
group by I.Nombre

union

Select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'DOCTORADO' from openquery (SV4,'select *
from sv4.Registro_Nacional_Profesionistas.dbo.Cedula_Profesional CP
inner join sv4.Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join sv4.Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera')
where C.Descripcion LIKE '%DOCTORADO%'
group by I.Nombre

--CON OPENDATASOURCE:

Select E2.Nombre , count (CP2.Id_Profesionista) as No_Profesionistas from


OPENDATASOURCE ('SSISOLEDB','Data Source=PC23-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').[Registro_Nacional_Profesionistas].dbo.Cedula
_Profesional CP1 inner join
Entidades E2 on CP2.Id_Entidad= E2.Id_Entidad
group by E2.Nombre

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'TECNICOS' as Grado
from Cedulas_Profesionales CP
inner join Instituciones_Educativas I on CP.Id_Institucion = I.Id_Institucion
inner join Carreras_Profesionales C on C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%TÉCNICO%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'TECNICOS' as Grado

19
from OPENDATASOURCE ('SSISOLEDB','Data Source=PC20-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').Registro_Nacional_Profesionistas.dbo.Cedula_P
rofesional CP
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%TÉCNICO%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'TECNICOS' as Grado
from OPENDATASOURCE ('SSISOLEDB','Data Source=PC23-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').Registro_Nacional_Profesionistas.dbo.Cedula_P
rofesional CP
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%TÉCNICO%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'TECNICOS' as Grado
from OPENDATASOURCE ('SSISOLEDB','Data Source=PC22-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').Registro_Nacional_Profesionistas.dbo.Cedula_P
rofesional CP
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%TÉCNICO%'
group by I.Nombre

UNION
-------------------------------------------------------------------------
--LICENCIATUARAS

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'LICENCIATURA' as Grado
from Cedulas_Profesionales CP
inner join Instituciones_Educativas I on CP.Id_Institucion = I.Id_Institucion
inner join Carreras_Profesionales C on C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%LICENCIATURA%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'LICENCIATURA' as Grado

20
from OPENDATASOURCE ('SSISOLEDB','Data Source=PC20-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').Registro_Nacional_Profesionistas.dbo.Cedula_P
rofesional CP
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%LICENCIATURA%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'LICENCIATURA' as Grado
from OPENDATASOURCE ('SSISOLEDB','Data Source=PC23-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').Registro_Nacional_Profesionistas.dbo.Cedula_P
rofesional CP
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%LICENCIATURA%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'LICENCIATURA' as Grado
from OPENDATASOURCE ('SSISOLEDB','Data Source=PC21-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').Registro_Nacional_Profesionistas.dbo.Cedula_P
rofesional CP
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%LICENCIATURA%'
group by I.Nombre

-----------------maestria
UNION

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'MAESTRÍA' as Grado
from Cedulas_Profesionales CP
inner join Instituciones_Educativas I on CP.Id_Institucion = I.Id_Institucion
inner join Carreras_Profesionales C on C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%MAESTRÍA%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'MAESTRÍA' as Grado
from OPENDATASOURCE ('SSISOLEDB','Data Source=PC20-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').Registro_Nacional_Profesionistas.dbo.Cedula_P
rofesional CP

21
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%MAESTRÍA%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'MAESTRÍA' as Grado
from OPENDATASOURCE ('SSISOLEDB','Data Source=PC23-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').Registro_Nacional_Profesionistas.dbo.Cedula_P
rofesional CP
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%MAESTRÍA%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'MAESTRÍA' as Grado
from OPENDATASOURCE ('SSISOLEDB','Data Source=PC21-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').Registro_Nacional_Profesionistas.dbo.Cedula_P
rofesional CP
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%MAESTRÍA%'
group by I.Nombre

-----------
union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'DOCTORADO' as Grado
from Cedulas_Profesionales CP
inner join Instituciones_Educativas I on CP.Id_Institucion = I.Id_Institucion
inner join Carreras_Profesionales C on C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%DOCTORADO%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'DOCTORADO' as Grado
from OPENDATASOURCE ('SSISOLEDB','Data Source=PC20-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').Registro_Nacional_Profesionistas.dbo.Cedula_P
rofesional CP
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion

22
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%DOCTORADO%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'DOCTORADO' as Grado
from OPENDATASOURCE ('SSISOLEDB','Data Source=PC23-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').Registro_Nacional_Profesionistas.dbo.Cedula_P
rofesional CP
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%DOCTORADO%'
group by I.Nombre

union

select distinct I.Nombre as Escuela, count(CP.Id_Profesionista) as


Cantidad,'DOCTORADO' as Grado
from OPENDATASOURCE ('SSISOLEDB','Data Source=PC21-LABTELE2\SQLLABS;User
ID=Laboratorios;Password=Estudiantes').Registro_Nacional_Profesionistas.dbo.Cedula_P
rofesional CP
inner join Registro_Nacional_Profesionistas.dbo.Instituciones_Educativas I on
CP.Id_Institucion = I.Id_Institucion
inner join Registro_Nacional_Profesionistas.dbo.Carreras_Profesionales C on
C.Id_Carrera = CP.Id_Carrera
where C.Descripcion LIKE '%DOCTORADO%'
group by I.Nombre

3.- Ejercicio de Transacciones distribuidas aplicado a los 4 segmentos


--1. Actualizar el nombre “INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE “ y
cambiarlo por “TECNOLÓGICO DE MONTERREY (ITESM) X” donde X es el numero de su
segmento.
--El nombre se debe actualizar en todos los nodos involucrados
BEGIN DISTRIBUTED TRANSACTION
--instancia local
UPDATE IE set IE.Nombre = 'TECNOLÓGICO DE MONTERREY (ITESM) 1' --select Nombre
from SV1.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas IE
where IE.Nombre like '%INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE%'
--SV2
UPDATE IE set IE.Nombre = 'TECNOLÓGICO DE MONTERREY (ITESM) 2'
from SV2.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas IE
where Nombre like '%INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE%'
--SV3
UPDATE SV3.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas
set Nombre = 'TECNOLÓGICO DE MONTERREY (ITESM) 3'
where Nombre like '%INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE%'
--SV4
UPDATE [Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas

23
set Nombre = 'TECNOLÓGICO DE MONTERREY (ITESM) 4'
where Nombre like '%INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE%'
COMMIT TRANSACTION;
GO

--comprobar el cambio
select *from SV1.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas
where Nombre like '%(ITESM) %'
select *from SV2.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas
where Nombre like '%(ITESM) %'

select *from SV3.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas


where Nombre like '%(ITESM) %'
select *from [Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas where
Nombre like '%(ITESM) %'

--2. Agregue un campo llamado “Nivel” a las tablas de Carreras_Profesionales de los


diversos nodos, y genere el
script que actualice dicho campo si la carrera inicia con alguna de las
palabras: • TÉCNICO.- TÉCNICO, BACHILLER, PROFESIONAL • LICENCIATURA.- LICENCIATURA,
PROFESOR • POSTGRADO.- ESPECIALIDAD • MAESTRÍA.- MAESTRÍA • DOCTORADO.- DOCTORADO

ALTER TABLE SV1.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales add


Nivel Varchar(MAX);
ALTER TABLE SV2.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales add
Nivel Varchar(MAX);
ALTER TABLE SV3.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales add
Nivel Varchar(MAX);
ALTER TABLE [Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales add Nivel
Varchar(MAX);

BEGIN DISTRIBUTED TRANSACTION


--Segmento 1
update CP set CP.Nivel = 'TÉCNICO'
from SV1.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP
where CP.Descripcion like 'TÉCNICO%' or CP.Descripcion like 'BACHILLER%' or
CP.Descripcion like 'PROFESIONAL%';

update CP set CP.Nivel = 'LICENCIATURA'


from SV1.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP
where CP.Descripcion like 'LICENCIATURA%' or CP.Descripcion like 'PROFESOR%';

update CP set CP.Nivel = 'POSTGRADO'


from SV1.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP where
CP.Descripcion like 'ESPECIALIDAD%';

update CP set CP.Nivel = 'MAESTRÍA'


from SV1.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP where
CP.Descripcion like 'MAESTRÍA%';

update CP set CP.Nivel = 'DOCTORADO'


from SV1.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP where
CP.Descripcion like 'DOCTORADO%';

24
--Segmento 2
update CP set CP.Nivel = 'TÉCNICO'
from SV2.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP
where CP.Descripcion like 'TÉCNICO%' or CP.Descripcion like 'BACHILLER%' or
CP.Descripcion like 'PROFESIONAL%';

update CP set CP.Nivel = 'LICENCIATURA'


from SV2.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP
where CP.Descripcion like 'LICENCIATURA%' or CP.Descripcion like 'PROFESOR%';

update CP set CP.Nivel = 'POSTGRADO'


from SV2.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP where
CP.Descripcion like 'ESPECIALIDAD%';

update CP set CP.Nivel = 'MAESTRÍA'


from SV2.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP where
CP.Descripcion like 'MAESTRÍA%';

update CP set CP.Nivel = 'DOCTORADO'


from SV2.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP where
CP.Descripcion like 'DOCTORADO%';

--Segmento 3
update CP set CP.Nivel = 'TÉCNICO'
from SV3.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP
where CP.Descripcion like 'TÉCNICO%' or CP.Descripcion like 'BACHILLER%' or
CP.Descripcion like 'PROFESIONAL%';

update CP set CP.Nivel = 'LICENCIATURA'


from SV3.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP
where CP.Descripcion like 'LICENCIATURA%' or CP.Descripcion like 'PROFESOR%';

update CP set CP.Nivel = 'POSTGRADO'


from SV3.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP where
CP.Descripcion like 'ESPECIALIDAD%';

update CP set CP.Nivel = 'MAESTRÍA'


from SV3.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP where
CP.Descripcion like 'MAESTRÍA%';

update CP set CP.Nivel = 'DOCTORADO'


from SV3.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP where
CP.Descripcion like 'DOCTORADO%';

--Segmento 4
update CP set CP.Nivel = 'TÉCNICO'
from [Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP
where Descripcion like 'TÉCNICO%' or Descripcion like 'BACHILLER%' or Descripcion
like 'PROFESIONAL%';

update CP set CP.Nivel = 'LICENCIATURA'

from [Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP
where Descripcion like 'LICENCIATURA%' or Descripcion like 'PROFESOR%';

25
update CP set CP.Nivel = 'POSTGRADO'
from [Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP where
Descripcion like 'ESPECIALIDAD%';

update CP set CP.Nivel = 'MAESTRÍA'


from [Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP where
Descripcion like 'MAESTRÍA%';

update CP set CP.Nivel = 'DOCTORADO'

from [Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales CP where


Descripcion like 'DOCTORADO%';

COMMIT TRANSACTION;
GO

--3. Agregue un campo llamado “Cobertura” a las tablas de Instituciones_Educativas


de los diversos nodos, y genere el script
--que actualice dicho campo de acuerdo a las siguientes consideraciones: • LOCAL- Si
la institución tiene presencia solamente en una entidad • NACIONAL.-
--Si la institución tiene presencia en más de 1 entidad

--Segemnto 1
select count(distinct E.Nombre) as Num,IE.Nombre as Inombre into #TempS1
from sv1.[Registro_Nacional_Profesionistas].dbo.Cedulas_Profesionales CP
inner join sv1.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas IE on
CP.Id_Institucion = IE.Id_Institucion
inner join sv1.[Registro_Nacional_Profesionistas].dbo.Entidades E on CP.Id_Entidad =
E.Id_Entidad
group by IE.Nombre;
--Segemnto 2
select count(distinct E.Nombre) as Num,IE.Nombre as Inombre into #TempS2
from sv2.[Registro_Nacional_Profesionistas].dbo.Cedulas_Profesionales CP
inner join sv2.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas IE on
CP.Id_Institucion = IE.Id_Institucion
inner join sv2.[Registro_Nacional_Profesionistas].dbo.Entidades E on CP.Id_Entidad =
E.Id_Entidad
group by IE.Nombre;
--Segemnto 3
select count(distinct E.Nombre) as Num,IE.Nombre as Inombre into #TempS3
from sv3.[Registro_Nacional_Profesionistas].dbo.Cedulas_Profesionales CP
inner join sv3.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas IE on
CP.Id_Institucion = IE.Id_Institucion
inner join sv3.[Registro_Nacional_Profesionistas].dbo.Entidades E on CP.Id_Entidad =
E.Id_Entidad
group by IE.Nombre;
--Segemnto 4
select count(distinct E.Nombre) as Num,IE.Nombre as Inombre into #TempS4
from [Registro_Nacional_Profesionistas].dbo.Cedulas_Profesionales CP
inner join [Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas IE on
CP.Id_Institucion = IE.Id_Institucion
inner join [Registro_Nacional_Profesionistas].dbo.Entidades E on CP.Id_Entidad =
E.Id_Entidad
group by IE.Nombre;

26
alter table Instituciones_Educativas add Cobertura Varchar(MAX);

BEGIN DISTRIBUTED TRANSACTION


--Actualizar segemento 1

update IE set IE.Cobertura = 'Local'


from sv1.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas IE INNER
JOIN #TempS1 T1
ON T1.INombre = IE.Nombre and T1.NUM = 1

update IE set IE.Cobertura = 'Nacional'


from sv1.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas IE INNER
JOIN #TempS1 T1
ON T1.INombre = IE.Nombre and T1.NUM > 1

--Actualizar segemento 2

update IE set IE.Cobertura = 'Local'


from sv2.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas IE INNER
JOIN #TempS2 T2
ON T2.INombre = IE.Nombre and T2.NUM = 1

update IE set IE.Cobertura = 'Nacional'


from sv2.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas IE INNER
JOIN #TempS2 T2
ON T2.INombre = IE.Nombre and T2.NUM > 1

--Actualizar segemento 3

update IE set IE.Cobertura = 'Local'


from sv3.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas IE INNER
JOIN #TempS3 T3
ON T3.INombre = IE.Nombre and T3.NUM = 1

update IE set IE.Cobertura = 'Nacional'


from sv3.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas IE INNER
JOIN #TempS3 T3
ON T3.INombre = IE.Nombre and T3.NUM > 1

--Actualizar segemento 4
update IE set IE.Cobertura = 'Local'
from [Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas IE INNER JOIN
#TempS4 T4
ON T4.INombre = IE.Nombre and T4.NUM = 1

update IE set IE.Cobertura = 'Nacional'


from [Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas IE INNER JOIN
#TempS4 T4
ON T4.INombre = IE.Nombre and T4.NUM > 1

COMMIT TRANSACTION;
GO

27
4.- Ejercicio de federación de base de datos y consultas
mediante vistas consolidadas
----4.- Ejercicio de federación de base de datos y consultas mediante vistas
consolidadas

--Creacion de las vistas consolidadas

create view Carreras_Profesionales_Fed


as
(select *from Carreras_Profesionales
union
select *from SV2.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales
union
select *from SV3.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales
union
select *from SV4.[Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales
)
go;
create view Cedulas_Profesionales_Fed
as
(select distinct *from Cedulas_Profesionales
union
select distinct *from
SV2.[Registro_Nacional_Profesionistas].dbo.Cedulas_Profesionales
union
select distinct *from
SV3.[Registro_Nacional_Profesionistas].dbo.Cedulas_Profesionales
union
select distinct *from
SV4.[Registro_Nacional_Profesionistas].dbo.Cedulas_Profesionales
)
go;

create view Profesionistas_Fed


as
(select distinct *from Profesionistas
union
select distinct *from SV2.[Registro_Nacional_Profesionistas].dbo.Profesionistas
union
select distinct *from SV3.[Registro_Nacional_Profesionistas].dbo.Profesionistas
union
select distinct *from SV4.[Registro_Nacional_Profesionistas].dbo.Profesionistas
)
go;

create view Instituciones_Educativas_Fed


as
(select distinct *from Instituciones_Educativas
union

28
select distinct *from
SV2.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas
union
select distinct *from
SV3.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas
union
select distinct *from
SV4.[Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas
)
go;

--Listado de Egresados de cada entidad clasificados por Nivel


select distinct E.Nombre as NombreEntidad, COUNT(IE.Nombre) as CantInstituciones
from [Registro_Nacional_Profesionistas].dbo.Cedulas_Profesionales_Fed CP
left join [Registro_Nacional_Profesionistas].dbo.Entidades E on CP.Id_Entidad =
E.Id_Entidad
inner join [Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas_Fed IE on
CP.Id_Institucion = IE.Id_Institucion
group BY E.Nombre
order by CantInstituciones Desc

--•Listado de Maestros y Doctores egresados de alguna institución tecnológica


(Politécnico y Tecnológicos Regionales)

select CPS.Nivel, P.Nombre as NombreEgresado, IE.Nombre as NombreInstitucion


from [Registro_Nacional_Profesionistas].dbo.Cedulas_Profesionales_Fed CP

29
inner join [Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales_Fed CPS on
CP.Id_Carrera = CPS.Id_Carrera
inner join [Registro_Nacional_Profesionistas].dbo.Profesionistas_Fed P on
CP.Id_Profesionista = P.Id_Profesionista
inner join [Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas_Fed IE on
CP.Id_Institucion = IE.Id_Institucion
where (IE.Nombre like '%Politécnico%' or IE.Nombre like '%Tecnológico%') and
(CPS.Nivel = 'Maestría' or CPS.Nivel = 'Doctorado')
order by Nivel Desc

-- •Listado de Abogados (Leyes) egresados agregando cédula, institución y


entidad ordenados por entidad e institución

select CP.Cedulas_Profesionales, P.Nombre, C_P.Descripcion as Carrera, IE.Nombre as


Escuela, E.Nombre as Entidad
from [Registro_Nacional_Profesionistas].dbo.Cedulas_Profesionales_Fed CP
inner join [Registro_Nacional_Profesionistas].dbo.Profesionistas_Fed P on
CP.Id_Profesionista = P.Id_Profesionista
inner join [Registro_Nacional_Profesionistas].dbo.Carreras_Profesionales_Fed C_P on
CP.Id_Carrera = C_P.Id_Carrera
inner join [Registro_Nacional_Profesionistas].dbo.Entidades E on CP.Id_Entidad =
E.Id_Entidad

30
inner join [Registro_Nacional_Profesionistas].dbo.Instituciones_Educativas_Fed IE on
CP.Id_Institucion = IE.Id_Institucion
where C_P.Descripcion like '%DERECHO%'
order by Entidad, Escuela;

31

También podría gustarte