Sunteți pe pagina 1din 97

BASE DE DATOS

INDICE

SISTEMA MANEJADOR DE BASE DE DATOS.................................................6


NIVELES DE DESCRIPCION DE DATOS...................................................................................8

ESQUEMA DE BASE DE DATOS...............................................................................................9


Ejemplo de Esquemas........................................................................................................... 10
Agencia de Viajes.................................................................................................................. 10

FACTURACIÓN.............................................................................................12

RENTA – CAR................................................................................................13

BIBLIOTECA..................................................................................................14

VENTA DE COMPUTADORAS......................................................................14

ALIMENTACIÓN............................................................................................15
INFORMACION.......................................................................................................................... 19

DEFINICIÒN DE REGISTRO..................................................................................................... 19

MODELO ENTIDAD – RELACION............................................................................................ 19

ENTIDAD................................................................................................................................... 19

TIPO DE ENTIDAD.................................................................................................................... 20
OCURRENCIA DE UNA ENTIDAD........................................................................................ 20
CONJUNTO DE ENTIDADES................................................................................................ 20
NOTACIÒN Y REPRESENTACIÒN GRAFICA......................................................................21

CONCEPTO DE RELACIÒN..................................................................................................... 21

TIPOS DE RELACION............................................................................................................... 21

OCURRENCIA DE UN TIPO DE RELACION............................................................................21

CONJUNTO DE RELACIONES................................................................................................. 22

TIPOS DE RELACIONES.......................................................................................................... 23
Relación 1:1........................................................................................................................... 23
Relación 1: Muchos................................................................................................................ 23
Relación Muchos: Muchos..................................................................................................... 24
Relación 0: Muchos................................................................................................................ 24

Atributo:.................................................................................................................................... 25

1
BASE DE DATOS

PROPIEDADES DE UN ATRIBUTO.......................................................................................... 25
Atributo Simple o Repetitivo................................................................................................... 25
Atributo Elemental o compuesto............................................................................................ 25
Atributo Obligatorio o Facultativo.......................................................................................... 26

RESTRICCIONES DE INTEGRIDAD......................................................................................... 27
Restricciones de Integridad Estática.....................................................................................27
Restricciones de Integridad Dinámica....................................................................................27

Tipos de Conjuntos.................................................................................................................. 27

OTRAS DEFINICIONES IMPORTANTES..................................................................................28

Diseño Lógico........................................................................................................................... 28

Tabla.......................................................................................................................................... 28

Clave Principal.......................................................................................................................... 28

Clave Foránea........................................................................................................................... 28

CONCEPTO DE NORMALIZACIÓN.............................................................28
Formas normales..................................................................................................................... 28
1ra Forma Normal.................................................................................................................. 28
2da Forma Normal................................................................................................................. 30

EJEMPLOS MODELOS ENTIDAD-RELACIÓN...........................................33


NOMINA................................................................................................................................. 35
RECAUDACION..................................................................................................................... 37
Modelo de una clínica............................................................................................................ 38
CORRECCION DE LA PRUEBA............................................................................................ 39

SQL................................................................................................................40
Create table nombre_tabla.............................................................¡Error! Marcador no definido.

Select............................................................................................... ¡Error! Marcador no definido.

Consultas........................................................................................ ¡Error! Marcador no definido.


Select........................................................................................ ¡Error! Marcador no definido.

SALIDA............................................................................................ ¡Error! Marcador no definido.


Distinct......................................................................................¡Error! Marcador no definido.
Where.......................................................................................¡Error! Marcador no definido.

EXPRESIONES ARITMÉTICAS....................................................................43
CONDICIONES MULTIPLES..................................................................................................... 43

AND........................................................................................................................................... 43

OR.............................................................................................................................................. 43

IN................................................................................................................................................ 44

BETWEEN................................................................................................................................. 44

2
BASE DE DATOS

VALORES NULL........................................................................................................................ 44

ORDER BY................................................................................................................................ 45

FUNCIONES.............................................................................................................................. 46

FUNCIONES DE CARACTERES:............................................................................................. 46

CHR........................................................................................................................................... 46

INITCAP..................................................................................................................................... 46

LOWER...................................................................................................................................... 46

LPAD.......................................................................................................................................... 47

LTRIM......................................................................................................................................... 47

RPAQ......................................................................................................................................... 47

RTRIM.............................................................................................. ¡Error! Marcador no definido.

SUBSTR..................................................................................................................................... 48

UPPER....................................................................................................................................... 48

FUNCIONES DE CARACTERES QUE RETORNAN NUMEROS.............................................48

INSTR......................................................................................................................................... 48

LENGTN..................................................................................................................................... 49

FUNCIONES ARITMÉTICAS.........................................................................49
GREATEST.............................................................................................................50

ARITMÉTICA DE FECHA.......................................................................................................... 51

FUNCIONES DE AGRUPACION:..................................................................52
SUM........................................................................................................................................... 52

AVG............................................................................................................................................ 52

MIN............................................................................................................................................. 52

COUNT:...................................................................................................................................... 53

STDDEV..................................................................................................................................... 53

VARIANCE:................................................................................................................................ 53

GROUP BY................................................................................................................................. 53

HAVING...................................................................................................................................... 54

UNION DE DOS O MAS TABLAS.................................................................55

3
BASE DE DATOS

OUTER JOINS...............................................................................................57
OPERADORES DE CONJUNTOS............................................................................................. 58

INTERSECT............................................................................................................................... 59

MINUS........................................................................................................................................ 59

ROLLBACK:.............................................................................................................................. 60

COMMIT..................................................................................................................................... 60

UPDATE..................................................................................................................................... 60

TRUNCATE................................................................................................................................ 60

VISTAS....................................................................................................................................... 61
INDICES................................................................................................................................ 61
REPORTE:............................................................................................................................. 61

4
BASE DE DATOS

CONCEPTOS BASICOS DE UN SISTEMA MANEJADOR


DE BASE DE DATOS

El desarrollo de los sistemas administradores de bases de datos se debió en


gran parte a los problemas presentados con los sistemas de procesamiento de
archivos convencionales.

PROGRAMAS
SISTEMA SISTEMA
SISTEMA DE
DE DE
AYUDA NOMINA
REGISTRO ECONOMICA

ARCHIVOS

El uso de sistemas independientes del procesamiento de archivos, ocasiona


una gran redundancia de datos implica duplicación de los elementos de datos
en diferentes archivos. Por ejemplo el número de cursos en los que esta
inscrito un estudiante puede almacenarse en uno de los archivos del sistema
de registro en un archivo del Sistema de Ayuda Económica. Si un estudiante
es empleado de la Universidad y beneficiario de una beca su nombre y
dirección podría estar apareciendo en tres lugares distintos, la desventaja más
obvia de la redundancia de datos, es el espacio de almacenamiento adicional
que se requiere sin embargo hay problemas graves pues la misma información
se almacena varias veces y por lo tanto debe actualizar varias veces lo que
requiere uso de recurso humano para controles, mayor tiempo de computo más
operaciones de entrada-salida.

Damos una solución:

REGISTRO AYUDA NOMINA ASESORIA


PROGRAMAS ECONOMICA

BASE DE
DATOS
INTEGRADA

5
BASE DE DATOS

En esta figura se muestra un problema sobre redundancia de datos la


información de todos los sistemas de archivos se agrupan en una sola base de
datos integrada para toda la universidad que contiene solo una copia de cada
elemento de datos lógicos de tal manera que se elimina la redundancia.

La base de datos en si consta de un conjunto de archivos las diferentes


aplicaciones que requieren el mismo elemento de datos pueden compartir el
archivo que contenga la información necesaria.

Los programas de aplicación que trata directamente con los archivos físicos
son dependientes de los datos, es decir dependen de características como el
formato de registros y la organización de los archivos, siempre que estas
características se cambian los programas deben modificarse.

Problemas semejantes a los descritos pueden evitarse haciendo que los


programas de aplicación sean independientes de detalles como la organización
del archivo y el formato de registros.

6
BASE DE DATOS

REGISTRO AYUDA NOMINA


ECONOMICA

SOLICITUD DESCRIPCION
DE UN REGISTRO
LOGICO SMBD DE LAS
CORRESPOND
ECIA
DE LOS DATOS

E/S FISICA

Los programas de usuario no tratan directamente con los archivos de la base


de datos sino que tiene acceso a los datos por medio de solicitudes al sistema
manejador de base de datos.
Los programas de aplicación solicitan datos en un nivel lógico con
independencia de cómo estén realmente almacenados en los archivos por
ejemplo:
Un programa puede solicitar información de la inscripción actual de un
estudiante en particular al SISTEMA MANEJADOR DE BASE DE DATOS
determina que archivos físicos esta implicado y como acceder a ellos haciendo
referencia a un descripción de la correspondencia de los datos almacenados, la
independencia de los datos proporcionados por este enfoque significa que las
estructuras de los archivos se pueden cambiar sin afectar a los programas de
aplicación.

NIVELES DE DESCRIPCION DE DATOS

El uso de un sistema administrador de base de datos hace que los programas


de aplicación sean independientes de la forma de almacenar físicamente los
datos. Con los sistemas de archivos convencionales el programador se
encargaba de la descripción de la organización y en general de la técnica de
indexación de archivos. La información que almacena un sistema manejador de

7
BASE DE DATOS

base de datos SMBD puede considerarse de distintas formas según las


necesidades del usuario, la más general de dichas formas es una descripción
completa de la BASE DE DATOS llamada ESQUEMA

ESQUEMA DE BASE DE DATOS

Ejemplo de Subesquema de estudiantes universidad.

requisito
ESPECIALIDAD DESCRIPCIO DEPTO NUMERO
D N

especializado en

Estu
ID NOMBRE DIRECCIO ID NOMBRE DEPTO OFICINA
N
Estudiante Profesor asesor

Beneficiario Estudiante-empleado Profesor-empleado

TIPO CANTIDAD ID EMPLEO SUELDO


Ayuda Económica Nómina

8
BASE DE DATOS

Ejemplo de Esquemas

Grado Profesor

Especialidad ID Nombre Asignatura

Profesor – Alumno
Profesor – Ocupación

Alumno

ID Nombre Lug_Trab Telef. ID Ocupación

Alumno – Representante
Representante

ID Nombre Lug. Trab Telef.


Representante - Ocupación

Agencia de Viajes

Cliente

CI Nombre Apell Direcc Telef. Cod. Ag.

Tipo - transporte Empleado

Cod Nombre Lugares Transporte Cod. Nombre Sueldo

9
BASE DE DATOS

Rol de Pagos

Empleado
Empleado tiene carga Cargos

Dept. RD Nombre Dir Telef. Fecha Ini Cargo Cod Nombre

Jornada de Trabajo

Horario Departamento

Cod Hora In Hora Sal Cod Nombre

Concepto Rol

Cod Tipo Nombre Aporte Imp Fond Ses


I E

Movimien. rol

Cod Fecha Valor Cod


Concepto Id

Trans – Variables

Cod Fecha Cant Valor

10
BASE DE DATOS

Consultorio Médico

Paciente

Nº Nombre C.I. Sexo Est.


Ficha Ciul

Paciente – Médico
Médico

Cod C.I. Sexo Esp

Médico – Empleado Historial

C.I. Espec Sueldo Deducción Nº Fecha Enferm Trat Med


Ficha Trat

Facturación

Cliente Proveedores

Id Cliente Nombre Dire Telef Mail Cod Nombre Dir Telef

Producto Cab. Fact

Cod Nombre Precio F.E. Stock Id Cliente Fecha RUC


F.O

Detalle Factura

Id Cod Cant Precio


Cliente Prod Detalle – Prov Prod

Codigo Codigo
Hist - Prec Producto Producto

Cod Fecha Precio


Prod

11
BASE DE DATOS

Renta – Car

Vehículo

Cod Chasis Nº Marca Color Matr Placas


Matri

Factura

Nº Cant Descripción Tiempo Precio Total


Fact

Mantenimiento

Cod Servicios Teléfono

Cliente
Cliente

C.I. Nombre Direc Telef.

Cliente – empleado

Empleado Garantía

ID C.I. Nombre Direc Tipo Costo

12
BASE DE DATOS

Biblioteca

Libro

Cod Nombre Materia Autor Edit


Libro

Usuario Préstamos

C.I. Nombre Dirección Telef. Curso Esp Cod Fecha Fecha Usuario
Prest Entrega

Empleado

Nombre Direcc Telef

Venta de Computadoras

Proveedor Prod. – Proveedor

Cod Nombre Dirección Telef. Mail Cod - Prod Cod - Proveedor

Cliente Producto

Cod Nombre Dirección Telef. Mail Cod Nombre Descripción Precio

Cabecera – Factura Detalle – Factura

Id. Cliente Fecha Fact RUC Nº Fact Cod Emp Cod Id. Cliente Cant
Prod

Empleado que emite la factura Historial – Precio

Cod Nombre Dirección Telef Cargo Cod Precio Fecha


Prod 13
BASE DE DATOS

Alimentación

Paciente

Nº Ficha Nombre Dirección Telef.

Enfermedades
del Paciente Enfermedad

Cod. Fact. Cod. Enfer Fecha Inicio Cod Enf Nombre Status

Cod Kit Cod Enf Descripción

14
BASE DE DATOS

Renta – Car
Cab Fact

Cod. Fecha RUC Cod ID


Prod Cliente

Vehículo

Cod. Nº Chasis Placas Matricula Color Modelo Descuento


Motor

Cliente Mantenimiento

ID Nombre Telef. Direc Mail Cod Servicio Tiempo


Ven

Vendedor Garantía

Cod C.I. Nombre Dir Cargo Tipo Valor


Ven Vehículo

Tiempo
Detalle
Horas Días Km/h
Cod Valor Id
Ven Cliente Historial - Precio

Cod Valor Fecha


Ven

15
BASE DE DATOS

BANCO

Cliente
Pertenece al banco
CI Nombre Apellido Dirección Telef.
Banco
COD Nombre Dirección RUC Tipo Tiene la cuenta
Cuenta
Nomina Saldo CI Tipo cuenta
Trabajo
en
Empleado
Préstamo
CI Nombre Dep. Cargo Cod.
Número Valor

Cargo Ocupa el cargo

Cod Descripción

HOJA DE CONTROL DE DOCUMENTOS

Empleado
Cod Nombre Dirección Télf. Sueldo paso

Empleado trabaja

Departamento Empresa Tipo Condición

Cod Nombre Cod Nombre Cod Nombre Cod Nombre

Dto. de la empresa

Cod Nombre Asunto Tipo documento Fecha Empleado envía Tipo condición

Nº Empleado Fecha Acción


Dpto responsable. Total
.
16
BASE DE DATOS

BOLETOS DE TRANPORTES

Historial/precio

Cliente
Cod Ruta Precio Fecha
Cod. Nombre CI Telf. Dirección Compra de
boletos Precio de
Ruta cada ruta

Nº. Cod. Cod. Cod. Cod. Descripción Tiempo
Empleado . Cliente Empleado Ruta Ruta

Cod. Nombre Dirección Telf. CI.


En el que
Vehículo viaja
Cargo
Cod Placa #Mad #chasis color
Cod. Dirección
Tipo de servicio

Cod. Tipo de
vehículo vehículos

17
BASE DE DATOS

INFORMACION

Designamos con la palabra información una pareja de elementos de los cuales


el primero constituye el nombre de la información y el segundo su valor también
llamado dato.

La información es un procesamiento de datos que cumplen con ciertas


características.

DEFINICIÒN DE REGISTRO

Se designa generalmente como registro de informaciones elementales


expresadas por su valor con una característica común.

Ejemplo:

PRODUCTO

COD NOMBRE PRECIO


1 COLAS 1.00

MODELO ENTIDAD – RELACION

Conceptos Básicos

ENTIDAD

Es una cosa concreta o abstracta perteneciente a la realidad de la cual


queremos grabar información. Una entidad existe únicamente si está
relacionada a un individuo o un grupo que le considere como un todo. Le
confiere una existencia autónoma y la distingue de otras entidades y de su
medio ambiente.

Ejemplo

PAIS REGIONES PRODUCTOS

CLIENTES DE UNA RED – ELECTRICA

Generalmente en un proceso de descripción no interesa a cada elemento


individual real o potencial más se considera las clases de elementos así
hablando de país lo definiremos como un territorio que tiene una autonomía

18
BASE DE DATOS

política y un nombre específico para este caso diremos que país es un tipo de
entidad.

Ejemplo
País TIPO DE ENTIDAD

La clase de todas las entidades posibles de este tipo es decir todas las
entidades posibles que verifiquen la definición de país.

TIPO DE ENTIDAD

Se clasifica todas las entidades posibles del mundo real que verifican la
definición constitutiva del tipo.

Ejemplo: País

OCURRENCIA DE UNA ENTIDAD

Es una entidad individual de un tipo dado, es decir un elemento de una clase


constituida por este tipo. Las expresiones de entidad y ocurrencia de una
entidad son equivalentes.

Ejemplo de Ocurrencia de Entidad

PAIS
ECUADOR
COLOMBIA
BELGICA
EEUU.

CONJUNTO DE ENTIDADES

Clasifica las entidades del mismo tipo que existe en un instante particular

Países Bolivarianos

Países Arca Andina

Unión Europea

Países de la OPEP

19
BASE DE DATOS

NOTACIÒN Y REPRESENTACIÒN GRAFICA

Se representa los nombres de los tipos de entidades con letras mayúsculas y


las ocurrencias de las entidades con letras minúsculas

CONCEPTO DE RELACIÒN
Una relación está definida por una correspondencia entre 2 o varias entidades
no necesariamente distintas en donde cada una asume un rol dado si
quisiéramos registrar la información relativa a está correspondencia una
relación puede tener uno o varios atributos.

Ejemplo: La afectación económica de la región o un país especifico.

TIPOS DE RELACION
Clasifica todas las relaciones posibles de la realidad que verifica la definición
constitutiva del tipo.

Utilizaremos la expresión R(E1,E2,..................En) para designar un tipo de


relación definida en los tipos de entidades desde E1,E2.......En no
necesariamente distintos

Como para el tipo de entidad también utilizaremos las letras mayúsculas para
representar el nombre del tipo de relación llamaremos grado de tipo de relación
al número del tipo de entidad no necesariamente distintos entre los cuales el
tipo de relación es definida.

Ejemplo

El TR de la relación REGION PAIS es de grado 2

OCURRENCIA DE UN TIPO DE RELACION

Es la relación de un tipo dado es decir un elemento de la clase constituida por


este tipo.

20
BASE DE DATOS

CONJUNTO DE RELACIONES

Clasifica las relaciones del mismo tipo que existen en un instante particular

PROPIEDADES BASICAS DE UN TIPO DE RELACION Todo tipo de relación


es caracterizado por dos propiedades la existencia y la multiplicidad de
ocurrencias estas dos propiedades distintas pueden ser generalizadas por la
propiedad global de conectividad.

Ejemplos PAIS
RELACION REGION

P1R1 R1
P1 P1R2 R2
P2 P2R3 R3
P3 P2R4 R4

Existencia
 País: Es considerado como país toda unidad de territorio con autonomía
política.

 Región: Constituye una parte dentro del conjunto de la unidad geográfica


que constituye un país

 Relación: Expresa la propiedad o pertenencia de una región dada a un país


dado.

De este ejemplo se puede concluir que una ocurrencia de país puede existir sin
dar lugar a una división de regiones.

Toda ocurrencia de Región implica la existencia de una relación con País

EMPLEADO RELACION DEPARTAMENTO

E1 E1D1 D1
E2 E2D1 D2
E3 E3D2 D3
E4 E4D3 D4

21
BASE DE DATOS

PRODUCTO RELACION CLIENTE

P1 P1C1 C1
P2 P1C2 C2
P3 P3C3 C3

TIPOS DE RELACIONES

Básicamente 3 tipos:

Relación 1:1 Una ocurrencia de una entidad se relaciona con una ocurrencia
de otra entidad.

Relación 1: Muchos Una ocurrencia de una entidad se relaciona con varias


ocurrencias de otra entidad

22
BASE DE DATOS

Relación Muchos: Muchos Varias ocurrencias de una entidad se relaciona


con varias ocurrencias de otra entidad

Relación 0: Muchos

23
BASE DE DATOS

Atributo: Característica o cualidad de una entidad, puede tomar una o varios


valores o grupo de valores

Ejemplo

Entidades Atributos Valor


País Nombre del País Ecuador
Superficie 283.561 KMZ
Población 8540.000 HB
Nombre-Provincias Pichincha, Guayas, Esmeraldas

Valor: Es una cadena de caracteres.

Tipo de Valor.- Clasifica a todos los valores posibles que verifiquen la


definición del tipo. Esta definición puede ser dada por la lista de elementos de
las clases, o por la propiedad que los miembros de la clase deben cumplirla.

Conjunto de Valores.- Es la clase de valores del mismo tipo que existen en


un instante particular

PROPIEDADES DE UN ATRIBUTO

Atributo Simple o Repetitivo.

Un atributo es simple si para una ocurrencia de un tipo de entidad o de


relación, el no puede tomar más que un solo valor.

Es repetitivo, si para una ocurrencia de un tipo de entidad o relación el puede


tomar varios valores de un mismo tipo.

Ejemplo: Código de una tabla de referencia como sexo, tipo de sangre, etc.

Atributo Elemental o compuesto.

Un Atributo es compuesto si para una ocurrencia de un tipo de entidad o


relación, le corresponde un grupo de valores de tipos diferentes y puede ser
descompuesto en otros atributos, de tipo diferente en el grupo de valores.

Un atributo que no se le puede descomponer es llamado elemental.

Ejemplo: Un atributo DIRECCIÓN Puede ser descompuesto en 4 atributos:

NOMBRE CALLE
NUMERO EN LA CALLE

24
BASE DE DATOS

NOMBRE INTERSECCION
NOMBRE CIUDAD

Atributo Obligatorio o Facultativo.

Todo atributo de un tipo de entidad en principio es considerado como


obligatorio, está unido por definición al sujeto que el describe. Se puede hacer
sin embargo que el atributo no tenga significado en el caso de ciertas
ocurrencias del tipo de entidad. Hablaremos entonces de valor inexistente.

Notación: Se utilizan las letras mayúsculas para representar el nombre de un


atributo o valor y letras minúsculas para representar el nombre de valores de
un tipo dado.
Para designar un tipo de entidad o un tipo de relación con sus atributos
empleamos las siguientes expresiones:

PARA UN TIPO DE ENTIDAD: E(A1,A2,...........AN)

PARA UN TIPO DE RELACION. R(E1,E2...............EN; A11,A12,...........A1N, A21...)

Síntesis de los Objetivos Conceptuales

El modelo Entidad_Relación es un modelo general no específico a un problema


particular que el analista utilizará para clasificar y estructurar la información
contenida en las aplicaciones escritas por los usuarios.

Este modelo se basa en cuatro objetos conceptuales: tipo de entidad, tipo de


relación, atributo y valor

El análisis conceptual de la información tendrá por objetivo definir el máximo


significado de la información contenida en una situación dada, poniendo en
evidencia:

 Los tipos de entidad significativos y los atributos que les caracteriza.

 Los tipos de relación que existen entre estos tipos de entidad y los
atributos que los caracteriza.

 Los tipos de valor relacionadas a los atributos

25
BASE DE DATOS

RESTRICCIONES DE INTEGRIDAD

DEFINICION
Una restricción de integridad (C.I.) es una propiedad, no representada por los
conceptos básicos del modelo que deben satisfacer las informaciones
pertenecientes a la base de datos.

Se distingue las restricciones estáticas y las restricciones dinámicas.

Restricciones de Integridad Estática

Propiedad que debe ser verificada a todo momento; es decir independiente de


cambios de estado de la base de datos.

Ejemplos

Población >0

Restricciones de Integridad Dinámica

Propiedad que define la validez de cambios de estado de la base de datos. Es


una regla de transición que define las secuencias posibles de cambios de
estado de la base de datos.

Ejemplos

La población de un país no puede decrecer, más la población de una región


puede disminuir.

Tipos de Conjuntos.- Hace la representación de una asociación de las


entidades que ella relaciona, una definición de rol de cada entidad y de la
clase funcional de la relación, así como también las restricciones de
existencias que le afectan.

Para cada “tipo de conjuntos” es necesario precisar al momento de una


definición de una base de datos las siguientes características:

 El nombre del tipo de conjuntos (obligatorio)


 La clase funcional de la relación (obligatorio).
 La condición de mantenimiento de la relación (opcional)
 Un titulo (opcional)
 Un sinónimo (opcional).

26
BASE DE DATOS

OTRAS DEFINICIONES IMPORTANTES

Diseño Lógico

Es el manejo eficiente de un arreglo de datos

Tabla

Un conjunto de filas relacionadas con registros, columnas relacionadas con


atributos y claves que identifican un registro.

Clave Principal.- Es el atributo o atributos que identifica de manera única a un


registro.

Clave Foránea.- Es el atributo o conjuntos de atributos que identifica un grupo


de registros.

Ejemplo: ENTIDAD DEPARTAMENTO

Columnas

Dep. Dep. MGR

No Name No

CO1 Informática 030

E11 Operación 090


Fila Tabla

Concepto de Normalización

Podemos decir que es la guía para desarrollar un diseño lógico aceptable para
una correcta organización del modelo entidad relación

Formas normales

1ra Forma Normal Se dice que una relación esta en primera forma
normal si se ha eliminado campos repetitivos

27
BASE DE DATOS

Dep Dep. EMP Last Job

No Name No. Name Code

Col Info 0.30 Kwan 60

EMP Last Job MGR

No. Name Code No

130 Quintana 55 030

Depart. Empleados

Contable Emp 11 Emp 12 Emp 13 Emp 14

Sistema Emp 21 Emp 22 Emp 23

Persona Emp 31

Bodega Emp 41 Emp 42

Despacho Emp 51

PROBLEMA: El número de campos de un registro varia con el numero de


empleados de un departamento.

SOLUCION: Ubicar los campos repetitivos en una tabla separada identificando


las relaciones entre las tablas separadas.

28
BASE DE DATOS

Departamento KP Empleados KF

KP
No. Nombres Cod No.

Emp Trabajo Depar


030 KWan 60 C01
040 Henderson 54 E11
130 Quintana 55 C05
290 Parken 42 E45
300 Smitt 48 C01
310 Sergio 43 E11

2da Forma Normal Una relación se encuentra en 2da forma normal si


primeramente se encuentran en 1ra forma normal y adicionalmente no existe
redundancia de datos.

Problema: 1) Un cambio simple causa múltiples actualizaciones del registro


2) Hay redundancia de datos en los nombre de departamento

No Cod No
Emp Nombre Trab Depat
030 Kwan 60 C01 No. Dept MGM
090 Henders 54 E11 Dept Nombre No.
130 Quintana 55 C11 C01 Infor 030
290 Parker 42 E11 E11 Oper 090
Smith 48 E11
300 Setrigh 43 E11
30

Problema: 1) Un cambio simple causa múltiples actualizaciones del registro


2) Hay
redundancia de
No. Nombre Cod Depat Dep. MGM datos en los nombre
de departamento
Emp. Trab No. Nombre No.
Solución: Ubicar
030 Kwan 60 C01 Info 030 los datos
090 Henders 54 E11 Oper 090 redundantes en una
130 Quintana 55 C01 Info 030 tabla separada
210 Parker 42 E11 Oper 090
300 Smith 48 E11 Oper 090
30 Setrigh 43 E11 Oper 090
29
BASE DE DATOS

Tercera Forma Normal

Una relación se encuentra en tercera forma normal si previamente se


encuentra el 2da forma norma y adicionalmente no existen atributos no
dependientes de la clave principal.

Ejemplo

Empleado

No. Cargo Extensión


Emp Nombre Oficina Escritorio Telefónica
1 Smith 1002 AD1 412
2 Jones 1009 AD2 4156
4 Smith 1009 BD1 4134
5 Brown 1002 BD2 4184

PROBLEMA:

Existen atributos que no deben depender de la clave principal como son:


Escritorio, Teléfono.
Que pasa si se elimina físicamente un empleado?

SOLUCION

En este caso estos atributos deben ubicarse en otra tabla, por lo tanto se
tendría dos tablas Empleado y Utilitarios de oficina.

Empleado

No.
Emp Nombre
1 Smith
2 Jones
4 Smith
5 Brown

Utilitarios de Oficina

Secuencial No. Cargo Extensión


Emp Oficina Escritorio Telefónica
1 1 1002 AD1 412
2 2 1009 AD2 4156
3 4 1009 BD1 4134
4 5 1002 BD2 4184

30
BASE DE DATOS

La clave principal de la tabla Utilitarios de Oficina es un secuencial.

Resultados del Proceso de Normalización

 Formato uniforme de filas (toda tabla tiene una longitud de registro fija)
 Menor actividad de actualización.
 No dependencia de atributos de la clave principal
 En cuanto al costo va a permitir muchas accesos a las diferentes
aplicaciones computacionales.

EJEMPLO

PROBLEMA

EMP LAST PROJ PROJ PER


No. NAME NAME NAME CNT
1 SMITH C1 SUPPORT 25
1 SMITH C3 WORKSHOP 25
1 SMITH C4 DESIGH 50
2 JONES C3 WORKSHOP 50
2 JONES C4 DESIGH 50
5 BROWN C1 SUPPORT 70
5 BROWN C3 WORKSHOP 30

SOLUCION

EMP N° LAST Proj N° PROJ


NAME NAME

EMP N° PROJ N° PER


CNT

31
BASE DE DATOS

Conclusiones:

 Se ha definido una tabla para cada entidad


 Se agrega una tabla relacional por cuanto existe una relación de muchos
a muchos.
 La tabla relacional hereda las claves principales de las entidades de
relación de tipo m:m.

Ejemplos Modelos Entidad-Relación

Realizar un modelo de E-R que realice un sistema de control de documentos


conforme siguientes características:

- El sistema será instálado en la secretaria general de la empresa


- Debe considerar toda la documentación que ingresa a la empresa y
aquella que se entrega a los departamentos o personas internamente.
- Cada documento tiene un plazo para ser transferido.

La información que los usuarios necesitan es la siguiente:

- Impresión individual de una hoja de control


- Control de documentación procesada a su debido tiempo
- Toda la documentación enviada a un departamento en especial
- Los tipos de documentación enviada pueden ser los siguientes.

 Memo
 Carta
 Oficio
 Comunicación
 Fax

El documento tiene el nivel que puede ser:

 Normal
 Secreta
 Confidencial

- Responsable de donde se ha enviado y cargo que ocupa esa persona.

32
BASE DE DATOS

DOCUMENTACION
Numero_doc: decimal(8)
Ccod_personal: numeric(2)
Cod_cargo: numeric(4)
Cod_dep: numeric(4) PERSONAL
Cod_tipo: numeric(4) Ccod_personal: numeric(2)
Cod_motivo: numeric(4) CARGO
Cod_cargo: numeric(4)
Cod_cargo: numeric(4)
Receptor: numeric(5) Cedula_identidad: numeric(10)
Fecha_ingreso: datetime Cargo: numeric(10) Descripcion: char(30)
Motivo: numeric(2) Nombre: char(30)
Tema: char(80)
Departamento: numeric(2)
Feha_fin: datetime MOTIVOS
Estado: char(1) Cod_motivo: numeric(4)
tipo_doc: char(1)
Descripcion: char(30)

ACCIONES
DEPARTAMMENTO
Secuencial: numeric(1)
Cod_dep: numeric(4)
Numero_doc: decimal(8)
Nombre: char(30) Ccod_personal: numeric(2)
Descripcion: char(30) TIPO_DOCUMENTO Cod_cargo: numeric(4)
Cod_dep: numeric(4)
Cod_tipo: numeric(4)
Cod_tipo: numeric(4)
Descripcion: char(30) Cod_motivo: numeric(4)
Fecha_inicio: datetime
Responsable: char(30)
Departamento: numeric(2)
Accion_Dada: ntext

33
BASE DE DATOS

NOMINA

34
BASE DE DATOS

EMPLEADO
PROVINCIA PROFESION
Cedula: decimal(10)
Cod_Prov: numeric(2) Cod_Prov: numeric(2) Cod_profesion: numeric(2)
Cod_canton: numeric(1) Descripcion: char(30) Descripcion: char(30)
Cod_parroq: numeric(2)
Cod_est_civ: numeric(1)
Cod_profesion: numeric(2)
Cod_puesto: numeric(1)
Cod_estado: numeric(1)
Cod_sex: numeric(1)
Nombre: char(30) ESTADO_CIVIL
Fecha_Nacimiento: datetime
Cod_est_civ: numeric(1)
Direccion: char(30)
Provincia: decimal(2) Descripcion: char(30)
Canton: decimal(1)
Parroquia: decimal(2)
CANTON
Profesion: decimal(2)
Numero_patronal: decimal(10) Cod_Prov: numeric(2)
Estado_Civil: decimal(1) Cod_canton: numeric(1) PUESTO
Puesto: decimal(1) Cod_puesto: numeric(1)
Descripcion: char(30)
Fecha_ingreso: datetime descripcion: char(30)
Fecha_Salida: datetime
Sueldo_base: decimal(12,2)
Estado: decimal(1) ESTADO
Sexo: char(1) Cod_estado: numeric(1)
Descripcion: char(30)

TRANSACCIONES_FIJAS
PARROQUIAS
Cod_concepto: numeric(2)
Cod_Prov: numeric(2) Cedula: decimal(10)
Cod_canton: numeric(1) Cod_Prov: numeric(2)
Cod_parroq: numeric(2) Cod_canton: numeric(1)
Descripcion: char(30) Cod_parroq: numeric(2)
Cod_est_civ: numeric(1)
Cod_profesion: numeric(2)
OTRAS_TRANSACCIONES Cod_puesto: numeric(1)
Cod_ot_transac: numeric(2) Cod_estado: numeric(1)
Cedula: decimal(10) Cod_sex: numeric(1)
Cod_Prov: numeric(2) cantidad: numeric(5)
TIPO_CARGAS__FAMILIARES Cod_canton: numeric(1)
Codigo_tipo_carga_f: numeric(1) Cod_parroq: numeric(2)
Cod_est_civ: numeric(1)
Descripcion: char(30)
Cod_profesion: numeric(2)
Cod_puesto: numeric(1)
Cod_estado: numeric(1)
Cod_sex: numeric(1)
valor: numeric(12,2)

CONCEPTOS_ROL
CARGAS_FAMILIARES codigo_concepto: numeric(2)
Cod_carga_familiar: numeric(1)
Descripcion: char(30)
Codigo_tipo_carga_f: numeric(1)
tipo_concepto: char(1)
Correlativos: numeric(2) aportable: char(1)
Nombre_carga_fam: char(30) tributable: char(1)
Fecha_nacimiento: datetime valor1: numeric(12,2)
Estado: char(1) valor2: numeric(12,2)
Cedula: decimal(10) estado: char(1)
Cod_Prov: numeric(2)
Cod_canton: numeric(1)
Cod_parroq: numeric(2)
Cod_est_civ: numeric(1)
Cod_profesion: numeric(2)
Cod_puesto: numeric(1)
Cod_estado: numeric(1)
Cod_sex: numeric(1) SEXO
Cod_sex: numeric(1)

FORMACION Descripcion: char(10)


MOVIMIENTOS_ROL
Cod_formacion: numeric(2) codigo_concepto: numeric(2)
cod_ti_for: numeric(2) Cedula: decimal(10)
fecha_opt: datetime Cod_Prov: numeric(2)
Observacion: char(20) Cod_canton: numeric(1)
Cedula: decimal(10) Cod_parroq: numeric(2)
Cod_Prov: numeric(2) Cod_est_civ: numeric(1)
Cod_canton: numeric(1) Cod_profesion: numeric(2)
Cod_parroq: numeric(2) Cod_puesto: numeric(1)
Cod_est_civ: numeric(1) Cod_estado: numeric(1)
Cod_sex: numeric(1) VACACIONES
Cod_profesion: numeric(2)
Cod_puesto: numeric(1) cod_vacaciones: char(4)
Fecha: datetime
Cod_estado: numeric(1) Año_responde: numeric(4)
Cod_sex: numeric(1) Numero_dias: numeric(2)
Fecha_inicio: datetime
Fecha_hasta: datetime
Cobrado: char(1)
Cedula: decimal(10)
Cod_Prov: numeric(2)
TIPOS_DE_FORMACION Cod_canton: numeric(1)
cod_ti_for: numeric(2) Cod_parroq: numeric(2)
Cod_est_civ: numeric(1)
Descripcion: char(20)
Cod_profesion: numeric(2)
Cod_puesto: numeric(1)
Cod_estado: numeric(1)
Cod_sex: numeric(1)

35
BASE DE DATOS

RECAUDACION

36
BASE DE DATOS

Modelo de una clínica


PACIENTE CANTON
PROVINCIA PARROQUIAS
Num_historia: numeric(5) Cod_Prov: numeric(2)
Cod_Prov: numeric(2) Cod_Prov: numeric(2)
Cod_est_civ: numeric(1) Cod_canton: numeric(1)
Cod_canton: numeric(1)
Cod_Prov: numeric(2) Descripcion: char(30) Descripcion: char(30) Cod_parroq: numeric(2)
Cod_canton: numeric(1)
Cod_parroq: numeric(2) Descripcion: char(30)

Nombre: char(30)
Direccion: char(30) ESTADO_CIVIL
Telefono: numeric(10)
Cod_est_civ: numeric(1)
Estado_Civil: char(1)
Lugar_nacimiento: char(20) Descripcion: char(30)
Cedula: numeric(10)
Fecha_nacimiento: datetime

CONSULTA_EXTERNA
cod_consulta_externa: numeric(4)
Cod_medico: numeric(4) MEDICOS
Cod_Especiali: numeric(4)
Cod_estado: numeric(1) Cod_medico: numeric(4)
Cod_Especiali: numeric(4) ESPECIALIDAD
Fecha_consulta: datetime Cod_Especiali: numeric(4)
Hora_consulta: d Cedula_identidad: numeric(10)
estatus: char(10) Nombre: char(30) Descripcion: char(30)
Num_historia: numeric(5) Direccion: char(20)
Cod_est_civ: numeric(1) Telefono: numeric(10)
Cod_Prov: numeric(2) Mail: varchar(20)
Cod_canton: numeric(1)
Cod_parroq: numeric(2)

INTERNOS HABITACIONES
cod_internos: numeric(4) Cod_habitacion: numeric(4)
Fecha_ingreso: datetime Cod_tip_habi: numeric(2)
hora_ingreso: datetime Ala: numeric(1)
ESTADOS_ATENCION Cod_cama: numeric(4) Piso: numeric(3)
Cod_estado: numeric(1) Cod_habitacion: numeric(4)
Cod_tip_habi: numeric(2)
Descripcion: char(30)
cod_consulta_externa: numeric(4)
Cod_medico: numeric(4)
Cod_Especiali: numeric(4)
Cod_estado: numeric(1)

ENFERMEDAD
Cod_enfermedad: numeric(3)
Descripcion: char(30)
TIPO_HABITACION
Cod_tip_habi: numeric(2)
Descripcion: char(30)

INTERNOS_ENFERMEDAD
cod_internos: numeric(4)
Cod_enfermedad: numeric(3) CAMAS
Diagnostico: char(50) Cod_cama: numeric(4)
Cod_habitacion: numeric(4)
Cod_tip_habi: numeric(2)
Descripcion: char(30)
estado: char(15)

NACIDOS
cod_nacido: numeric(4)
cod_sexo_nacido: numeric(2)
Cedula_madre: numeric(10)
hora: datetime Sexo_nacido
Sexo: char(2) cod_sexo_nacido: numeric(2)
fecha: datetime
Peso: numeric(3,3) Descripcion: char(30)
Talla: numeric(2,3)
Observacion: char(30)
cod_internos: numeric(4)
Cod_enfermedad: numeric(3)

37
BASE DE DATOS

CORRECCION DE LA PRUEBA

38
BASE DE DATOS

SEGUNDO HEMISEMESTRE

SQL

Visualizar la estructura de una tabla

DESCRIBE nombre tabla

Describe como esta la estructura de la tabla

Name: Nombre de la columna


Null: permite si la columna tiene o no valores nulos
Tipo: Se refiere al tipo de dato o longitud

Creación de una tabla

Create table nombre_tabla

Create table Departamento(

Depto Number(2) Not null,


Nombre Varchar 2 (30)
Localización Varchar2 (30));
;

Todo comando en SQL se ejecuta digitando al fin del comando el carácter ;

Cláusulas de almacenamiento

STORAGE( Initial 50 M
Next 10 M
Pct free 0
Maxextents 100 )
Tablespace nombre del tablespace

Ejemplo

Create table clientes(

Cod_Cuenta Number(8) Not Null


Nombre Number(20);
Provincia Varchar(2);
Canton Number(2);

39
BASE DE DATOS

Parroquia Number(2);
Estado_Suscriptor Varchar(2);
Cicio Number(2)
Tarifa Number(3)

800.000 registro

kilobytes x registro x 800.000=32 Mb

Storage

Initial 40M
Next 4M
Potfree 0
Maxextents 100)
Tablespace User;

Create table estudiantes(

Cod_estudiante Number(8) not nell


Nombre Varchar(2) (20);
Cargo Number (2)
Dirección Varchar(2) (20);
Telefono Number (7);
Email ;

STORAGE (INITIAL 1M
NEXT 1M
PCTFREE 0
MAXEXTENTS 100)
TABLESPACE USER;

BASE DE REFERENCIA

Todas las tablas auxiliares que tienen código y descripción se llama Base de
referencia.

Ejemplo

Tabla de Contabilidad
Cuentas
Código Contable C(30)
Nombre Cuenta C(30)

Consultas

40
BASE DE DATOS

Select Se utiliza para consultar datos de la base de datos debe estar


acompañado del From

Sintaxis

Select columna1[alias], columna2[alias]


From Nombre_tabla1, (alias), nombre_tabla2 (alias)

Caso especial

Select *

From nombre tabla;

Ejemplo

Select *

From Departament

SALIDA

Dept. Nombre Local zacion


10 Contabilizado Quito
20 Sistemas Guayas
30 Compras Quito
40 Inventario Cuenca

OPERADORES DE LA CLAUSULA WHERE

Las columnas especificadas en las cláusulas where deben ser parte de las
tablas de la cláusula from
Las comparaciones de cadenas de caracteres especificadas en la cláusula
where requieren de un apostrofe al comienzo y final, comparaciones numèricas
no lo requieren. Los operadores binarios màs sencillos para comparar 2 valores
columnas o constantes son

= igual
where depto =10

|= diferente
where deptno |= 10

> mayor que


where deptno>10

< menor que

41
BASE DE DATOS

where deptno < 10

>= mayor igual


where depto >=10

< = menor o igual


where depto <=igual

Ejemplo

Select CI cèdula, nombre, fecha_nacimiento


From empleado
Where provincia=17;

EXPRESIONES ARITMÉTICAS

Pueden adicionarse en una cláusula select, una expresión que puede


componerse de nombres de columnas y constantes numéricas conocidas
como una de las siguientes expresiones aritméticas , (+) Suma, (*)
Multiplicación; (/) División; (-) Resta; cabe indicar que la multiplicación y división
tienen igual procedencia de manera que las columnas utilizan paréntesis para
controlar el orden de la evaluación.

Sintaxis
Select Col1, Col2, ….Coln
From Table
Where Column2 Operador Expresión
And Column2 Operador Expresión

La Expresión puede ubicarse en cualquier parte.

Ejemplo:

Consultar empleados activos, de la provincia del Guayas que su sueldo por una
año sea mayor que 10.000

Select CI cédula, Nombre


From Empleado
Where Estado =1
And Provincia = 4
And SueldoBásico*12>10000 ;

CONDICIONES MULTIPLES

AND, OR, IN, BETWEEN

42
BASE DE DATOS

AND: Se ocupa cuando ambas condiciones deben cumplirse.


OR: Se ocupa cuando cualquiera o ambas condiciones se cumplen.

Ejemplo:

Empleando activo que sea de la provincia del Guayas o sueldo básico mayor
que 10.000

Select CI Cédula, Nombre


From: Empleado
Where Estado = 1
And (Provincia = 4 or sueldobásico * 12 > 10.000)

IN: Cuando una columna debe coincidir con un ítem de una columna dada,.
Funciona también con “NOT IN”.

Select CI Cedula, Nombre


From: Empleado
Where Estado = 1
And Provincia in (4,17);
And puesto in (‘contador’,’ ingenieros’);

BETWEEN: Es utilizado para seleccionar valores que están a fuera o dentro de


ese rango. Si el máximo o mínimo son encontradas se incluyen estos
valores. Funciona también con el NOT
Sintaxis

Between rango - mínimo and rango – máximo

Select CI Cédula, Nombre


From Empleado
Where Estado = 1
And provincia Between 4 and 17
And puesto in ( ‘contador’,’ ingeniero’ );

VALORES NULL
El null implica ausencia de datos es diferente de ceros o de espacios el
operador IS es utilizado con la expresión NULL o también NOT NULL.

Ejemplo:

Select CI Cédula, Nombre


From empleado
Where estado=1
And Provincia between 4 and 17
And Puesto IN (‘Contador’, ‘Ingeniero’)

43
BASE DE DATOS

And Sueldo is NULL

like Permite buscar una cadena de caracteres especificada en el campo de una


tabla. Funciona también la negación con la clausula NOT LIKE

Ejemplo
Se necesita un reporte con todos aquellos empleados que se llaman Juan.

Select Nombre
From Empleado
Where Nombre Like ‘% Juan %’

Comodines
Se utiliza: El carácter “_” para 1 carácter y el “%” para uno o varios
caracteres.

Ejemplo
Listar los nombres de los empleados que termina con las letras s
Select Nombre
From Empleado
Where Nombre Like ‘ % s’

Los nombres que tengan una O seguida de una C.


Select Nombre
From Empleado
Where Nombre Like ‘ %OC%’

Seleccione los nombres de los empleados cuya longitud sea = 10

Select Nombre
From Empleado
Where Nombre Like ‘ __________’

ORDER BY: Permite que ORACLE ordene los registros seleccionados antes de
desplegar. Por DEFAULT despliega en orden ascendente.

Select Columna 1 o Expresiones


From Tabla
Where Condicion cierta
Order By column Asc/Desc

Select Departamento, Nombre ,Localización


From Departamento
Order by nombre

Salida:
20 compras Quito
10 contables Quito
40 inventarios Guayaquil
30 sistemas

44
BASE DE DATOS

Select CI cédula, nombre


From Empleado
Where Estado = 1
And Provincia between 1 and 17
And Puesto IN ( ‘Contador’ ,’Ingeniero’ )
And Sueldo is NULL

FUNCIONES.- Las funciones de caracteres, numéricos y de fechas pueden


incluirse en las clausulas select, order by, where

FUNCIONES DE CARACTERES

Concatenación Nos permite unir cadenas de caracteres.


Select deptnoIInombre
From Departamento;

Salida:
10Contabilidad
20Compras
30Sistemas
40Inventarios

CHR(n): Es el carácter de un valor ascii.


Select CHR(100)
From dual;

Salida:
CHR
d
INITCAP (cad).- convierte en mayúscula la primera letra de una cadena de
caracteres.
Select initcap (localización), dpto
From Departamento;

Salida:
Quito 10
Quito 20
Cuenca 40
Sistemas 30

LOWER (cadena) Convierte a minúsculas la cadena de caracteres.

Select LOWER (NOMBRE)


From Departamento;

Salida:
contabilidad
compras

45
BASE DE DATOS

sistemas
inventario

LPAD(cadena,M,{carácter}): Rellena la cadena especificada hacia la izquierda


con caracteres (por default van espacios en blanco) hasta que la longitud
total de la cadena sea M.
Select LPAD (nombre, 32, “ww”)
From Departamento;

Salida:
w.w Contabilidad …………………..=32
w w Compras
w w Sistemas
w w Inventarios

NOTA: Nombre está definido como char(30).

LTRIM(Cadena, conjunto): Quita los caracteres indicados especificados en


conjunto de la cadena empezando por la izquierda.

Select LTRIM (nombre,’Co’)


From Departamento;

Salida:
ntabilidad
mpras
Sistemas
Inventarios

RPAD(Cadena,m,{carácter})

Rellena la cadena especificada hacia la derecha con caracteres (por default


van espacios en blanco) hasta que la longitud total de la cadena sea M.

Select RPAD (nombre, 32, “ww”)


From Departamento;

Salida:

Contabilidad…………………. ww
Compras……………………… ww
Sistemas……………………….ww
Inventarios……………………. ww

NOTA: Pone las posiciones 31 y 32 ww

RTRIM(Cadena, conjunto): Quita los caracteres indicados especificados en


conjunto de la cadena empezando por la derecha.

Select RTRIM (nombre,’s’)

46
BASE DE DATOS

From Departamento;

Compra
Contabilidad
Inventario
Sistema

NOTA: la columna NOMBRE está definida como carácter de 30 posiciones.


Luego en el SELECT tomo la letra S con los siguientes espacios en blanco.

SUBSTR(Cadena,inicio,longitud) despliega una subcadena que va desde


inicio hasta el número de caracteres que esta definido en longitud.

Select Substr(Nombre, 1, 3)
From departamento;

Salida:

Com
Con
Inv
Sis

UPPER(cadena) Convierte la cadena a mayúsculas.

FUNCIONES DE CARACTERES QUE RETORNAN NUMEROS

ASCII (carácter) Valor ASCII del primer carácter de la cadena

Select ASCII (‘C’)


From dual;

Salida:
67

INSTR(CADENA, SUBCADENA, POSICIÓN), Busca la subcadena en cadena


comenzando en posición. Si la subcadena es encontrada retorna su
posición caso contrario retorna a 0.

Select INSTR(Nombre, Com, 1)


From Departamento

Entrada
Contabilidad
Bodegas
Sistemas

47
BASE DE DATOS

Salida:

1
0
0
0

LENGTH: (Cadena) Encuentra la longitud de una cadena.

Select Length(Substr(nombre, 1,7))


From Departamento;

Salida:

7
7
7
7

TO_NUMBER(cadena) Transforma una cadena a numero

SELECT TO_NUMBER(ROL)
FROM empleado
Where rol =’20514’

Salida:

---------------------------
20514
NOTA: La columna ROL de la tabla empleados es de tipo carácter.

FUNCIONES ARITMÉTICAS

ROUND(número, {d}) Aproxima el numero a d dígitos del punto decimal.


Si d es negativo, la aproximación ocurre hacia la izquierda del punto
decimal.

Ejemplos

ROUND ( 6,1793, 2) = 6,18


ROUND(16,1793, -1) = 17

TRUNC ( número, {d}) Trunca el número a d dígitos, comenzando en el punto


decimal, d puede ser positivo o negativo.

TRUNC ( 5.1793,2)=5.17
TRUNC( 236, -1) = 230
TRUNC ( 236, -2) = 200

48
BASE DE DATOS

TRUNC ( 236, -3) = 0

ABS (número) Encuentra el valor absoluto de un número.

SIGN(número) es + 1 si el numero > 0


0 si el numero = 0
-1 si el numero es < 0

MOD (num1, num2) Retorna el residuo de dividir num1 para num2

SQRT(numero) Raíz cuadrada de número.

POWER( número,n ) Eleva el número a la n-ésima potencia

DECODE( str, cs1, rst1…..dft) Permite evaluar valores


// es parecido al if//

EJEMPLOS
Select Cédula, nombre, sueldo, DECODE (sexo, ‘m’, ‘masculino’, ‘femenino’)
From empleado

Se desea saber sexo y estado civil

Select Cèdula, nombre, sueldo, DECODE (sexo, ‘m’, ‘masculino’, ‘femenino’)


Decode(estado_civil,’s’,’soltero’,’c’,’casado’,’d’,’divorciado’,’v’,viudo’)
From empleado

GREATEST(expr1, …. exprn)
Retorna el mayor de una lista de valores
Ejemplo:
Select código_cuenta, nombre, GREATEST(demada-oh, demanda ot)
demanda_ contratada demanda
From Clientes;

Select GREATEST ( 10,5,1,20.99)


From Dual

Salida:
: 99

LEAST (exp1…………expn)
Retorna el valor menor de una lista

NVL (expresión, nuevo valor)


Si la expresión es nula retorma nuevo valor, caso contrario retorna expresión.

Ejemplo

Select NVL (sueldo base,0), NVL(represent, 0) , NVL (residencia, 0)

49
BASE DE DATOS

NVL ( sueldo_ base,0) + NVL(represent, 0) + NVL (residencia, 0)


total

// un ejemplo de NVL con caracteres


// Supongamos que tenga primer nombre, primer apellido, 2º apellido, como
campos diferentes se quiere

Select NVL(Nombre,’ VACANTE’)


From empleados;

ARITMÉTICA DE FECHA

El formato de default es dd-mes-aa


El tipo de dato DATE almacena siglo, año, mes , día, hora, min, segundos.
El dato SYSDATE se utiliza para retornar la fecha, hora del sistema

Ejemplo

SELECT SYSDATE FROM dual;

Salida:

01 – Feb-06

EXPRESIÓN DEFINICIÓN
Date + n Suma n días
Date + n/24 Suma n horas
Date + n/ (24 * 60) Suma n minutos
Date + n / ( 24* 60*60) Suman n segundos
Date – n resta n días
Date – n/ 24 Restan n días
Date – n / (24 * 60)) Resta n minutos
Date – n/ (24 * 60 * 60) Resta n segundos
Date –Date Diferencia en días (resultado números)
(date – date) * 24 Diferencia de horas (resultado número)

to _date(carater)
Convierte un caracter a fecha

Ejemplo:

to_date (‘01 Febr 14’)

Quiero que el sistema calcule la edad de una persona en años

Select to_date(’01, Feb, 14’) – to_date(‘16 , oct, 05’))/365 Edad


from Dual

FORMATOS DE FECHA
FORMATO RESULTADO

50
BASE DE DATOS

´dd – month – yý ‘ 21 – Jun – 95


´day month dd, yyyy` Saturday January 21, 1995
‘dy dd mon yyyý´ Sat 21 Jan 1995
‘ Day ddth Month yyyy’ Saturday 03 rd January 1995
‘ fm Month dd, yyyy hh: miam January 21, Select substr
(to_char(to_date (fecha_nacimiento, ‘ j ‘ ), ‘dd/mm/yyyy’ ),1,10)
1995 12.03 am

// que pasa si la fecha de nacimiento es number (Formato Juliano) entonces/

substr(to_char(to_date(fecha_nacimiento,’j’),’dd’/mm /yyyy’), 1,10) fecha

EJEMPLO:
- Sumatoria sueldo, clasificado por nombre, empleados con nombre
Pedro, sueldos no nulos.

Select NVL(sueldo1_base,0), NVL(sueldo2_base,0), NVL(sueldo3_base,0),


NVL(sueldo1_base,0)+ NVL(sueldo2_base,0)+ NVL(sueldo3_base,0)
From empleados
Where nombre like ‘%Pedro%’
Order by nombre;

- Seleccione todos los empleados nacidos en 1985 si el campò Fecha de


nacimiento es tipo number.

Select nombre, substr(to_char(to_date(fecha_nacimiento,’j’),’dd’/mm yyyy’),


1,10) fecha
From Empleado
Where substr (to_char(to_date(fecha_nacimiento,’j’),’yyyy’),1,4)=’1985’

FUNCIONES DE AGRUPACION:

Las funciones de agrupación trabajan sobre un conjunto de registros y retorna


un valor con la información resumen del conjunto

SUM: Calcula la sumatoria de un grupo

SELECT DEPARTAMENTO, SUM (NVL(SALARIOS,0), AVG(SALARIOS,0),


MIN(SALARIOS), MAX(SALARIOS)
FROM EMPLEADO
GROUP BY DEPARTAMENTO

Salida:

4800000

AVG: PROMEDIO
SELEC AVG(SALARIOS, 0)
FROM EMPLEADO:

51
BASE DE DATOS

Salida:

1200

MIN: Devuelve el mínimo de un conjunto de valores contenidos en un campo


específico de una consulta

SELECT MIN (SAL)


FROM EMP
WHERE DEPTNO=10;

Salida:

250

MAX: Devuelve el máximo de un conjunto de valores contenidos en un campo


específico de un consulta

SELECT MAX (SAL)


FROM EMP
WHERE DEPTNO=10;

Salida:

4550

COUNT: Calcula el número de registros por una consulta.


SELECT Count (*)
FROM EMP

Salida:

Count (*)
14

STDDEV
Calcula la desviación estándar.

VARIANCE: Calcula la varianza

GROUP BY: Es utilizado para definir múltiples grupos de registros en una


sentencia SQL, un grupo es definido por registros que tengan un valor
común en una o más columnas esas columnas deben listarse en la
instrucción group by.
Su sintaxis es:

SELECT Atributos de dimensión, agrupaciones


FROM Nombre de tabla
WHERE Condiciones De Selección

52
BASE DE DATOS

GROUP BY Atributos de dimensión

Ejemplos:

Se requiere un reporte que haga una selección de departamentos y el total de


empleados y salarios que se han pagado en cada departamento

SELECT cod_departamento DEPARTAMENTO,


count(*) EMPLEADOS,
sum(sal) SUELDOS
FROM empleados
GROUP BY cod_departamento;

Salida:

DEPARTAMENTO EMPLEADOS SUELDOS


1 7 12450
2 5 10600
3 1 9200

Se requiere un reporte que despliegue el total de empleados por cantón y


provincia.

Select provincia, canton, count(*) numero


From empleado
Group by provincia, cantón

Salida:

Provincia cantón numero


01 2 1.0
01 3 5
01 4 3
02 1 8

Se requiere un reporte que despliegue el numero de clientes por tarifa.

Select tarifa, count(*) clientes


From facturaciòn
Group by tarifa

Salida:

Tarifa clientes
201 15000
715 47000

HAVING: Es similar a where, determina qué registros se seleccionan una vez


que los registros se han agrupado utilizando GROUP BY.
HAVING determina cuales de ellos se van a mostrar.

53
BASE DE DATOS

SELECT cod_departamento DEPARTAMENTO,


count(*) EMPLEADOS,
sum(sal) SUELDOS
FROM empleados
GROUP BY cod_departamento;
HAVING sum(sal) > 10000

Salida:

DEPARTAMENTO EMPLEADOS SUELDOS


1 7 12450
2 5 10600

Seleccionar todos los departamentos que tengan más de 40 empleados y que


sean hombres

Salida:

DEPARTAMENTO EMPLEADOS
5 56
6 67

UNION DE DOS O MAS TABLAS

Es una forma del comando select que combina información de dos o más
tablas. Además de las columnas a mostrar y de las tablas a combinarse, se
debe indicar un condición de combinación entre tablas. Dicha condición de
combinación se incluye en la cláusula WHERE principalmente.

Tipos de joins
- Simples(equijoin/non-equijoin):
-
Select columnas de las tablas referenciadas
From tabla1[alias], tabla2[alias],..................
Ejemplo:

PROVINCIA EMPLEADO

Cod_prov N(2) C.C


DESCRIPCION NOMBRE
Cod_prov

Select a.descripcion, provincia

54
BASE DE DATOS

From provincia a, empleado b


Where a.codigo_provincia=b.codigo_provincia
order by provincia

Salida:

PROVINCIA C.I NOMBRE SUELDO


AZUAY 171542080-6 Juan Pérez 1234

EJERCICIOS:
Generar un reporte que determine el número de clientes de la Empresa
Eléctrica Quito por tarifa. Adicionalmente seleccionar aquellas tarifas que
tengan más de 100 clientes.

Select b.desctarifa TARIFA, count (*) CLIENTES


From clientes a, tarifas b.
Group by b.desctarifa
Having count (*)>100

Salida:

TARIFA CLIENTES
Residencial 450.000
Comerial 75.000
Industrial 65.000

Generar un reporte estadístico de empleados por estado del empleado.


(Activos, Inactivos, En liquidación), y por provincia, para todos los empleados
de los departamento de sistemas e inventarios

spool Reporte
set pagesize 64
set linesize 80
ttitle ‘ESTADISTICA DE EMPLEADOS POR ESTADO Y PROVINCIA’
break on report on estado nodup
compute sum of EMPLEADOS on ESTADO
compute sum of EMPLEADOS on report
SELECT a.descripcion ESTADO,
b.descripcion PROVINCIA,
count(*) EMPLEADOS
FROM estados a, provincias b, empleados c
Where c.coddepartamento in (‘SISTEMAS’,’INVENTARIOS’)
and c.estado=a.estadoemple
and c.provincia=b.codprov
GROUP BY a.descripcion,b.descripcion

Salida:

ESTADISTICA DE EMPLEADOS POR ESTADO Y PROVINCIA’


ESTADO PROVINCIA EMPLEADOS

55
BASE DE DATOS

Activos Azuay 10
Guayas 5
Pichincha 25
-------------
Sum 40
Inactivos Azuay 5
Guayas 3
Pichincha 6
-------------
Sum 14
En liquidación Azuay 1
Guayas 1
Pichincha 1
-------------
Sum 3
-------------
Sum 57

OUTER JOINS

El operador OUTER JOINS(+), obliga a que un registro que contenga valores


nulos en uno de los criterios del JOIN coincida con cada valor de la segunda
tabla sobre la cual ordinariamente no existiría esa coincidencia.
EMPLEADOS PROVINCIA

DESCRIPCION
Rol nombre Co AZUAY
prov ASOGUEZ
xxxxx 03
yyyyy 04
05
17
17 PICHINCHA
124 17

SELECT a.rol Rol, a.nombre Nombre, b.descripción


FROM empleados a,provincia b
WHERE a.co_prov=b.codigo(+)

Salida:

Rol Nombre Descripción

3. xxxxx AZUAY
4. yyyyy ASOGUEZ
87. zzzzz
88. aaaaa PICHINCHA
124. bbbbb PIHINCHA

56
BASE DE DATOS

NON EQUIJOINS

<=

>=

BETWEEN

OPERADORES DE CONJUNTOS: Los operadores de conjuntos


combinan dos o más tablas para obtener un resultado.

UNION: No se repite los registros. Combina los resultados de las selecciones


eliminando las filas duplicadas.

Sintaxis:
Select columnas
From tabla
Where condiciones1
Union
Select columnas
From tabla1
Where condiciones1

Las columnas deben ser lógicamente las mismas

Ejemplo:
Spool reporte
Set linesize 80
Set pagesize 64
Ttitle ‘CLIENTES EEQ’
Select codigo_cuenta CLIENTE, nombre NOMBRE
From clientes_cm
Where estado_cliente=0
Union
Select codigo_convenido CLIENTE , nombre_convenido NOMBRE
From clients_sm
Were num_servicios>0
/
Spool off

SENTENCIAS PARA GENERAR UN REPORTE

SPOOL REPORTE Genera un archivo

57
BASE DE DATOS

SET LINES 80 Tamaño de la línea


SET PAGESIZE 64Tamaño de la página
SET TERMOUT OFF (para que los registros no se desplieguen en pantalla)

TITLE ‘CLIENTES EEQ’


SET NEW PAG PAR PONER TITULO, ENUMERAR PAGINA

Salida:

CLIENTES EEQ
PAG 1
CLIENTE NOMBRE
1101 Juan Pérez
2105 Jose Leiva
1407 Paul Salas
1521 Ricardo Díaz
1521 Luis Aguas

INTERSECT

Combina los resultados devolviendo sólo las filas que devuelven ambas
selecciones

CLIENTES ASIME
1101 JUAN PEREZ 1101 111
2105 222

Ejemplo:

Spool on

Select codigo_cuenta CLIENTE


From clientes
Where estado_cliente=0
INTERSECT
Select codigo_asime CLIENTE
From asime
/

Salida:

58
BASE DE DATOS

CLIENTE
1101

MINUS: Los registros de la primera tablas menos los registros de la segunda


tabla

Ejemplo:

Generar un reporte que despliegue los empleados de la EEQ que no tienen


medidor, es decir con servicio convenido

Select codigo_cuenta SUM


From clientes
Where estado_cliente=0
MINUS
Select codigo_asime SUM
From asime
/

- TRANSACCIONES

ROLLBACK: Deshace los cambios en la base de datos que realice desde el


ùltimo COMMIT;

COMMIT: Hace cambios hechos por algún sistema permanente de base de


datos (desde el ùltimo COMMIT; conocido como transacción)

Ejercicios:

UPDATE

Crea una consulta de actualizaciòn que cambia los valores de los campos de
una tabla especificada basàndose en un criterio específico.

Su sintaxis:

UPDATE Tabla
Set Campo1=Valor1, Campo2=Valor2,............. CampoN=ValorN
Where Criterio;
Ejemplo:

1.- Actualizar la tabla de empleados, con sueldo =1000 y depto=15

UPDATE EMPLEADO
SET SUELDO=10000
WHERE DPTO=15;

59
BASE DE DATOS

TRUNCATE

Elimina todos los registros de la tablas manteniendo la estructura.

Ejemplo:

TRUNCATE TABLE EMPLEADOS

ALTER TABLE

Añade nuevos campos a la tabla


Ejemplo:

ALTER TABLE EMPLEADO


MODIFY (Nombre varchar2 (35) not null;

VISTAS

Nos permite el acceso mucho màs rápido para una consulta. Se lo puede
realizar con un select a una o varias tablas juntadas.

CREATE VIEW EMPVISTA AS


SELECT CED_IDENT, APELLIDO || ‘ ‘|| , NOMBRE
FROM EMPLEADO
WHERE…………

SELECT * FROM EMPVISTA

INDICES

Nos permiten un acceso rápido a la tabla, se crean cuando las tablas son muy
grandes

CREATE [UNIQUE] INDEX nombre_índice


On tabla (columnas indexadas)
TABLESPACE Nombre tablespace;

Ejemplo

CREATE UNIQUE INDEX ICONTAB1


ON CONTAB (fecha_generacion,cuenta_debe,cuenta_haber)
TABLESPACE SIDECOM_IDX
STORAGE( INITIAL 100M
NEXT 5M
PCTINCREASE 0
MAXEXTENTS 149);
EJERCICIOS:

60
BASE DE DATOS

REPORTES:

Generar un reporte que despliegue la siguiente información:


CEDULA_IDENTIDAD, NOMBRE, PROFESION, DEPARTAMENTO ordenado
por departamento y nombre

SELECT a.cedula_identidad, a.nombre,b.descripción, c.descripción


FROM empleados a,profesion b, departamentos c
Where a.codigo_profesiòn=b.codigo_profesiòn
AND c.cod_departamento=a.codigo_departamento
Order by c. descripción, a.nombre;

Generar un reporte de todos los empleados de la EEQ, es decir empleados con


nombramiento y empleados mercerizados. La información de los primeros está
en la tabla EMPLEADO y la de los mercerizados en TERCERIZADO Se conoce
que las dos tablas son iguales en cuanto a su estructura y se requiere toda la
información almacenada en estas tablas.

Select *
From empleado
UNION
Select *
From tercerizado

Se requiere que se despliegue únicamente el nombre y en orden alfabético.

Select nombre
From empleado
UNION
Select nom_tercerizado
From tercerizado
Order by 1

Crear una vista de empleados de planta y tercerizados.

Create view tablas as


Select *
From empleado
UNION
Select *
From tercerizado

Empleados , tercerizados, quiero saber que deptos no tiene empleados


tercerizdos
Select descripción
From departamento_EQ
Minus
Select descripción

61
BASE DE DATOS

From departamento_terc

Todos los nombre de empleados nacidos menores a 1975


Select nombre
From empleados
Where substr(to_char(to_date(‘fech,j,’yyyy’)1,10)<’1975’

Actualizar los empleados de sistemas=10000


Update empleado
Set (sueldo:base=10000)
Where dep=sistemas

62
BASE DE DATOS

JOIN sofi

Es una instrucción SELECT anidada dentro de una instrucción SELECT,


SELECT...INTO, INSERT...INTO, DELETE, o UPDATE o dentro de otra
subconsulta.

Puede utilizar tres formas de sintaxis para crear una subconsulta:


comparación [ANY | ALL | SOME] (instrucción sql)
expresión [NOT] IN (instrucción sql)
[NOT] EXISTS (instrucción sql)
En donde:

comparación

Es una expresión y un operador de comparación que compara la expresión con


el resultado de la subconsulta.

expresión

Es una expresión por la que se busca el conjunto resultante de la subconsulta.

instrucción sql

Es una instrucción SELECT, que sigue el mismo formato y reglas que cualquier
otra instrucción SELECT. Debe ir entre paréntesis.

Se puede utilizar una subconsulta en lugar de una expresión en la lista de


campos de una instrucción SELECT o en una cláusula WHERE o HAVING. En
una subconsulta, se utiliza una instrucción SELECT para proporcionar un
conjunto de uno o más valores especificados para evaluar en la expresión de la
cláusula WHERE o HAVING.

Se puede utilizar el predicado ANY o SOME, los cuales son sinónimos, para
recuperar registros de la consulta principal, que satisfagan la comparación con
cualquier otro registro recuperado en la subconsulta.

Ejemplos:

El ejemplo siguiente devuelve todos los productos cuyo precio unitario es


mayor que el de cualquier producto vendido con un descuento igual o mayor al
25 por ciento.:

SELECT *
FROM Productos
WHERE PrecioUnidad ANY
(SELECT PrecioUnidad FROM DetallePedido WHERE Descuento = 0 .25);

El predicado ALL se utiliza para recuperar únicamente aquellos registros de la


consulta principal que satisfacen la comparación con todos los registros
recuperados en la subconsulta. Si se cambia ANY por ALL en el ejemplo

63
BASE DE DATOS

anterior, la consulta devolverá únicamente aquellos productos cuyo precio


unitario sea mayor que el de todos los productos vendidos con un descuento
igual o mayor al 25 por ciento. Esto es mucho más restrictivo.

select *
from productos
where PrecioUnidad > all (select PrecioUnidad from DetallePedido where
descuento>=0.25)

El predicado IN se emplea para recuperar únicamente aquellos registros de la


consulta principal para los que algunos registros de la subconsulta contienen
un valor igual. El ejemplo siguiente devuelve todos los productos vendidos con
un descuento igual o mayor al 25 por ciento.:

SELECT *
FROM Productos
WHERE IDProducto IN (SELECT IDProducto FROM DetallePedido
WHERE Descuento = 0.25);

Inversamente se puede utilizar NOT IN para recuperar únicamente aquellos


registros de la consulta principal para los que no hay ningún registro de la
subconsulta que contenga un valor igual.

select *
from productos
where idproducto not in (select idproducto from DetallePedido where
descuento>=0.25)

El predicado EXISTS (con la palabra reservada NOT opcional) se utiliza en


comparaciones de verdad/falso para determinar si la subconsulta devuelve
algún registro.
select nombre_producto, preciounidad
from Productos as p
where exists (select * from detallepedido d where
d.idproducto=p.idproducto)

Selecciona el nombre de todos los productos que se han comprado al menos


una ves

REPORTES CON PARAMETROS

El siguiente ejemplo despliega todos los registros cuyo numero de


departamento sea 10, el mismo que es ingresado parametricamente cuando
se ejecuta el sql.

Select cedula, nombre


from empleados
where Dep_No = &Depar;

La ejecución de este reporte despliega lo siguiente:

64
BASE DE DATOS

Enter Value for Depar: 10

Ejemplo con prompt

Accept depar prompt ‘Digite Codigo de departamento’


Select cedula, nombre
from empleados
where Dep_No = &Depar;

Al ejecutar este sql se despliega el siguiente mensaje:

Digite Codigo de departamento: 10

ALTER TABLE

Añade nuevos campos a la tabla


Ejemplo:
ALTER TABLE Empleados ADD (nombre_columna tipo(longitud) not null;

Modifica el diseño de una tabla ya existente


Ejemplo:
ALTER TABLE Empleados MODIFY (nombre VARCHAR2(35) ;

Renombrar el campo de una tabla


Ejemplo:
ALTER TABLE Empleados RENAME nombre TO nombres ;

DROP TABLE

Se utiliza para eliminar tablas


Todos los registros son eliminados sin advertencia alguna No se puede hacer
un Rollback para un DROP TABLE Solo el dueño de la tabla puede hacer un
DROP TABLE

Sintaxis:
DROP TABLE Nombre_Tabla;

DELETE

Elimina los registros de una o más de las tablas listadas en la cláusula FROM
que satisfagan la cláusula WHERE

Sintaxis:

DELETE FROM Nombre_Tabla WHERE Condiciones;


Ejemplo:
DELETE FROM Empleados WHERE Estado=0;

RENAME
Renombra u na Tabla

65
BASE DE DATOS

Sintaxis:
RENAME Nombre_Tabla TO Nuevo_Nombre;

Ejemplo:

RENAME Empleado TO EmpleadosFijos;

INSERT INTO

Agrega un registro en una tabla. Se la conoce como una consulta de datos


añadidos.

Sintaxis:
INSERT INTO Tabla (campo1, campo2, .., campoN)
VALUES (valor1, valor2, ..., valorN)
Ejemplo:
INSERT INTO Empleados (Nombre, Apellido, Cargo)
VALUES ('Luis', 'Sánchez', 'Becario');

UPDATE

Crea una consulta de actualización que cambia los valores de los campos de
una tabla especificada basándose en un criterio específico.

Sintaxis:
UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, ... CampoN=ValorN
WHERE Criterio;
Criterios
Update para actualizar valores en los campos en registros existentes
Actualiza los registros que cumplen con el criterio de WHERE
Si se omite la clausula WHERE todos los registros son actualizados
Se puede actualizar una columna con null si la definicion de la tabla lo permite
Ejemplo:
Set col =null
Se puede actulizar una fila numeriaca utilizando los opreadores aritmeticos
+,-,*,/
Ejemplo:
UPDATE Empleados SET Grado = 5 WHERE Grado = 2;

UPDATE Pedidos SET Pedido = Pedidos * 1.1, Transporte = Transporte * 1.03


WHERE PaisEnvío = 'ES';

VISTAS

Es una ventana a los datos que permte visualizar de diferentes maneras los
mismos datos como las vistas son ventanas a los datos, todos los cambios a
los datos, atraves de una vista son refjejadas a la tabla base y viseversa
Sintaxis:
CREATE VIEW Nombre_Vista AS sentencia SQL;
Ejemplo:

66
BASE DE DATOS

CREATE VIEW Vista_Empleados AS SELECT b.Nombre, a.Cedula, a.Nombre


FROM Empleados a, Departamento b WHERE a.Cod_Dep = b.Cod_Dep;

67
BASE DE DATOS

TERCER TRIMESTRE

BUSNESS INTELIGENT

I
N NIVEL
F ESTRATEGICO
O INDICES
DE
R GESTION
M
A
NIVEL DE
C DATAMAR
DATAWAREHOUSE GESTION
I
O
N
NIVEL
OPERATIVO
SIST, ECONOM, FINAC, FACT, NOMINA

FACT
TECNICO

ECONOM
FINANC

BODEGA RECURSOS
HUMANOS

CONCEPTO DE DATAWARE HOUSE

Es un conjunto de datos integrados, orientados a una materia que varían con el


tiempo y que no son transitorios, los cuales soportan el proceso de toma de
decisiones de una administración.

68
BASE DE DATOS

La esencia del Datawarehouse no es un producto, es una técnica de ensamblar


y gestionar los datos procedentes de distinta fuentes de forma adecuada con el
objeto de tener un visión única de los mismos para toda la empresa.

POR QUE ES IMPORTANTE EL DATAWARE HOUSE


1.- Soporte de acciones a un costo eficaz.
Los DatawareHouse producen reportes y consultas en el nivel de gestión.
2.- Rearquitectura de un sistema de aplicaciones
La separación de los sistemas de producción (Nivel Operativo) con los del
DatawareHouse, ofrece al área de Sistemas una oportunidad única para
depurar los sistemas de herencia (originales) conforme avanza la arquitectura
del sistema de la empresa
3.- Reingeniería de procesos empresariales
DatawareHouse proporcionan a la empresa y la organización las medidas
requeridas para medir la posición competitiva.

BENEFICIOS

DatawareHouse no es ni un producto de software ni una máquina o tecnología


de base de datos particular, es una serie de componentes y proceso que de un
conjunto forman la arquitectura del DatawareHouse, y de la manera como
generemos nuestro DatawareHouse, serán los beneficios obtenidos.
Los sistemas operacionales de la cual se transfiere la información seleccionada
puede ser manejadores de datos relacionales (Mod E-R), jerárquicos, de
archivos (cobol), planos o de otros generadores.

La idea principal es el soporte de las decisiones, poder analizar los datos


relacionados y aportar elementos valiosos de la toma de decisiones del
personal encargado de las mismas las cuales pueden ser analistas, directores,
de forma inmediata o en línea realizar consultas sin necesidad de esperar un
proceso batch- proceso de generación de información “1/2 noche proceso en
línea- son las transacciones, pero que se actualiza en línea con el sistema
informático(volver a facturar ese momento) transacción por transacción.
Batch- todos las transacciones.
Un DatawareHouse, no se compra, DatawareHouse, se construye porque
es ahí donde se coloca el conocimiento del negocio.

JUSTIFICACION

Las razones fundamentales que permite generar un DatawareHouse, son de


dos tipos:

1) EL NEGOCIO: Por calidad de servicio, por mayor cultura y exigencia del


cliente, como consecuencia de la inadecuada gestión de la información, por
competencia, por la globalización, por la liberación.
2) TECNOLOGIA: Abaratamiento, madurez, nueva generación de
herramientas(Discoverer, MBO; OLAP, Dinamyc cube) adicionalmente, para el
cliente, gestión y tratamiento integral del cliente desde cualquier dependencia

69
BASE DE DATOS

de la organización, diversificación de los riesgos de la identificación por


concentración de la información.

DIFERENCIAS ENTRE DATAWARE HOUSE Y BASE DE DATOS


DATAWARE HOUSE OLAP (Procesamiento Analítico en Línea)
TABLAS M/ER OLTP (Procesamiento de transacciones en línea)

CARACTERISTICAS DEL DATAWAREHOUSE

 Esta orientado a una materia ya que organiza y orienta los datos desde
la perspectiva del usuario final.
 Administra gran cantidad de información, los datawarehouse contienen
información histórica que nacen de los sistemas transaccionales.
Guarda información en diferentes medios de almacenamiento.
 Comprende múltiples versiones de un esquema de base de datos en
que debido a que el datawarehouse almacena información histórica que
potencialmente puede generarse en varias versiones de base de datos.
 Condensa y agrega información: con frecuencia los sistemas
operacionales o transaccionales guardan mucha información el
datawarehouse condensa la información y lo presenta amigable al
usuario.
 Ingresa y acoge información de muchas fuentes ya que la información se
encuentra en múltiples aplicaciones en múltiples bases de datos se
requiere el datawarehouse recopilar y organizar la información en solo
lugar la información.

TEMA SIST. OPERACIONALES SISTEMA DE SOPORTE DE

DECISION
Contenido de Valores concurrentes Archivos de datos, resumen de
Datos datos calculados
Organización Aplicación por Aplicación Sujeto a áreas de la empresa
de datos (datamart comercial, datamart
empresarial)
Naturaleza de Dinámico El datawarehouse es estático
datos hasta ser actualizado
Estructura de Complejo adecuado para Simples adecuado para el
los Datos computación operacional análisis de negocios.
(Formato)
Probabilidad Alta probabilidad de acceso Moderada o baja
de acceso
Actualización Actualización en la base Acceso y manipulación no se
de datos campo por campo actualiza directamente
Uso Altamente estructurado No estructurado proceso
procesos repetitivos analítico

70
BASE DE DATOS

Tiempo de Milisegundo Segundos a minutos


respuesta
Las bases de datos relacionales almacenan información y tablas como
registros con llaves y los datos se accedan mediante un lenguaje en común,
SQL otra parte los depósitos de datos multidimensionales almacenan los datos
de manera lógica en arreglos.

TECNICA PARA CONSTRUIR UNA BASE DE DATOS


La razón de la complejidad del datawarehouse es el rango de técnicas que se
requieren para formular desarrollar implementar y explotar un datawarehouse.

TECNICAS EMPRESARIALES. Se relacionan con la comprensión de los


datos que contienen un datawarehouse, se relaciona con determinar los
requerimientos corporativos y traducirlos a consultas que pueden satisfacer
el datawarehouse.
1. TECNICAS RELACIONADAS CON LA TECNOLOGIA. Junto con las
complejidades de implementar un datawarehouse está la necesidad de
que el proceso conserve el mismo ritmo de la curva de aprendizaje de
los usuarios y la demanda de la organización para absorber la
tecnología.
2. TECNICAS DE ADMINISTRACION DEL PROGRAMA. Los datos
extraídos deben ser uniformes para poder combinar los datos de
diferentes fuentes dentro del datawarehouse este proceso se llama
transformación.
El software de transformación convierte los datos durante el traslado
para asegurar que la información sea compatible con la base de datos
que la recibe.
Desarrollar, seleccionar e integrar estas piezas de Software requieren
técnicas de administración de datos y administración de bases de datos,
también se requiere técnicas de refinamiento o tunning en el ejecución
de consultas en la base de datos para obtener un rendimiento aceptable
en la solución del datawarehouse.

71
BASE DE DATOS

ARQUITECTURA LOGICA DEL DATAWARE HOUSE

- ALERTAS CARGA AUTOMATIZADA


EXPLORACION DE
Z - AGREGACION/ DESAGREGACION CORRELACION
DESCONOCIDAS
zona

HERRAMIENTAS
DE EXTRACCION t
DE
INFORMACION ANALISIS CONSULTAS Y
MULTIDIMENSIONAL REPORTES DATAMINING
COMPLEJOS

CONTROL DE CALIDAD
DICCIONARIO DE DATOS DE DATOS

DATAWARE HOUSE

BASE DE
DATOS

INTEGRACION
DE DATOS

FUENTES HISTORICA ARCHIVOS BD. BD. GEO BD. TEXTO


REFERENCIAL

DATAWAREHOUSE. Es una base de datos que incluye datos relevantes para la


toma de decisiones en un área de negocios es globalmente en la empresa(área
de negocios datamar)
Los datos almacenados en el Datawarehouse son fundamentalmente
agrupamientos y totalizadores de los datos relevantes que se encuentran en la
base de producción, un comportamiento importante del datawarehouse es el
diccionario de datos llamado también metadatos describe los datos
almacenados con el objetivo de facilitar el acceso a los mismos a través de las
herramientas OLAP(Procesamiento Analítico en Línea)

Ejemplo:
Master Businnes

72
BASE DE DATOS

INTERFACES ORIENTADAS A USUARIOS


Extraen información para la toma de decisiones las clásicas son el análisis
multidimensional, las consultas y reportes y el Datamining este es el bloque de
valor importante de toda la implementación del Dataware House, una
consideración importante es el rango de consultas predefinida repetitiva para
profundizar y estas consultas tienen acceso a cantidades de datos pequeños o
grandes el componente de análisis y reporte es responsable de la familia de
herramientas y aplicaciones necesarias para aprovechar el datawarehouse
estos se clasifican en herramientas de reporte análisis y de soporte de
decisiones de modelado empresarial y procesamiento analítico y de minería de
datos las herramientas y ayuda a Consultas del sistema y al personal de
mantenimiento a comprender, vigilar y administrar la información del
datawarehouse.
En la actualidad existen herramientas de diseño construcción y explotación
administración de repositorios de información mediante base de datos
multidimensionales orientadas a la implementación del datawarehouse.
Para escoger las herramientas debemos tomar en cuenta lo siguiente:

 Tiempo que toma en cargar el datawarehouse


 Tiempo de construcción y curva de aprendizaje
 Disponibilidad de las herramientas DISCOVER CAGNUS, POWER
DESIGNER 2000, DISEÑADOR PLANET
 Portabilidad y escalabilidad (se mejora las versiones)
 Facilidad para la administración.
 Organización de datawarhouse y los metadatos

Los requerimiento mínimos que debe contemplar una herramienta de


consulta para DatawareHouse son las siguientes:
 Facilidades para acceso manejo y presentación de datos
 Manejo de dimensiones
 Capacidad de manejo de detalles en caso de análisis
multidimensionales (drill down)
 Manejo de totales en el caso de análisis multidimensional
 Reportes gerenciales, etc

INFRAESTRUCTURA
La funcionalidad de dataware house se divide en 5 grades grupos, cada uno de
los cuales es responsable de un proceso específico:

 Acceso a Fuentes
 Carga de
 Almacenamiento
 Consultas
 Metadatos

La funcionalidad de acceso a fuentes incluyen proceso que se aplican en las


bases de datos fuentes a los que serán transferidos los datos pueden transferir
de fuentes muy diversas el determinar la mayor fuente de datos evitando
redundancias es una de las tareas más largas y difíciles desafortunadamente
automatizar estas tareas no nada fácil.

73
BASE DE DATOS

CARGA: La funcionalidad de carga comprende procesos asociados con la


liberación de datos desde los aplicativos fuentes a las bases del
datawarehouse.
ALMACENAMIENTO: Esta funcionalidad comprende la arquitectura necesaria
para integrar varia vistas al datawarehouse aunque por lo general cuando
hablamos de datawarehouse consideramos un único almacenamiento de datos
potencialmente sus datos pueden estar distribuidos en múltiples bases.
Llamamos al datawarehouse a la base integrada y datamart a las vistas
multidimensionales de cada área la separación entre el datawarehouse
corporativo y el datamart satélites introduce la necesidad de una estrategia que
coordinen la distribución de los datos hacia los datamart.
CONSULTAS: Este ambiente permite a los usuarios conducir el análisis y
producir reportes a través de sus herramientas o lazos multidimensional.
Ejem.
La herramientas del DATAMINING analizan los datos para identificar con
relaciones inesperados entre ellos.
Una de las principales roles de esta tecnología chequear la efectividad de las
reglas de la empresa.

El arquitecto del DATAWARHOUSE debe determinar como totalizar los datos.


Existen varios enfoques viables la suma puede realizar durante la carga y
almacenamiento del WATAWORHOUSE la suma puede realización durante la
duplicación de las determinar durante las herramientas de consulta y
simulación.
METADATOS El conocimiento de los METADATOS es tan importante como el
conocimiento de los datos de DATAWAREHOUSE deben incluir el dominio,
reglas de validación duración y transformación de los datos extraídos.
También describen las bases de datos del DATAWAREHOUSE incluyendo
reglas de distribución y control de la migración hasta las DATAMAR.
Existen 5 grandes grupos provienen una marco del trabajo para controlar la
arquitectura de los componentes o sea este marco describe las
transformaciones de los datos desde un ambiente OLTP a un ambiente OLAP
(Proceso de análisis en línea).

Es el rango de consultas predefinida repetitiva para profundizar y estas


consultas tienen acceso a cantidad de datos pequeños o grandes. El
componente de análisis y reporte es responsable de la familia de herramientas
y aplicaciones necesarias para aprovechar al DATAWAREHOUSE esta se
clasifica en herramientas de reparte de análisis y de soporte de drasions de
modelado empresarial y procesamiento analítico y en minería de datos las
herramientas ayudan a consultar de sistema y al personal de mantenimiento a
comprende vigilar y administrar la información

DISEÑO DE CONSTRUCCION
El Datawarehouse tiene un ciclo de vida similar a los sistemas de tipo
transacción oral. Las fases que comprende el ciclo de vida del Datawarehouse
son los siguientes.
1. Planeación
2. Requerimientos
3. Análisis

74
BASE DE DATOS

4. Diseño
5. Construcción
6. Despliegue o Pruebas
7. Expansión o Desarrollo

1. PLANEACION: Es el proceso más importante donde se establecerá el tipo


de solución de la empresa. Existen tres factores a considerar a la hora de
establecer un Data Warehouse:

1.- Alcance del Data Warehouse

2.- Redundancia de datos


El concepto de data warehouses centrales es el concepto inicial que se tiene
del data warehouse. Es una única base de datos física, que contiene todos los
datos para un área funcional específica, departamento, división o empresa.
3.- Usuario Final: Existen tres grandes categorías:
Ejecutivos y gerentes
"Power users" o "Buzo de Información" (analistas financieros y de negocios,
ingenieros, etc.)
Usuarios de soporte (de oficina, administrativos, etc.).
Cada una de estas categorías diferentes de usuario tienen su propio conjunto
de requerimientos para los datos, acceso, flexibilidad y facilidad de uso.

Los paso para implementar un Data Warehouse

1.1.1 Selección de estrategias de implementación: Tiene mucho que ver con la


cultura de la organización y se basan en como se llevan a cabo las
tareas dentro de la organización
1.1.2 Selección de metodologías de desarrollo: Consiste en desarrollar un a
lista de objetivos empresariales que la empresa debe satisfacer

75
BASE DE DATOS

1.1.3 Selección del ámbito de implementación : una primera implementación


es la motivación del proyecto, después de definir los objetivos se hace
necesario derivar con rapidez un ámbito ilimitado, el ámbito puede
restringirse en dos categorías: a. Ámbito determinado a partir de la
perspectiva del usuario y determinación del ámbito con base en
consideraciones tecnológicas
1.1.4 Selección de enfoque arquitectónico: se dispone de las siguientes
opciones
Almacenamiento operacional en comparación con el uso de copias de
datos operaciona
operacionales
Solo Data Warehouse
Solo mercado de datos
Data Warehouse y mercado de datos
Separación de plataforma e infraestructura
Arquitectura cliente/servidor de dos hileras
Arquitectura cliente/servidor de tres hileras
1.1.5 Desarrollo del programa y presupuesto del proyecto:
Articular un plan de programa es decir una visón, su función de vida
diaria y semanal
de la organización
Reservar un presupuesto al tiempo que se compromete el gasto para el
proyecto y se
basa en dos enfoques:
Proporcionar medidas para la estimación de la retribución
1.1.6 Desarrollo de escenarios de uso empresarial: Un factor de éxito es hacer
que los usuarios finales se involucren en el establecimiento de las
expectativas de lo que ofrece el data warehouse
1.1.7 Recopilación de metadatos: los cuales se utilizan para construir Data
Warehouse los cuales proviene de muchas fuentes como:
Los modelos empresariales construidos por la organización
Los depósitos y diccionarios
Las fuentes externas de datos

2. REQUERIMIENTOS: describieran con claridad el ambiente operativo en el


que se entregara el Datawarehouse. Los pasos son:

1.2.1. Requerimientos del propietario: Algunas de las cuestiones: Porqué


construir??Cuales son los objetivos??Cuantos costara?? Cuando estará
listo??
Para ampliar un negocio, se necesita que la información sea
comprensible. Para muchas compañías, ésto significa un gran data
warehouse que muestre, junto a los datos no filtrados y dispersos, nuevas
formas creativas de presentación.
1.2.2. Requerimientos del arquitecto El arquitecto es la persona responsable de
diseñar los diferentes componentes, la calidad el esfuerzo determina: el rango
de funciones y
características a ofrecer, el rango de plataformas, el uso de estándares e
Interfaces la flexibilidad

76
BASE DE DATOS

1.2.3. Requerimientos del Desarrollador: el desarrollador requiere que la


arquitectura de datos, de aplicación y tecnología se subdividan y necesitan
de los siguientes requerimientos: de tecnología, despliegue, de disposición
para el desarrollo y despliegue del personal y sus habilidades
1.2.4. Requerimientos del usuario final: podrían ubicarse en una o más de las
siguientes
categorías:
Flujo de trabajo
Requerimientos de consultas
Requerimientos de reporte

3. ANÁLISIS: significa convertir los requerimientos acopiados en la fase


anterior en un conjunto de especificaciones que puedan apoyar al diseño y
hay tres especificaciones principales de entrada:

1.3.1 Requerimientos de enfoque empresarial: El enfoque empresarial


determinara la audiencia y sus requerimientos de información, la informaciones
se clasifica en categorías que permiten establecer prioridades y un ejemplo
seria clasificar la información en categoría de costos e ingresos
1.3.2 Especificaciones de requerimientos de fuentes de datos: El data
warehouse toma información de los datos existentes en la empresa los cuales
conforman los cimientos de una base de conocimientos que sirven para
determinar la salud de la empresa
1.3.3 Especificaciones de requerimientos de usuario final de acceso: Definen
como se utilizara la información del Data Warehouse y junto con estas se
encuentran las especificaciones de los tipos de herramientas técnicas
El proceso de análisis consiste en derivar modelos físicos y lógicos de datos
para el Data Warehouse y los mercados de datos y definir los procesos
necesarios para conectar la fuente de datos

4. DISEÑO: En la fase de diseño los modelos lógicos se convierten en modelos


físicos los procesos identificados en la fase de análisis para conectar con las
fuentes de datos con el
Data Warehouse y este con los mercados de datos y este Data
Warehouse/mercados con las herramientas de trabajo del usuario final, se
convierten en diseños para programas que realizaran las tareas requeridas.
Las aplicaciones que tienen un buen rendimiento y están disponibles para el
procesamiento de transacciones, deben llevar una cantidad mínima de datos si
tienen cualquier grado de flexibilidad. Por ello, las aplicaciones operacionales
tienen un corto horizonte de tiempo, debido al diseño de aplicaciones rígidas
Las fases de diseño son:
1.- Diseño detallado de la arquitectura de datos.- Se refiere al desarrollo de los
modelos físicos de datos donde se almacenará el DWH
2.- Diseño detallado de la arquitectura de la aplicación.-

ESTRATEGIAS PARA EL DISEÑO DE UN DATA WAREHOUSE

El diseño de los data warehouses es muy diferente al diseño de los sistemas


operacionales tradicionales. Se pueden considerar los siguientes puntos:

77
BASE DE DATOS

1ra. : Los usuarios de los data warehouses usualmente no conocen mucho


sobre sus requerimientos y necesidades como los usuarios operacionales.
2da.: El diseño de un data warehouse, con frecuencia involucra lo que se
piensa en términos más amplios y con conceptos del negocio más difíciles de
definir que en el diseño de un sistema operacional. Al respecto, un data
warehouse está bastante cerca a Reingeniería de los Procesos del Negocio
(Business Process Reengineering).
3ra.: Finalmente, la estrategia de diseño ideal para un data warehousing es
generalmente de afuera hacia adentro (outside-in) a diferencia de arriba hacia
abajo (top-down).

A pesar que el diseño del data warehouse es diferente al usado en los diseños
tradicionales, no es menos importante. El hecho que los usuarios finales tengan
dificultad en definir lo que ellos necesitan, no lo hace menos necesario. En la
práctica, los diseñadores de data warehouses tienen que usar muchos "trucos"
para ayudar a sus usuarios a "visualizar" sus requerimientos. Por ello, son
esenciales los prototipos de trabajo.

5.- Construcción La fase de construcción es responsable de implementar


físicamente los diseños de la fase anterior.
La construcción del DataWarehouse es similar a la construcción de un sistema
de base de datos relacional grande, la mayoría de las aplicaciones que se
necesita construir son las siguientes:

 Programas que creen y modifiquen las bases de datos para el Data


Warehouse
 Programas que extraigan datos de fuentes de base de datos relacionales y
no relacionales.
 Programas que realicen transformaciones de datos, tales como integración,
resumen y adición.
 Programas que realicen actualizaciones de base de datos relacionales
 Programas que efectúen búsquedas en bases de datos muy grandes

Esquema Estrella

Como el nombre sugiere, el esquema estrella es un paradigma de modelado


que tiene un solo objeto en medio conectado con varios objetos de manera
radial. El esquema estrella refleja la visión del usuario final de una consulta
empresarial: hechos tales como ventas, compensación, pago y facturas, se
califican por una o más dimensiones (Por mes, por producto, por región
gráfica). El objeto en el centro de la estrella se denomina tabla de hechos y los
objetos conectados a ella se denomina tablas de dimensión.

78
BASE DE DATOS

ESQUEMA COPO DE NIEVE

Este es una extensión del esquema estrella en donde cada uno de los puntos
de la estrella se divide en más puntos. En esta forma de esquema, las tablas
de dimensión del esquema estrella contienen más normas.

Las ventajas que proporciona el esquema copo de nieve son mejorar el


desempeño de consultas debido a un mínimo almacenamiento en disco para
los datos y mejorar el desempeño mediante la unión de tablas más pequeñas
con normas, en vez de las grandes tablas sin normas. Asimismo, el esquema
copo de nieve incrementa la flexibilidad de las aplicaciones debido a la
aplicación de normas y, por lo tanto, disminuye la granularidad de las
dimensiones.

79
BASE DE DATOS

Esquema Mixto

El esquema mixto es un convenio entre el esquema estrella, basado en tablas


de hechos y tablas de dimensión de normas, y el esquema copo de nieve, en
donde todas las tablas de dimensión tienen normas. En el esquema mixto solo
se aplican normas a las tablas de dimensión más grandes.

Aplicación Planeación Datamar


Matricula Técnicas empresariales
Facturación Requerimientos corporativos
Recaudación Resumen Cartera Vencida
Mensual, trimestral, semestral, Anual
Por sector
Por zona
Por tipo de servicio

80
BASE DE DATOS

Ejemplo
PRESTAMOS DE CD’s
DISEÑO DEL DATA MART

CATEGORIA

Cod_categoria
descripcion

PRODUCTO
Fecha _ préstamo TIPOS
Cod_producto Cod_producto
Cod_cliente Cod_categoria Cod_tipo
Cod_tipo
Cantidad Descripción
Valor

CLIENTE

Cod_cliente
nombre

META DATOS

Nombre del Campo: FECHA_PRESTAMO


Descripción: Fecha que se realiza el prestámo
Tipo: datatime
Longitud: 8
Archivo Fuente:
Archivo Destino en tabla D.W: PRESTAMO
Fórmula:
Nombre del script: DMPCDs.sql
Unidad de Medida:

Nombre del Campo: Cod_producto

81
BASE DE DATOS

Descripción: Es el codigo del cd


Tipo: numeric
Longitud: 5
Archivo Fuente:
Archivo Destino en tabla D.W: PRESTAMO
Fórmula:
Nombre del script: DMPCDs.sql
Unidad de Medida:

Nombre del Campo: COD_CLIENTE


Descripción: Es el codigo que tiene la tabla de cliente
Tipo: numeric
Longitud: 5
Archivo Fuente:
Archivo Destino en tabla D.W: PRESTAMO
Fórmula:
Nombre del script: DMPCDs.sql
Unidad de Medida:

Nombre del Campo: CANTIDAD


Descripción: Cantidad de CD’s prestados
Tipo: numeric
Longitud: 5
Archivo Fuente:
Archivo Destino en tabla D.W: PRESTAMO
Fórmula:
Nombre del script: DMPCDs.sql
Unidad de Medida:

Nombre del Campo: VALOR


Descripción: Valor que tiene el prèstamo por cada cd
Tipo: numeric
Longitud: 5
Archivo Fuente:
Archivo Destino en tabla D.W: PRESTAMO
Fórmula:
Nombre del script: DMPCDs.sql
Unidad de Medida:

82
BASE DE DATOS

BASE DE DATOS ORIENTADO A OBJETOS


ORACLE VERSION ENTERPRISE

Oracle es un sistema de administración de Base de Datos Relacionales


(RDBMS).

La opcion de Objetos disponible en la version empresarial de Oracle 8 hace de


Oracle un sistema de administración de Base de Datos Objeto.

Con la Opcion de Objetos, Oracle almacena y acccesa a los datos


estructurados del negocio en forma natural a traves de tipos de datos
complejos definidos por el usuario.

Trabaja en forma eficiente con aplicaciones desarrolladas utilizando tecnicas de


programación orientadas a objetos utilizando tales como C++.

Tipos de datos de Usuario

Los tipo de Objeto son plantillas que corresponden a abstracciones del mundo
real definidas a partir de los tipos de datos propios de Oracle y otros tipos de
datos de usuario, la estructura de datos que se ajusta a la plantilla se llama
objeto.

El tipo Objeto esta compuesto por:

Un nombre: Que identifica en forma única al tipo objeto.

Atributos: Definen la Estructura y estado de la entidad del mundo real pueden


ser tipos de datos propios de Oracle y otros tipos de datos de usuario.

Métodos: Son funciones o procedimientos escritos en Pl/SQL y almacenados


en Base de Datos o escritos en un lenguaje como C y almacenados
externamente. Los métodos implementan operaciones que pueden ser
ejecutadas por las entidades del mundo real.

Tipo Colección

Cada tipo colección describe una unidad de datos constituida por un


indeterminado número de elementos, todos del mismo tipo, ya sea tipos
predefinidos de oracle o tipo objeto, sirven para definir atributos multivaluados.

Los tipos colección pueden ser tipo arreglo/VARRAY o tipo tabla /TABLA
ANIDADA.

Los tipos colección tienen de construcción. El nombre del método constructor


es el nombre del tipo, y sus argumentos son los elementos de la colección
separados por comas. El método constructor es una función que retorna como
valor resultante una nueva colección.

83
BASE DE DATOS

Veamos un ejemplo extendido.

Un ejemplo Extendido

Ordenes de Compra.- Este ejemplo se basa en una actividad simple de


negocio: modelo de datos para el tratamiento de ordenes de compra de
clientes. El ejemplo se presenta en tres partes, cada parte implementa un
esquema para soportar la actividad básica.

La primera parte implementa el esquema utilizando solamente los tipos de


datos propios de ORACLE, es decir la solución puramente relacional

La segunda y tercera parte utilizan los tipos definidos por el usuario (UDTs)
para trasladar las entidades y relaciones directamente a un esquema de
objetos.

En la segunda parte del ejemplo se crea el esquema de objetos para


almacenar los datos en contraste con el esquema puramente relacional de la
primera parte.

En la tercera parte del ejemplo se utiliza el esquema relacional creado en la


primera parte, los tipos objeto creados en la segunda parte y aplica vistas
objeto para representar un esquema virtual de objetos.

Primera Parte del Ejemplo- Implementación Relacional

Las entidades básicas de ejemplo son:

Los Clientes/Customers, Los productos en venta / Stock y Las Ordenes


de Compra/ Purchase Orders

La Entidad Cliente tiene una relación uno a muchos con las Ordenes de
Compra, puesto que un cliente puede poner varias ordenes de Compra pero
una orden de compra corresponde solamente a un cliente.

La Entidad Ordenes de compra tiene una relación de muchos a muchos con


la entidad Productos, puesto que una orden puede contener varios productos
y un producto puede estar incluido en varias ordenes. La forma de romper esta
relación de muchos a muchos es introducir una nueva entidad que la
llamaremos líneas de la lista de ítems/Line Item List, de manera que una
orden de compra pueda tener un numero arbitrario de líneas de Ítems, pero
cada línea de item pertenece a una sola orden de Compra.

Un producto puede aparecer en muchas líneas de ítems, pero cada línea de


productos se refiere a un solo producto. Las relaciones serian las siguientes:

Customer(custno, custname, información de ubicación)

84
BASE DE DATOS

Stock(itemid, cost, código de impuesto)


Parchase Order(purchaseno, custno, fechas, dirección de envío)
Line Item List(LineItemId, purchaseno, Itemid, cantidad, precio, descuento)

La implementación relacional normaliza las entidades y sus atributos,


estructurando las entidades cliente, orden de compra y producto en tablas.

Segunda parte del Ejemplo: Implementación con Objetos

El problema es que las entidades del mundo real son complejas, por lo que
requieren un conjunto complejo de atributos que representan su estructura de
datos. Una dirección contiene atributos tales como calle, ciudad, estado, y
código postal. Un cliente puede tener varios números telefónicos. La entidad de
línea de la lista de ítems es una entidad en su propio derecho pero además es
un atributo de la entidad orden de compra. Los tipos de datos propios de oracle
no pueden representar estos atributos en forma directa. La opción de objetos
hace posible manejar estas estructuras complejas.

Definición de Tipos

Las siguientes sentencias inician la definición:


CREATE TYPE line_items_t;
CREATE TYPE putcharse_order_t;
CREATE TYPE stock_info_t;

Las sentencias precedentes definen en forma incompleta los tipos. Las


definiciones incompletas notifican a Oracle que las definiciones completas
vendrán a continuación. Oracle permite que las definiciones hagan referencia a
tipos incompletos a fin de facilitar su construcción y compilación.

La siguiente sentencia define un tipo de arreglo.

CREATE TYPE phone_list_t AS VARRAY(10) OF VARCHAR2(20);


Esta sentencia define el tipo llamado PHONE_LIST_T. Cualquier atributo
multivaluado de este tipo es un arreglo VARRAY de hasta 10 números
telefónicos, cada uno del tipo de dato “VARCHAR” propio de oracle.

Una lista de Números de teléfono puede ser un arreglo o una tabla anidada, en
este caso la mejor opción es un arreglo, por las razones siguientes:

 El orden de los números puede ser importante. Los VARRAYs están


ordenados, las tablas anidadas no tienen orden.
 La cantidad de números de teléfono para un cliente es pequeño. Los
VARRAYs forsán la especificación de un número máximo de elementos
(10 en este caso). Estos utilizan el almacenamiento mas eficientemente
que las tablas anidada las cuales no tiene limitaciones especiales de
tamaño.
 No existe razón para realizar querys sobre la lista de números de
teléfono, de tal manera que el formato de tabla anidada no ofrece ningún
beneficio en este caso.

85
BASE DE DATOS

En general, si el orden y la cantidad no son consideraciones importantes del


diseño la regla sería la siguiente: Si se requiere realizar querys sobre la
colección, utilizar tablas anidadas, si se pretende acceder la colección como un
todo, utilizar VARRYs.

CREATE TYPE address_t AS OBJECT (


street VARCHAR2(200),
city VARCHAR2(200),
state CHAR(2),
zip VARCHAR2(20)

);

Esta sentencia define el tipo Objeto address_t. Los atributos multivaluados de


este tipo representan direcciones compuestas por atributos tipo cadena de
caracteres.
La sentencia siguiente define un tipo objeto que utiliza otros tipos de datos
también cuenta con un método de comparación.

CREATE TYPE customer_info_t AS OBJECT (


custno NUMBER,
custname VARCHAR2(200),
address address_t
phone_list phone_list_t,
ORDER MEMBER FUNCTION
Cust_order(x IN customer_info:_t)RETURN INTEGER,
PRAGMA RESTRICT_REFERENCES (
Cust_order, WNDS;WNPS;RNPS;RNDS)
);

Cada objeto de este tipo tiene asociado un método de orden, unos de los dos
tipos de métodos de comparación. Siempre que ORACLE requiere comparar
dos Objetos del tipo CUSTOR_INFO_T, invoca el metodo CUST_ORDER para
hacerlo.

La siguiente sentencia completa la definición del tipo objeto LINE_ITEM_T ,


que ya lo declaramos.

CREATE TYPE line_items_t AS OBJECT (


line item no NUMBER,
STOCKREF REF stock_info_t,
Quantity NUMBER,
disco unt NUMBER
);

STOCKREF es una referencia al tipo objeto Stock_ info_ t que representa los
productos.

86
BASE DE DATOS

CREATE TYPE line_item_list_t AS TABLE OF line_item_t;


Esta sentencia define la tabla anidada LINE_ITEM_LIST_T donde cada tupla
de la tabla contiene un objeto del tipo LINE_ITEM_T.

En este caso la tabla anidada es una mejor opción para representar la lista de
ítems de la orden que un arreglo VARRAY de objetos del tipo LINE_ITEM_T,
por las razones siguientes.

 Realizan querys sobre el contenido de la lista de ítems de la orden de


compra es una necesidad prioritaria.
 El indexamiento para el acceso eficiente es necesario, los VARRAY no
pueden ser indexados.
 El Ordenamiento para los items de la lista puede ser resuelto por el
número de líneas.
 No existen limite a lis ítems de la lista de la orden de compra, los
VARRAY requieren que se especifiquen un número máximo de
elementos.
La sentencia siguiente completa la definición de tipo objeto

PURCHASE_ORDER_T
CREATE TYPE purchase_order_t AS OBJECT (
pono NUMBER,
custref REF customer_info_t,
orderdate DATE,
shipdate DATE,
line_item_list line_items_list_t,
shiptoaddr address_t,

MAP MEMBER FUNCTION


ret_value RETURN NUMBER,
PRAGMA RESTRICT_REFERENCES (
Ret_value, WNDS;WNPS;RNPS;RNDS),

MEMBER FUNCTION
Total_value RETURN NUMBER,
PRAGMA RESTRICT_REFERENCES (total_valu, WNPS)
);

La sentencia siguiente completa de STOCK_INFO_T, el último de los tres tipos


objeto, declarados al inicio:

CREATE TYPE stock_info_t AS OBJECT (


stockno NUMBER,
cost NUMBER,
tax_code NUMBER,
);

87
BASE DE DATOS

Creación de las tablas Objeto

En general, pensamos en la relación entre Objetos y tablas de la manera


siguiente.

 Clases, que se representen entidades, definidas como tablas.


 Atributos representados como columnas, y
 Objetos representados por tuplas o filas de registro.

Visto de esta manera cada tabla es un tipo implícito cuyos objetos (tuplas
especificas) tienen los mismos atributos (Columnas). La creación de tipos
explícitos de datos abstractos y de tablas objeto nos introducen en un nuevo
nivel de funcionalidad.

Tablas Objeto con objetos embebidos.

Examinamos la definición observamos que la columna ADDRES contiene del


tipo ADDRES_T. Puesto de otra manera: un tipo de datos abstracto puede
tener atributos que son por si mismos tipos de datos abstractos. Cuando estos
tipos son instanciados como objetos sus objetos incluidos son instanciados al
mismo tiempo. Los Objetos de ADDDRES_T contienen atributos de tipo propio
de oracle, lo que significa que son atributos terminales de
CUSTOMER_INFO_T.- Oracle crea columnas para los objetos ADDRES_T y
sus atributos en la tabla objeto CUSTOMER_TAB. Se pueden referenciar estas
columnas usando la notación punto, por ejemplo podemos referenciar como
ADDRES.ZIP si deseamos crear un índice sobre esta columna.

Las columnas PHONE_LIST contiene un arreglo VARRY del tipo


PHONE_LIST_T que fuera definido como.

CREATE TYPE phone_list_t AS VARRAY(10) OF VARCHAR2(20);


Pusesto que cada arreglo VARRAY de este tipo puede contener hasta 200
caracteres (10 x 20).

La tabla objeto STOCK_TAB se drea a partir del tipo objeto stock_info_t:


(stockno PRIMARY KEY):

La tabla se crea con los 3 atributos numéricos del tipo:


stockno NUMBER,
cost NUMBER,
tax_code NUMBER

88
BASE DE DATOS

ANEXOS
Ejercicios de esquema de bases de datos

89
BASE DE DATOS

90
BASE DE DATOS

91
BASE DE DATOS

92
BASE DE DATOS

93
BASE DE DATOS

94
BASE DE DATOS

95
BASE DE DATOS

96
BASE DE DATOS

97

S-ar putea să vă placă și