Otros Objetos de Esquemas Z051 Cap 12

1,480 views

Published on

describe el uso de secuencias, vistas e indices para oracle database 11g

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,480
On SlideShare
0
From Embeds
0
Number of Embeds
198
Actions
Shares
0
Downloads
60
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Otros Objetos de Esquemas Z051 Cap 12

  1. 1. Otros objetos de Esquemas<br />Oracle Database 11g Cap 12<br />Sql Fundamentals I<br />Alexander Calderón Peraza<br />www.BasesdeDatosUes.Blogspot.<br />com<br />
  2. 2. Vista<br />Para un usuario, una vista es lo mismo que una tabla.<br />Las instrucciones DML no funcionan sobre una vista.<br />VENTAJAS<br />Seguridad<br />Simpleza<br />Prevencion de errores<br />Facilidad de datos<br />Rendimiento<br />
  3. 3. Mejorando la Seguridad<br />Observe la tabla HR.employees, contiene informacion delicada, sin embargo el depto de finanzas puede requerir alguna informacion, para ello:<br />CREATE VIEW hr.emp_fin AS selecthire_date, job_id, salary, commission_pct, department_idfromhr.employees;<br />
  4. 4. Simpleza<br />Se vuelve mas sencillo consultar una vista ya elaborada, que codificar nuestro SQL<br />CREATE VIEW dept_sal as selectd.department_name, sum(e.salary) fromdepartments d leftouterjoinemployees e ond.department_id=e.department_idgroupbydepartment_name;<br />Select * fromdept_sal;<br />
  5. 5. Prevenir Errores<br />Dado que las vistas no son actualizables, al brindar acceso a las mismas garantizamos la protección sobre los datos reales.<br />Facilidad de datos<br />La información en las tablas esta normalizada, por lo que dificulta la lectura y entendimiento de la misma.<br />
  6. 6. Creando vistas<br />CREATE [OR REPLACE] VIEW<br />[Schema.]VistaNombre<br />AS<br />Subconsulta<br />
  7. 7. Ejercicio<br />Createviewemp_anon_v as selecthire_date, job_id, salary, commission_pct, department_id, fromemployees;<br />Createviewdept_anon_v as selectdepartment_id, department_name, location_idfromdepartments;<br />Createviewdept_emp as selectdepartment_name, last_namefromdepartmentsjoinemployeesusing (department_id);<br />Select * fromdept_empwheredepartment_name=‘Marketing’;<br />
  8. 8. Sinónimo<br />Un sinónimo es un nombre alternativo para un objeto.<br />Select * fromhr.employees@orcl;<br />Createpublicsynonymempforhr.employees@orcl;<br />Entonces cualquier usuario podra ejecutar: select * fromemp;<br />
  9. 9. CREATE [PUBLIC] SYNONYM Nombre FOR objeto;<br />Los sinonimos privados son objetos de esquemas.<br />Los sinonimospublicos existen independientes del esquema.<br />Oracle primero busca en los objetos del esquema local, y luego si no encuentra lo busca en los sinonimospublicos.<br />DROP [public] synonym Nombre;<br />
  10. 10. SECUENCIA<br />Es una estructura para generar valores enteros únicos.<br />Son de gran utilidad para crear valores de llaves primarias.<br />
  11. 11. Sintaxis<br />Indica el incremento para la generación del siguiente numero<br />Máximo valor que puede tomar la secuencia en ascenso antes de generar un error o reiniciar conteo<br />CREATE SEQUENCE NombreSecuencia<br />[INCREMENT BY numero]<br />[START WITH numero]<br />[MAXVALUE numero | NONMAXVALUE]<br />[MINVALUE numero | NOMINVALUE]<br />[CYCLE | NOCYCLE ]<br />[CACHE number | NOCACHE]<br />[ORDER | NOORDER];<br />Controla el comportamiento de MAXVALUE y MINVALUE, por defecto mostrara un error, pero si CYCLE es especificado reiniciara la secuencia<br />Valor inicial de la secuencia, por defecto 1<br />Por rendimiento oracle genera un cache de la secuencia de 20 para los siguientes valores<br />Solo para uso en CLUSTER, order obliga a todas las instancias del cluster a coordinar el incremento en la secuencia<br />
  12. 12. Utilizando secuencias<br />Cada sesión selecciona su propio valor con NEXTVAL (columna ficticia de la secuencia)<br />Nextval es globalmente unico, para cada sesion se genera uno diferente.<br />CURRVAL es constante para una sesion, hasta que se selecciona NEXTVAL nuevamente.<br />No se puede invocar CURRVAL hasta despues de haber invocado NEXTVAL<br />
  13. 13. Ejemplo<br />Createsequenceorder_seqstartwith 10;<br />Createsequenceline_seqstartwith 10;<br />Insertintoorders(order_number, order_date, customer_number) values(order_seq.nextval, sysdate,‘1000’);<br />Insertintoorder_line(order_number, line_number, item_number, quantity) values (order_seq.currval, line_seq.nextval,’A111’, 1);<br />Commit;<br />
  14. 14. Índices<br />Los indices tienen dos funciones, para implementar llaves primarias y unicas, y para proveer rendimiento.<br />Llaves foraneas se implementan por medio de indices, pero los indices existen en la tabla padre.<br />Los indices se crean automaticamente.<br />Si no se posee un indice, se realizara un FULL TABLE SCAN.<br />
  15. 15. Tipos de Indices<br />B*Tree.<br />Es el tipo usado por defecto<br />B es por Balance<br />El nodo principal de 3 puntos a muchos nodos en el segundo nivel<br />El puntero a una fila es el ROWID<br />Bitmap<br />Son poco utilizados, pues soportan baja cardinalidad.<br />

×