1. Oracle Database 11g
Administrator I
Cap. 9 Administrando Objetos de
Esquemas
Universidad de El Salvador
calderonperza@gmail.com
http://BasesDeDatosUES.blogspot.com
2. Usuario y esquema
• USUARIO => ESQUEMA
• El usuario SYS es el dueño del diccionario de datos.
3. Objetos de esquema
tablas COMPARTEN EL MISMO
NAMESPACE
• Vistas
NameSpace: define un
Secuencias mismo grupo de objetos
SCHEMA.OBJETO
• Sinónimos
Procedimientos
• Funciones
Paquetes
4. Otros objetos
• INDEX
• CONSTRAINTS
• CLUSTERS
• TRIGGERS
• DATABASE LINK
• Ellos cuando se crean se contruyen en namespace propio.
• Si bien es posible que un indice para una tabla se llame igual
que la tabla, tal situacion no es una practica adecuada.
5. TIPOS DE DATOS
• Un tipo de dato es un atributo de una parte de los datos que
indica algo sobre la clase de datos sobre los que se va a
procesar.
• Esto incluye imponer restricciones en los datos, como qué
valores pueden tomar y qué operaciones se pueden realizar.
6. Tipos de dato alfanuméricos
• VARCHAR2
• NVARCHAR2
• Igual varchar2 pero permite caracteres unicode
• CHAR
7. Tipos de datos numéricos
• NUMBER
• FLOAT es la versión ANSI de number
• INTEGER, equivale a number con cero decimales.
8. Tipos de datos para fechas
• DATE
• siglo, año, mes, día, hora, minutos y segundos.
• TIMESTAMP
• Igual a date pero una precisión de 9 decimales en los segundos
• TIMESTAMP WITH TIMEZONE
• Interval Year to Month
• Interval Day to Second
9. Tipos de datos para objetos
grandes
• CLOB
• Tamaño prácticamente ilimitado de caracteres
• NCLOB
• BLOB
• Similar a Clob pero con datos binarios
• BFILE
• Puntero a un archivo almacenado en el SO
• LONG
• Obsoleto, sustituido por CLOB
10. CREANDO TABLAS
• Create table ex_emp as select * from employees
where 1=2;
• Alter table ex_emp drop column email;
• Alter table ex_emp drop column phone_number;
• Alter table ex_emp add(fire_date date);
• Drop table ex_emp;
• Create table ex_emp (employee_id number(6),
first_name varchar2(200));
11. CONSTRAINTS
• Sirven para aplicar reglas de negocio a los datos, garantizando
la integridad del modelo relacional.
• TIPOS:
• UNIQUE
• NOT NULL
• PRIMARY KEY
• FOREING KEY
• CHECK
12. UNIQUE CONSTRAINTS
• Determina que un conjunto de columnas no puedan tener
valores repetidos.
• Sin embargo un Unique permite que se pueda almacenar
VALORES NULOS.
• Se asocia con llaves candidatas
• Ejemplo: el campo DNI o DUI, dentro de una tabla Alumno
donde la llave primaria es el carnet, el DUI es una llave Unique
debido a que no debe ser repetido pero estudiantes menores
de 18 anos no tienen aun DUI.
13. NOT NULL
• Obliga a que todos los valores de una columna sean
introducidos.
• Dicho de otra manera, no se permite que en dicha columna se
deje una tupla con ese valor como NULL
14. PRIMARY KEY
• Sirve para identificar una tupla de forma unica.
• La implementacion de una llave primaria es la
combinacion de un UNIQUE y un NOT NULL
constraint.
• Se recomienda que no existan ninguna tabla sin
llave primaria.
15. FOREIGN KEY
• Es definida en la tabla hija, de una relacion
padre e hijo
• Determina una serie de columnas, cuyos
valores se deben corresponder con los de
la tabla padre.
• Las columnas pueden llamarse distinto,
pero deben poseer el mismo tipo de datos.
16. Llaves Foráneas
• Si bien se permite colocar valores nulos
dentro de los campos de llave foráneas,
NO se recomienda pues ello puede
ocasionar tuplas huérfanas.
• Se aplican restricciones de integridad
referencias, relacionando eventos de
Eliminación y Actualización en el lado del
padre
• ON DELETE CASCADE
17. CHECK CONSTRAINTS
• Aplican reglas sencillas a un campo en una
tabla.
• Ejemplo: un campo sexo en la tabla
alumno, el campo es CHAR(1) y posee un
check que restringe sus valores a M o F
20. 1. deptno number(2,0) constraint emp_deptno_fk
references dept(deptno)
2. on delete set null,
3. email varchar2(30) constraint emp_email_uk unique,
4. constraint emp_hiredate_ck check (hiredate >= dob +
365*16),
5. constraint emp_email_ck
6. check ((instr(email,'@') > 0) and (instr(email,'.') > 0)));
21. Índices
• Los indices tienen dos funciones, para implementar
llaves primarias y unicas, y para proveer rendimiento.
• Llaves foraneas se implementan por medio de indices,
pero los indices existen en la tabla padre.
• Los indices se crean automaticamente.
• Si no se posee un indice, se realizara un FULL TABLE
SCAN.
• Son de vital importancia para la clausula WHERE de SQL
22. Tipos de Indices
• B*Tree.
• Es el tipo usado por defecto
• B es por Balance
• El nodo principal de 3 puntos a muchos nodos en el segundo nivel
• El puntero a una fila es el ROWID
• Bitmap
• Son poco utilizados, pues soportan baja cardinalidad.
23. OPCIONES DE INDICES
• UNIQUE: este no permite valores duplicados en el indice.
• REVERSE: realiza una indexacion al reves ej: «JUAN» «NAUJ»
• COMPOSITE: es construido por dos o mas columnas
• COMPRESSED
24. Creacion de indices
• CREATE [UNIQUE | BITMAP ] INDEX NombreIndice ON
NombreTabla (Columna1, columna2) ;
• Por defecto se crea el indice non-unique, no-compressed, no-
reverse del tipo B-Tree.
25. TABLAS TEMPORALES
• Una tabla temporal tiene una estructura que es visible a
todas las sesiones, pero las tuplas son privadas, y vistas solo
por la sesion que las inserta.
• CREATE GLOBAL TEMPORARY TABLE TablaTemporal
(Columna1 DATATYPE, Columna2 DATATYPE) [ON COMMIT
{DELETE | PRESERVE} ROWS];
26. Vista
• Para un usuario, una vista es lo mismo que una tabla.
• Las instrucciones DML no funcionan sobre una vista.
• VENTAJAS
• Seguridad
• Simpleza
• Prevencion de errores
• Facilidad de datos
• Rendimiento
27. Mejorando la Seguridad
• Observe la tabla HR.employees, contiene informacion
delicada, sin embargo el depto de finanzas puede requerir
alguna informacion, para ello:
• CREATE VIEW hr.emp_fin AS select hire_date, job_id, salary,
commission_pct, department_id from hr.employees;
28. Simpleza
• Se vuelve mas sencillo consultar una vista ya elaborada, que
codificar nuestro SQL
• CREATE VIEW dept_sal as select d.department_name,
sum(e.salary) from departments d left outer join employees e
on d.department_id=e.department_id group by
department_name;
• Select * from dept_sal;
29. Prevenir Errores
• Dado que las vistas no son actualizables, al brindar
acceso a las mismas garantizamos la protección sobre los
datos reales.
Facilidad de datos
• La información en las tablas esta normalizada, por lo
que dificulta la lectura y entendimiento de la
misma.
31. SECUENCIA
• Es una estructura para generar valores enteros únicos.
• Son de gran utilidad para crear valores de llaves primarias.
32. Sintaxis
• CREATE SEQUENCE NombreSecuencia Máximo lael incremento
Indica
para valor que
generación
• [INCREMENT BY numero] puede siguiente
del tomar la
secuencia en ascenso
numero
• [START WITH numero] antes de generar un
error o reiniciar conteo
• Valor inicial de la
[MAXVALUE numero | NONMAXVALUE] por defecto 1
Controla el
secuencia,
• [MINVALUE numero | NOMINVALUE] comportamiento de
MAXVALUE y
Por rendimiento oracle
• [CYCLE | NOCYCLE ] MINVALUE, por defecto
genera un cache de la
secuencia de 20 parapero
mostrara un error, los
• [CACHE number | NOCACHE] si CYCLE es
siguientes valores
especificado reiniciara
• [ORDER | NOORDER]; la secuencia
Solo para uso en CLUSTER, order
obliga a todas las instancias del
cluster a coordinar el incremento
en la secuencia
33. Utilizando secuencias
• Cada sesión selecciona su propio valor con NEXTVAL (columna
ficticia de la secuencia)
• Nextval es globalmente unico, para cada sesion se genera uno
diferente.
• CURRVAL es constante para una sesion, hasta que se
selecciona NEXTVAL nuevamente.
• No se puede invocar CURRVAL hasta despues de haber
invocado NEXTVAL
34. Ejemplo
• Create sequence order_seq start with 10;
• Create sequence line_seq start with 10;
• Insert into orders(order_number, order_date,
customer_number) values(order_seq.nextval, sysdate,‘1000’);
• Insert into order_line(order_number, line_number,
item_number, quantity) values (order_seq.currval,
line_seq.nextval,’A111’, 1);
• Commit;