M6 Fundamentos de DB2

Anuncio
Fundamentos de
DB2
DBMS DB2
• DB2 es un Manejador de Base de datos Relacionales
BASE DE DATOS DE ADMINISTRACION
TABLAS
RELACIONADAS
BASE DE DATOS DE VENTAS
TABLAS
RELACIONADAS
Componentes de DB2
•
•
•
•
Data Definition Language ( DDL )
Data Manipulation Language ( DML )
Structured Query Language ( SQL )
y otras instrucciones de CONTROL
Diseño de Tablas en DB2
• Una tabla por entidad
• Información relacionada acerca de:
• Empleados
• Departamentos
• Proyectos...
EMP
y mas...
DEP
PROY
Nombres de Objetos
• Cada Tabla y columna deben tener nombre
– Primer carácter ALFABETICO
– Otros ALFANUMERICO
– Máximo de 18 caracteres
– Nombre único de tabla por cada OWNER
– Nombre único de columna por cada TABLA
Referencias a Tablas
Base de datos
NOMBRE TABLA
EMP
NOMINA
NOMBRE COMPLETO DE TABLA
NOMINA.EMP
Nombres de columnas
NOMBRE DE LA TABLA
EMP
APELLIDO
NOMBRE CALIFICADO
DE LA COLUMNA
EMP.APELLIDO
Tipos de datos
• A cada columna le es asignado un tipo específico y
tamaño de dato
• Categorías de tipos de datos
– Numeric
– Character
– Graphics
– Date/Time
Formatos Date/Time
• DATE
yyyymmdd
• TIME
hhmmss
• TIMESTAMP
yyyymmddhhmmssnnnnnn
Formato Nulos
• Cada columna tiene una característica de nulidad, reglas
aplicables para cuando el valor de un dato es inexistente
• NOT NULL
• ALLOW NULL
• NOT NULL WITH DEFAULT
Nulos
A
KFYDJ
B
?
C
NCU
D
bbbbbbbb
A - - - NOT NULL
los valores deben de ser dados
B/C - ALLOW NULL
si un valor no es dado, este es
marcado como desconocido
D - - - NOT NULL WITH DEFAULT
si un valor no es dado, DB2 rellena con un valor de
DEFAULT
Not Null With Default
• Cuando no existe un valor
NUMERIC rellena con ZEROS
FIXED rellena con BLANCOS
VARIABLE coloca LONGITUD CERO
DATE coloca CURRENTCURRENT-DATE
TIME coloca CURRENT
CURRENT--TIME
TIMESTAMP coloca CURRENTCURRENT-TIMESTAMP
Primary key (llave primaria)
• Una o varias columnas pueden identificar una ocurrencia de
entidad especifica (primary key)
TABLA:: EMP
TABLA
NUMEMP
APELLIDO
NUMDEP
PUESTO
030
KWAN
C01
GRTE
250
SMITH
D21
VEND
270
PEREZ
E11
VEND
300
SMITH
D21
OPR
VALORES UNICOS
...
Relación de datos
• Un renglón en una tabla puede ser lógicamente asociada
con otro, en alguna otra tabla
– Cada empleado trabaja en un departamento
Relación de Tablas
• Un renglón en una tabla puede acarrear la llave de otra
tabla
–Cada renglón de empleado contiene la llave de los departamentos
de empleados
Llaves
KEY
Identifica una
línea de datos
PRIMARY KEY
Identifica su
propio renglón
FOREIGN KEY
Identifica una
relación de datos
Tablas relacionadas
DEP
NUMDEP
NOMDEP
NUMGRTE
C01
INFO
030
D21
ADMIN
070
B01
PLAN
020
E11
OPER
090
LLAVE FORANEA
LLAVE PRIMARIA
EMP
...
NUMEMP
APELLIDO
NUMDEP
PUESTO
030
KWAN
C01
GRTE
250
SMITH
D21
VEN
270
PEREZ
E11
VEN
300
SMITH
D21
OPR
...
Relaciones de entidades
DE UNOUNO-A-MUCHOS
UNO
UN
UN EMPLEADO
TIENE
DEPARTAMENTO
EMP
DEP
EMP
UN
DEPARTAMENTO
TIENE
EMPLEADOS
EMP
MUCHOS
MUCHOS
Relación de Entidades
DE MUCHOS
MUCHOS--A-MUCHOS
MUCHOS
UN EMPLEADO
TIENE PROYECTOS
MUCHOS
EMP
PROY
EMP
PROY
EMP
PROY
MUCHOS
UN PROYECTO
TIENE EMPLEADOS
MUCHOS
Asociación de Tablas
EMP
NUM
EMP APELLIDO
1
PROYECTO
ASIGNACIONES
SMITH
2
JONES
5
BROWN
NUM
EMP
NUM
PROY
1
C1
1
C3
1
C4
2
C3
2
C4
5
C1
5
C3
NUM
NOM
PROY
PROY
C1
SOPORTE
C3
TALLER
C4
DISEÑO
• Una tabla de asociación para una relación muchos
muchos--a-muchos
Reglas de proceso
• Integridad referencial
referencial.. Mantiene la validez de datos por
la aplicación de reglas durante el proceso, como
como::
 El valor de la llave primaria es único y nunca nulo
 Cada valor de llave foránea debe corresponder a cada llave
primaria
Violación de Llave Primaria
NUMDEP
C01
D21
B01
E11
NOMDEP
INFO
ADMIN
PLAN
OPER
NUMEMP
APELLIDO
030
KWAN
250
SMITH
270
PEREZ
300
SMITH
NUEVO EMPLEADO
EMPLEADO::
250
DEAN
NUMGRTE
030
070
020
090
NUMDEP
C01
D21
E11
D21
...
PUESTO ...
GRTE
OFI
OFI
OPR
C01
VEN
Violación de Llave Foránea
NUMDEP
C01
D21
B01
E11
NOMDEP
INFO
ADMIN
PLAN
OPER
NUMEMP
APELLIDO
030
KWAN
250
SMITH
270
PEREZ
300
SMITH
NUEVO EMPLEADO
EMPLEADO::
315
COBB
NUMGRTE
...
030
070
020
090
NUMDEP
C01
D21
E11
D21
B02
PUESTO ...
GRTE
OFI
OFI
OPR
VEN
Reglas de Borrado
• Cuando una línea con una llave primaria es borrada,
que pasará con las líneas iguales a las llaves
foráneas?
• El diseñador selecciona uno de los siguientes casos
casos::
- CASCADE
- SET NULL
- RESTRICT
Resumen
• Número de tablas
– Una tabla por cada entidad significativa de datos
– Una tabla de asociación por cada par de entidades con relación
muchos--a-muchos
muchos
– Una tabla para grupos de columnas repetitivas
Resumen
• Formato de tablas
– Una columna por cada elemento de dato
– Un renglón por cada ocurrencia de una entidad
– Cada renglón en una tabla debe contener las mismas columnas en
sus ocurrencias
• Formato de columnas
– Cada columna esta asignada a un tipo específico de dato y tamaño
•
•
•
•
NUMERIC
CHARACTER STRING
GRAPHIC
DATE / TIME
Resumen
– Cada columna tiene una característica de nulidad
nulidad::
• ALLOW NULL
• NOT NULL
• NOT NULL WITH DEFAULT
Resumen
• Especificaciones
– Una TABLA y una COLUMNA son identificadas por un NOMBRE
– Un RENGLON es identificado por los valores que contiene, ejemplo
ejemplo::
Los apellidos de todos los empleados que trabajan en el
departamento D21
TABLA:: EMP, COLUMNA
TABLA
COLUMNA:: APELLIDO
RENGLONES:: Todos aquellos que NUMDEP = ‘D
RENGLONES
‘D21
21’’
• Tablas relacionadas
– Los valores en una tabla (Llave foránea) deben de coincidir con los
valores en otra tabla (Llave primaria)
Manejo Físico de Datos
• DDL y el catálogo de DB
DB2
2
DECISIONES DE
DISEÑO
DDL
DEP
EMP
CATALOGO
DE DB2
TABLAS
CREATE
ALTER
DROP
Instrucciones DDL
• Data Definition Language
– Lenguaje de definición de datos
CREATE
ALTER
DROP
Manejo de Objetos
• Cada tabla (TABLE) se encuentra en un TABLESPACE
• Cada TABLESPACE y sus contenidos se encuentran dentro
de una base de datos (DATABASE)
• Una base de datos (DATABASE) es un grupo de
Tablespaces y Tablas
Create Database
• Define una base de datos que contendrá información
CREATE DATABASE DB3
DB3
Create Tablespace
• Aloja espacio para almacenar tablas
CREATE TABLESPACE TS3 IN DB3
TS3
TS1
TS2
DB3
Create Table
• Describe las tablas
CREATE TABLE EMP...IN DB3.TS2
EMP
TS3
TS1
TS2
DB3
Create Table
CREATE TABLE TB1
(C1
CHAR (6)
C2
INTEGER
C3
DECIMAL
C4
VARCHAR
PRIMARY KEY
IN DB1.TS1
NOT NULL,
NOT NULL WITH DEFAULT,
(4,2),
(24),
(C1) ),
Create Table
CREATE TABLE TB
TB4
4
( COLA SMALLINT,
COLB CHAR (6),
FOREIGN KEY (COLB)
REFERENCES TB
TB1
1
ON DELETE CASCADE )
IN DB
DB1
1.TS
TS1
1
Alter de Tabla
ALTER TABLE TB
TB1
1
ADD C5 CHAR (24
24))
C1
C2
C3
C4
C5
Adición de Columnas
• Una columna por ALTER
• Queda en la columna mas a la derecha
• Debe ser NULL o NOT NULL WITH DEFAULT
Alter NO
NO...
...
• Cambia los tipos de datos
• Cambia longitud de columnas
• Cambia atributos de nulidad
• Reacomoda columnas
• Remueve una columna
Instrucción DROP
• DROP INDEX IX
IX1
1
• DROP TABLE TB
TB1
1
• DROP TABLESPACE DB
DB1
1.TS
TS1
1
• DROP DATABASE DB
DB1
1
DROP Index IX1
DB1
SG1
TS1
TB1
SYN
SG2
DROP Index TB1
DB1
SG1
TS1
SG2
Resumen
• DDL controla la información contenida en el catálogo de
DB2
DB
2 acerca de los objetos DB
DB2
2
• Sentencias DDL
– CREATE
– ALTER
– DROP
Objetos DB
DB2
2
• Un DATABASE es la agrupación de tablas, sus índices y los
espacios que estos ocupan
• Objetos DB
DB2
2
–
–
–
–
–
–
–
DATABASE
TABLESPACE
STORAGE GROUP
TABLE
SYNONYM
VIEW
INDEX
Instrucciones DML
• Data Manipulation Language
– SELECT
SELECT.. Recupera datos
– UPDATE
UPDATE.. Cambia valores
– DELETE
DELETE.. Elimina renglones
– INSERT
INSERT.. Añade renglones
Select típico
SELECT
IDENTIFICA
Columna, Columna
Columnas
FROM
Tabla
Tabla
WHERE
Columna = Valor
Renglones
Select típico
SELECT
FROM
WHERE
PUESTO, NOMBRE
EMP
NUMDEP = 20
ID NOMBRE NUMDEP PUESTO
10
20
30
40
80
SAND
PERN
MARE
OBRI
JAME
20
20
38
38
20
GRTE
VEND
GRTE
VEND
OFI
PUESTO NOMBRE
GRTE
VEND
OFI
SAND
PERN
JAME
Comparaciones
• Operadores ( >, =, <, ¬=)
• Booleanos (AND, OR)
• Valores parciales (LIKE ‘ _ %’)
• Valores en renglón (COMISION>SALARIO)
• Valores calculados (COMISION/
(COMISION/12
12))
SELECT * FROM EMP WHERE
( (SALARIO + COMISION) > 40000)
AND (NUMDEP LIKE ‘3_’)
Funciones de columna
SELECT AVG (SALARIO + COMISION)
SUM(SALARIO), COUNT(*) FROM EMP
23888.33
573320.00
24
GROUP BY
SELECT
NUMDEP, AVG(SALARIO + COMISION),
SUM(SALARIO), COUNT(*)
FROM
NUMDEP
D11
D21
E11
E21
EMP GROUP BY NUMDEP
24677.78
25153.33
20998.00
23827.50
222100.00
150920.00
104990.00
95310.00
9
6
5
4
Join de Tablas
SELECT
FROM
WHERE
AND
ID, NOMBRE, DIV
EMP, DEP
PUESTO = ‘VEN’
NUMDEP = NOD
EMP
ID
NOMBRE
10
18
40
90
SAND
BURN
OBRI
ALDA
NUMDEP PUESTO
20
20
84
38
GRTE
VEND
VEND
VEND
ID
18
40
90
NOMBRE
BURN
OBRI
ALDA
DIV
ESTE
CEN
ESTE
DEP
NOD
DIV
20
38
66
84
ESTE
ESTE
OESTE
CEN
INSERT
INSERT INTO EMP
VALUES (15,
(15, ‘ALDA’, 0, ‘VENTAS’, NULL, ‘M’)
‘M’)
ID
NUM
NOMBRE DEP PUESTO SALARIO
SEXO
10
20
15
SAND
PERN
ALDA
M
F
M
20
20
0
GRTE
VEN
VEN
18,357
13,171
-
UPDATE
ID PUESTO NUMDEP
GRTE
20
PRUEBA 10
20
VEN
20
30
GRTE
38
UPDATE PRUEBA
SET PUESTO = ‘EJEC’, NUMDEP = NUMDEP * 2
WHERE PUESTO = ‘GRTE’
ID PUESTO NUMDEP
EJEC
40
PRUEBA 10
20
VEN
20
30
EJEC
76
DELETE
DELETE FROM PRUEBA
WHERE PUESTO = ‘VEN’
ID PUESTO NUMDEP
10
GRTE
20
20
VEN
20
30
GRTE
38
80
OFI
20
90
VEN
38
PRUEBA
ID PUESTO NUMDEP
10
GRTE
20
30
80
GRTE
OFI
38
20
PRUEBA
Vistas (View)
• Una vista es una selección predefinida de datos que
trabaja con una aplicación o con un usuario
• Si bien la vista es usada como una tabla de usuario,
los datos residen en los espacios físicos de las tablas
en que se basa la vista
CREATE VIEW VW1 AS
SELECT
ID, NOMBRE
FROM
EMP
WHERE
NUMDEP = ‘E11’
Vista de una tabla
VW1
EMP
NUMDEP ID NOMBRE PUESTO
CREATE VIEW VW1 AS
SELECT ID, NOMBRE
FROM EMP
WHERE NUMDEP = ‘E11’
C01
E11
K23
30
13
34
KWAN
QUIN
BENS
VEN
OFI
VEN
SELECT *
FROM VW1
E11
C01
K23
29
90
37
PARK
HEND
SMITH
GRTE
VEN
VEN
E11
C01
K23
31
20
17
SETH
DINO
ADAM
VEN
OFI
VEN
Objetivos de las vistas
• Simplifican la codificación
– La definición de vistas califica los requerimientos de usuarios
• Seguridad
– El usuario no tiene acceso a los datos omitidos por la vista
Selección de múltiples líneas
EXEC SQL DECLARE XX
CURSOR FOR
SELECT ID, NOMBRE FROM EMP
WHERE NUMDEP = :D ENDEND-EXEC.
D E11
EXEC SQL OPEN XX
END--EXEC.
END
EXEC SQL FETCH XX INTO :ID, :NM ENDEND-EXEC
EXEC SQL CLOSE XX
END--EXEC.20
END
FETCH
EXEC SQL
FETCH XX
INTO :ID, :NM
END-EXEC.
XX
ID
NOMBRE
030
KWAN
290
PARK
...
...
ID
NM
FETCH
030
KWAN
SEGUNDO FETCH
290
PARK
PRIMER
SQLCA
• SQL Communication area
– El campo de código de estatus da el resultado de la
última ejecución
– Ejemplos
Ejemplos::
000 Ejecución correcta
+100 Inexistente
-530 Llave foránea no válida
BIND
• Comentarios
– Detecta errores utilizando el catálogo de DB
DB2
2
– Desarrolla la estrategia de acceso para cada instrucción
SQL
– Almacena ésta estrategia como PAQUETES/PLANES
reutilizables sin necesidad de repetir BIND
COMMIT
• COMMIT.
COMMIT. Una unidad de trabajo terminada
satisfactoriamente
• Disparado por
– Instrucción Commit (TSO)
– Syncpoint/Checkpoint (IMS,CICS)
– Terminación normal del programa
Protección de Datos (Autorizaciones)
RACF
USERID/PSWD
TSO
CICS
IMS
BATCH
RACF
RACF
VSAM
ACCESO
DB2
CATALOGO
BASE DE
DATOS
DB2
DB
2I Menú de Opciones
===> D (DB2I DEFAULT)
1 SPUFI
2 DCLG
3 PREPARACION DE PROGRAMA
4 PRECOMPILAR
5 BIND / REBIND / FREE
6 RUN
7 COMANDOS DE DB2
8 UTILERIAS
9 CATALOGO VISIBILITY
D DB2I DEFAULTS
X EXIT
Panel de SPUFI
===>
ENTER INPUT DATA SET NAME:
1 DATA SET NAME
====>
... ... ...
... ... ...
ENTER OUTPUT DATA SET NAME:
4 DATA DET NAME
====>
... ... ...
... ... ...
SPECIFY PROCESSING OPTIONS:
5 CHANGE DEFAULTS
====>
6 EDIT INPUT
====>
7 EXECUTE
====>
8 AUTOCOMMIT
====>
9 BROWSE OUTPUT
====>
MIPROG.LIB(SPUFI1)
MIPROG.SPUFISAL
N
Y
Y
Y
Y
ENTER
Proceso de SPUFI
EDIT -- MIPROG-LIB(SPUFI1)
SELECT
ID, NOMBRE
FROM
EMP
WHERE
NUMDEP = 38
(END)
PF3
Panel de SPUFI
===>
EDIT SESSION COMPLETE, ENTER TO CONTINUE
ENTER INPUT DATA SET NAME:
1 DATA SET NAME
===> MIPROG.LIB(SPUFI1)
... ... ...
ENTER OUTPUT DATA SET NAME:
4 DATA SET NAME
===> MIPROG.SPUFISAL
... ... ...
SPECIFY PROCESSING OPTIONS:
5.- CHANGE DEFAULTS
===> N
6.- EDIT INPUT
===> *
7.- EXECUTE
===> Y
8.- AUTOCOMMIT
===> Y
ENTER
9.- BROWSE OUTPUT
===> Y
Consulta de Resultados
BROWSE -- MIPROG.SPUFISAL
SELECT
ID, NOMBRE
FROM
STAFF
WHERE
NUMDEP = 38
ID
NOMBRE
120
NAUGHTON
180
ABRAMS
30
MARENGHI
PF8
Consulta de Resultados
BROWSE -- MIPROG.SPUFISAL
NUMBER OF ROWS DISP IS 3
STMT EXEC SUCCESSFUL,
SQLCODE IS 100
***** BOTTOM OF DATA *****
PF3
DCLGEN
• Generador de declaraciones
CATALOGO
DB2
DCLGEN
AREA DE
TRABAJO
PROGRAMA
APLICATIVO
PRECOMPILADOR
COPY
Panel de DCLGEN
===>
ENTER TABLE NAME:
1 SOURCE TABLE NAME
===> EMP
... ... ...
ENTER DETINATION DATA SET:
2 DATA SET NAME
===> COPYLIB(EMP)
... ... ...
... ... ...
ENTER OPTIONS ARE DESIRED
4 ACTION
===> ADD
ENTER
FIN DE MODULO
Derechos de autor
• Este producto has sido elaborado por
• Jorge Godínez Rodríguez.
• Derechos reservados
– Prohibida su reproducción parcial o total
73
Descargar