Objetos de Esquema de Oracle Database Z052-09

Alexander Calderón
Alexander CalderónDocente del Departamento de Ingenieria. Area Informatica
Oracle Database 11g
 Administrator I
  Cap. 9 Administrando Objetos de
  Esquemas
Universidad de El Salvador
calderonperza@gmail.com
http://BasesDeDatosUES.blogspot.com
Usuario y esquema
• USUARIO => ESQUEMA

• El usuario SYS es el dueño del diccionario de datos.
Objetos de esquema
tablas           COMPARTEN EL MISMO
                     NAMESPACE
• Vistas
                 NameSpace: define un
Secuencias       mismo grupo de objetos
                    SCHEMA.OBJETO
• Sinónimos

Procedimientos
• Funciones

Paquetes
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.
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.
Tipos de dato alfanuméricos
• VARCHAR2

• NVARCHAR2
  • Igual varchar2 pero permite caracteres unicode

• CHAR
Tipos de datos numéricos
• NUMBER

• FLOAT es la versión ANSI de number

• INTEGER, equivale a number con cero decimales.
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
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
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));
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
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.
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
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.
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.
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
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
DEPT
Deptno: number(2,0)
Dname: varchar2(20)

                                 EMP
                      Empno: number(4,0)
                      Ename: varchar2(20)
                      Mgr: number(4,0)
                      Dob: date
                      Hiredate: date
                      Deptono: number(2,0)
                      Email: varchar2(30)
1.   create table dept(
2.   deptno number(2,0) constraint dept_deptno_pk primary key
3.   constraint dept_deptno_ck check (deptno between 10 and 90),
4.   dname varchar2(20) constraint dept_dname_nn not null);

5.  create table emp(
6.   empno number(4,0) constraint emp_empno_pk primary key,
7.   ename varchar2(20) constraint emp_ename_nn not null,
8.   mgr number (4,0) constraint emp_mgr_fk references emp
    (empno),
9. dob date,
10. hiredate date,
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)));
Í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
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.
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
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.
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];
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
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;
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;
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.
Creando vistas
•   CREATE [OR REPLACE] VIEW
•   [Schema.]VistaNombre
•   AS
•   Subconsulta
SECUENCIA
• Es una estructura para generar valores enteros únicos.
• Son de gran utilidad para crear valores de llaves primarias.
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
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
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;
1 de 34

Más contenido relacionado

La actualidad más candente

Unix shell scripting basicsUnix shell scripting basics
Unix shell scripting basicsManav Prasad
738 vistas70 diapositivas
Introduction to shellIntroduction to shell
Introduction to shellArash Haghighat
256 vistas17 diapositivas
WSL ReloadedWSL Reloaded
WSL ReloadedAnthony LAOU-HINE TSUEI
3.5K vistas46 diapositivas
Hands on ansibleHands on ansible
Hands on ansiblesumit23kumar
1.3K vistas97 diapositivas

La actualidad más candente(20)

Unix shell scripting basicsUnix shell scripting basics
Unix shell scripting basics
Manav Prasad738 vistas
Introduction to shellIntroduction to shell
Introduction to shell
Arash Haghighat256 vistas
WSL ReloadedWSL Reloaded
WSL Reloaded
Anthony LAOU-HINE TSUEI3.5K vistas
Guia e-instalacion-de-windows-server-2008-paso-a-pasoGuia e-instalacion-de-windows-server-2008-paso-a-paso
Guia e-instalacion-de-windows-server-2008-paso-a-paso
Iestp Instituto Superior 1.6K vistas
Webinar Oracle GoldenGate Webinar Oracle GoldenGate
Webinar Oracle GoldenGate
avanttic Consultoría Tecnológica1.5K vistas
Hands on ansibleHands on ansible
Hands on ansible
sumit23kumar1.3K vistas
Valgrind debugger TutorialValgrind debugger Tutorial
Valgrind debugger Tutorial
Anurag Tomar1K vistas
Logical Volume Manager. An IntroductionLogical Volume Manager. An Introduction
Logical Volume Manager. An Introduction
Juan A. Suárez Romero4.6K vistas
NetBeansNetBeans
NetBeans
1da42.8K vistas
Introduction to docker and docker composeIntroduction to docker and docker compose
Introduction to docker and docker compose
Lalatendu Mohanty2.8K vistas
LINUX DISTRIBUTIONS.pptxLINUX DISTRIBUTIONS.pptx
LINUX DISTRIBUTIONS.pptx
rahul355835118 vistas
Docker Compose by Aanand Prasad Docker Compose by Aanand Prasad
Docker Compose by Aanand Prasad
Docker, Inc.33.4K vistas
Awx user guideAwx user guide
Awx user guide
mspirko4.8K vistas
Terraform introductionTerraform introduction
Terraform introduction
Jason Vance753 vistas
Kubernetes and PrometheusKubernetes and Prometheus
Kubernetes and Prometheus
Weaveworks9.5K vistas
Linux LVM Logical Volume ManagementLinux LVM Logical Volume Management
Linux LVM Logical Volume Management
Manolis Kartsonakis1.1K vistas
Linux container, namespaces & CGroup. Linux container, namespaces & CGroup.
Linux container, namespaces & CGroup.
Neeraj Shrimali896 vistas
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel Source
Motaz Saad7K vistas

Destacado(20)

diseño eléctrico de data centersdiseño eléctrico de data centers
diseño eléctrico de data centers
Alexander Calderón676 vistas
Introduccion general a las bases de datosIntroduccion general a las bases de datos
Introduccion general a las bases de datos
Alexander Calderón1.1K vistas
Creando una base de datos Oracle Z052 04Creando una base de datos Oracle Z052 04
Creando una base de datos Oracle Z052 04
Alexander Calderón1.8K vistas
Entity Framework y Cluster en MysqlEntity Framework y Cluster en Mysql
Entity Framework y Cluster en Mysql
Arturo Salinas1.5K vistas
Otros Objetos de Esquemas Z051 Cap 12Otros Objetos de Esquemas Z051 Cap 12
Otros Objetos de Esquemas Z051 Cap 12
Alexander Calderón736 vistas
Mapa conceptual informaticaMapa conceptual informatica
Mapa conceptual informatica
Jorge Molina Trujillo369 vistas
sub Consultas Oracle SQLsub Consultas Oracle SQL
sub Consultas Oracle SQL
Alexander Calderón8.3K vistas
Dinámicas de gruposDinámicas de grupos
Dinámicas de grupos
Mardema368 vistas
Mapa conceptual- informaticaMapa conceptual- informatica
Mapa conceptual- informatica
carcalah3.7K vistas
Utilizando DDL SQL oracle Z051 Cap 11Utilizando DDL SQL oracle Z051 Cap 11
Utilizando DDL SQL oracle Z051 Cap 11
Alexander Calderón1.5K vistas
Mapa conceptual de datos en informática Mapa conceptual de datos en informática
Mapa conceptual de datos en informática
Enrique Bravo Guevara2.2K vistas

Similar a Objetos de Esquema de Oracle Database Z052-09

SentenciasSentencias
SentenciasJohannaLopez102476
1 vista84 diapositivas
Trabajo grupal - Base de DatosTrabajo grupal - Base de Datos
Trabajo grupal - Base de DatosMIROSLAVY
194 vistas7 diapositivas
Introduccion al sql queryIntroduccion al sql query
Introduccion al sql queryAlexys González
1.7K vistas15 diapositivas

Similar a Objetos de Esquema de Oracle Database Z052-09(20)

SentenciasSentencias
Sentencias
JohannaLopez1024761 vista
Trabajo grupal - Base de DatosTrabajo grupal - Base de Datos
Trabajo grupal - Base de Datos
MIROSLAVY194 vistas
Introduccion al sql queryIntroduccion al sql query
Introduccion al sql query
Alexys González1.7K vistas
Lecc01Lecc01
Lecc01
Macarena Jamett92 vistas
MysqlMysql
Mysql
Learn Pure Insanity452 vistas
Postgres triggerPostgres trigger
Postgres trigger
Andres Ortega580 vistas
Wenas wenasWenas wenas
Wenas wenas
tallarinxD325 vistas
Sesión 4Sesión 4
Sesión 4
Michael Andrés Calderón Ferreira450 vistas
velarde-Aransazu-presentaciondeunDBMS.pptxvelarde-Aransazu-presentaciondeunDBMS.pptx
velarde-Aransazu-presentaciondeunDBMS.pptx
AransaVelardeVelarde21 vistas
Fundamentos sqlFundamentos sql
Fundamentos sql
Kelly Rafael O486 vistas
SQLSQL
SQL
josecuartas264 vistas
Tutorial sql serverTutorial sql server
Tutorial sql server
Yessenia Giraldo302 vistas
Consultas en sql básicoConsultas en sql básico
Consultas en sql básico
Cristian Salazar C.44.5K vistas
05 Sql Profundizacion05 Sql Profundizacion
05 Sql Profundizacion
Kudos S.A.S2.2K vistas
PlPl
Pl
Verónica Marca Matias316 vistas
Base de datos - Clase 2Base de datos - Clase 2
Base de datos - Clase 2
Luis Miguel De Bello178 vistas
Command oracleCommand oracle
Command oracle
dnrdeleon1.1K vistas

Más de Alexander Calderón(15)

Funciones de AgregacionFunciones de Agregacion
Funciones de Agregacion
Alexander Calderón2K vistas
Estrategias de NegocioEstrategias de Negocio
Estrategias de Negocio
Alexander Calderón1.2K vistas
Evaluacion de proyectos con enfoque socialEvaluacion de proyectos con enfoque social
Evaluacion de proyectos con enfoque social
Alexander Calderón1.1K vistas
Methods and approachesd Methods and approachesd
Methods and approachesd
Alexander Calderón3K vistas
Introduccion ISO 27001 SGSIIntroduccion ISO 27001 SGSI
Introduccion ISO 27001 SGSI
Alexander Calderón9.7K vistas
Introduccion a la Arquitectura de Oracle. Z052 02Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02
Alexander Calderón3.8K vistas
Manipulacion de Datos SQL cap10Manipulacion de Datos SQL cap10
Manipulacion de Datos SQL cap10
Alexander Calderón2.2K vistas
Cap 7. oracle SQL fundamentalsCap 7. oracle SQL fundamentals
Cap 7. oracle SQL fundamentals
Alexander Calderón2.3K vistas
Restricciones y Ordenacion en SQL con OracleRestricciones y Ordenacion en SQL con Oracle
Restricciones y Ordenacion en SQL con Oracle
Alexander Calderón2.5K vistas
Fundamentos de SELECT SQLFundamentos de SELECT SQL
Fundamentos de SELECT SQL
Alexander Calderón2.8K vistas
Documento Unico EstudiantilDocumento Unico Estudiantil
Documento Unico Estudiantil
Alexander Calderón900 vistas
2. Teoria Del Cambio2. Teoria Del Cambio
2. Teoria Del Cambio
Alexander Calderón19.5K vistas

Último(20)

Semana 3.pdfSemana 3.pdf
Semana 3.pdf
ValdezsalvadorMayleM53 vistas
Tema 3-El átomo.pptxTema 3-El átomo.pptx
Tema 3-El átomo.pptx
fatimasilvacabral147 vistas
Carta-Elfo-Llegada.pdfCarta-Elfo-Llegada.pdf
Carta-Elfo-Llegada.pdf
IsabelCalvoMartinez127 vistas
semana 2 .pdfsemana 2 .pdf
semana 2 .pdf
ValdezsalvadorMayleM40 vistas
PRUEBAS LIBRES CC2 Y 3.pdfPRUEBAS LIBRES CC2 Y 3.pdf
PRUEBAS LIBRES CC2 Y 3.pdf
itedaepanavalvillard47 vistas
La  Función de Tutoría   TOE1   Ccesa007.pdfLa  Función de Tutoría   TOE1   Ccesa007.pdf
La Función de Tutoría TOE1 Ccesa007.pdf
Demetrio Ccesa Rayme324 vistas
Gestion del Talento Humano  GTH1 Ccesa007.pdfGestion del Talento Humano  GTH1 Ccesa007.pdf
Gestion del Talento Humano GTH1 Ccesa007.pdf
Demetrio Ccesa Rayme24 vistas
Misión en favor de los necesitados.pdfMisión en favor de los necesitados.pdf
Misión en favor de los necesitados.pdf
Alejandrino Halire Ccahuana56 vistas
Contenidos y PDA 2° Grado.docxContenidos y PDA 2° Grado.docx
Contenidos y PDA 2° Grado.docx
Norberto Millán Muñoz48 vistas
Estrategias y Recursos en el Aula  Ccesa.pdfEstrategias y Recursos en el Aula  Ccesa.pdf
Estrategias y Recursos en el Aula Ccesa.pdf
Demetrio Ccesa Rayme226 vistas
Tema 7. Riesgos internos (1a parte).pdfTema 7. Riesgos internos (1a parte).pdf
Tema 7. Riesgos internos (1a parte).pdf
IES Vicent Andres Estelles48 vistas
Contenidos y PDA 1°.docxContenidos y PDA 1°.docx
Contenidos y PDA 1°.docx
Norberto Millán Muñoz47 vistas
Contenidos y PDA 6° Grado.docxContenidos y PDA 6° Grado.docx
Contenidos y PDA 6° Grado.docx
Norberto Millán Muñoz39 vistas
CONVERSACIONES SAN ESTEBAN 23-24CONVERSACIONES SAN ESTEBAN 23-24
CONVERSACIONES SAN ESTEBAN 23-24
San Esteban Comunicación Dominicos de Salamanca119 vistas
Recreos musicales.pdfRecreos musicales.pdf
Recreos musicales.pdf
arribaletur108 vistas

Objetos de Esquema de Oracle Database Z052-09

  • 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
  • 18. DEPT Deptno: number(2,0) Dname: varchar2(20) EMP Empno: number(4,0) Ename: varchar2(20) Mgr: number(4,0) Dob: date Hiredate: date Deptono: number(2,0) Email: varchar2(30)
  • 19. 1. create table dept( 2. deptno number(2,0) constraint dept_deptno_pk primary key 3. constraint dept_deptno_ck check (deptno between 10 and 90), 4. dname varchar2(20) constraint dept_dname_nn not null); 5. create table emp( 6. empno number(4,0) constraint emp_empno_pk primary key, 7. ename varchar2(20) constraint emp_ename_nn not null, 8. mgr number (4,0) constraint emp_mgr_fk references emp (empno), 9. dob date, 10. hiredate date,
  • 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.
  • 30. Creando vistas • CREATE [OR REPLACE] VIEW • [Schema.]VistaNombre • AS • Subconsulta
  • 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;