Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ingeniería Telemática
Segundo Departamental
Grupo 3TV2
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.
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
El Nivel Interno
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
--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');
--VERIFICACION DE LA CARGA
Select * from [dbo].Carreras_Profesionales
order by 1
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 ;
--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%';
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
)
--TABLA PROFESIONISTAS
--Proceso para Profesionistas---------------
--Detectar inconsistencias
SELECT *
FROM [DBO].[Base de datos nacional de profesionistas] BD order by NOMBRE
--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');
9
--AGREGAR CAMPO PARA IDENTIFICADOR
ALTER TABLE [DBO].[Base de datos nacional de profesionistas] ADD Id_Profesionista
INT;
GO
--Comprobacion
select * from [Base de datos nacional de profesionistas] where cedula ='0001686'
select * from [Base de datos nacional de profesionistas] where cedula ='4963418'
10
foreign key (Id_Entidad) REFERENCES Entidades
2.- Consultas distribuidas (Openquery, Opendatasource)
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:
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
--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
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
union
union
----CONSULTA 2:
--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
union
union
UNION
-------------------------------------------------------------------------
--LICENCIATUARAS
union
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
union
-----------------maestria
UNION
union
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
-----------
union
union
union
15
union
--CON OPENQUERY
union
union
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
union
union
union
-----------------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
union
union
-----------
union
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
union
--CON OPENDATASOURCE:
union
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
union
UNION
-------------------------------------------------------------------------
--LICENCIATUARAS
union
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
union
-----------------maestria
UNION
union
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
union
-----------
union
union
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
union
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) %'
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%';
--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%';
--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%';
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%';
COMMIT TRANSACTION;
GO
--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);
--Actualizar segemento 2
--Actualizar segemento 3
--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
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
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;
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
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