Guia 08 A

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 16

U N I V E R S I D A D D E E L S A LVA D O R

FA C U LTA D D E I N G E N I E R I A Y A R Q U I T E C T U R A Ciclo

ESCUELA DE INGENIE RI A DE SISTEMAS


I
I N F O R M AT I C O S

Base de Datos BAD115


Catedráticos: Ing. Elmer Arturo Carballo Ruiz MSc.
Ing. César Augusto González Rodríguez MAF.

Guía de Laboratorio #8a


Restricciones (Constraints)
Contenido
Conceptos Básicos. .................................................................................................................... 1
Desarrollo. ................................................................................................................................ 3
Creación de un Esquema de Base de Datos ............................................................................. 3
Creación del Usuario para el Esquema .................................................................................... 5
Creación de Tablas................................................................................................................. 5
Restricción Primary Key (PK)................................................................................................... 7
Restricción Foreign Key (FK) ................................................................................................... 8
Restricción Default (Valores por Defecto)................................................................................ 9
Restricción NOT NULL (Nulidad de una Columna) ...................................................................10
Restricción Unique (Valores Únicos).......................................................................................11
Restricción Check (Reglas de Validación) ................................................................................13
Asignar Privilegios a Usuarios ................................................................................................14
Universidad de El Salvador BAD-115 Guía de Laboratorio #8

Conceptos Básicos.
Transacciones
Una transacción es un grupo de acciones que hacen transformaciones consistentes en
las tablas preservando la consistencia de la base de datos. Una base de datos está en un
estado consistente si obedece todas las restricciones de integridad definidas sobre ella.
Los cambios de estado ocurren debido a actualizaciones, inserciones, y eliminaciones de
información. Por supuesto, se quiere asegurar que la base de datos nunca entre en un
estado de inconsistencia. Sin embargo, durante la ejecución de una transacción, la base
de datos puede estar temporalmente en un estado inconsistente. El punto importante aquí
es asegurar que la base de datos regresa a un estado consistente al fin de la ejecución de
una transacción.

Lo que se persigue con el manejo de transacciones es por un lado tener una


transparencia adecuada de las acciones concurrentes a una base de datos y por otro lado
tener una transparencia adecuada en el manejo de las fallas que se pueden presentar en
una base de datos.

Propiedades de una Transacción

Una transacción debe tener las propiedades ACID, que son las iniciales en inglés de las
siguientes características: Atomicity, Consistency, Isolation, Durability.

Atomicidad

Una transacción constituye una unidad atómica de ejecución y se ejecuta exactamente


una vez; o se realiza todo el trabajo o nada de él en absoluto.

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto González Rodríguez MAF
Ciclo II-2012
1
Universidad de El Salvador BAD-115 Guía de Laboratorio #8

Coherencia

Una transacción mantiene la coherencia de los datos, transformando un estado coherente


de datos en otro estado coherente de datos. Los datos enlazados por una transacción
deben conservarse semánticamente.

Aislamiento

Una transacción es una unidad de aislamiento y cada una se produce aislada e


independientemente de las transacciones concurrentes. Una transacción nunca debe ver
las fases intermedias de otra transacción.

Durabilidad

Una transacción es una unidad de recuperación. Si una transacción tiene éxito, sus
actualizaciones persisten, aun cuando falle el equipo o se apague. Si una transacción no
tiene éxito, el sistema permanece en el estado anterior antes de la transacción.

Operación de Transacciones

El siguiente gráfico ilustra el funcionamiento de una transacción, cuando es confirmada y


cuando es cancelada.

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto González Rodríguez MAF
Ciclo II-2012
2
Universidad de El Salvador BAD-115 Guía de Laboratorio #8

Inicio de una transacción

El inicio de una transacción es de manera automática cuando ejecutamos una sentencia


insert, update, ó delete. La ejecución de cualquiera de estas sentencias da inicio a una
transacción. Las instrucciones que se ejecuten a continuación formaran parte de la misma
transacción.

Confirmación de una transacción

Para confirmar los cambios realizados durante una transacción utilizamos la sentencia
commit.

Cancelar una transacción

Para cancelar los cambios realizados durante una transacción utilizamos la sentencia
rollback.

Desarrollo.
Las Guías Versión Oracle(de la 8 a la 11) han sido creadas para ejecutarse
con la herramienta SQL Plus que tiene Oracle, si Ud. utiliza otra
herramienta, haga caso omiso de los números de línea en los
comandos.

Creación de un Esquema de Base de Datos

Caso a Desarrollar
El siguiente modelo trata de una empresa que ofrece cursos de extensión, los
participantes tienen la libertad de matricularse sin ninguna restricción, y pueden tener
facilidades de pago.

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto González Rodríguez MAF
Ciclo II-2012
3
Universidad de El Salvador BAD-115 Guía de Laboratorio #8

Modelo Lógico

Modelo Físico

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto González Rodríguez MAF
Ciclo II-2012
4
Universidad de El Salvador BAD-115 Guía de Laboratorio #8

Creación del Usuario para el Esquema


Creación del Usuario

Script 8.1

SQL> conn / as sysdba

Connected.

SQL> create user egcc

2 identified by admin;

User created.

Asignar Privilegios

Asignaremos privilegios al usuario egcc a través del los roles connect y resource, los
cuales le otorgan los privilegios necesarios para que pueda crear sus objetos.

Script 8.2

SQL> grant connect, resource to egcc;

Grant succeeded.

Ahora ya podemos ingresar como usuario egcc y crear los objetos que corresponden a su
esquema.

Creación de Tablas

Sintaxis

Create Table NombreTabl a(

Columna1 Tipo1 [ NULL | NOT NULL ],

Columna2 Tipo2 [ NULL | NOT NULL ],

Columna2 Tipo2 [ NULL | NOT NULL ],

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto González Rodríguez MAF
Ciclo II-2012
5
Universidad de El Salvador BAD-115 Guía de Laboratorio #8

. ..

. ..

);

Tabla Curso

Script 8.3

SQL> connect egcc/admin

Connected.

SQL> CREATE TABLE Curso (

2 IdCurso CHAR(4) NOT NULL,

3 NomCurso VARCHAR2(40) NOT NULL,

4 Vacantes NUMB ER(2) NOT NULL,

5 Matriculados NUMB ER(2) NOT NULL,

6 Profesor VARCHAR2(40) NULL,

7 PreCurso NUMB ER(8,2) NOT NULL

8 );

Table created.

Tabla Alumno

Escriba el script para crear la tabla Alumno.

Tabla Matricula

Escriba el script para crear la tabla Matricula.

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto González Rodríguez MAF
Ciclo II-2012
6
Universidad de El Salvador BAD-115 Guía de Laboratorio #8

Tabla Pago

Escriba el script para crear la tabla Pago.

Restricción Primary Key (PK)

La restricción Primary Key se utiliza para definir la clave primaria de una tabla, en el siguiente cuadro se
especifica la(s) columna(s) que conforman la PK de cada tabla.

Tabla Primary Key

Curso Incurso

Alumno IdAlumno

Sintaxis Matricula IdCurso, IdAlumno

Alter Table Pago IdCurso, IdAlumno, Cuota NombreTabla

Add Constraint PK_NombreTabla

Primary Key ( Columna1, Columna2, . . . );

Tabla Curso

Script 8.4

SQL> Alter Table Curso

2 Add Constraint PK_Curso

3 Primary Key ( IdCurso );

Table altered.

Tabla Alumno

Escriba el script para crear la PK de la tabla Alumno.

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto González Rodríguez MAF
Ciclo II-2012
7
Universidad de El Salvador BAD-115 Guía de Laboratorio #8

Tabla Matricula

Escriba el script para crear la PK de la tabla Matricula.

Tabla Pago

Escriba el script para crear la PK de la tabla Pago.

Restricción Foreign Key (FK)


La restricción Foreign Key se utiliza para definir la relación entre dos tablas, en el
siguiente cuadro se especifica la(s) columna(s) que conforman la FK de cada tabla.

Tabla Foreign Key Tabla Referenciada

IdCurso Curso

Matricula
IdAlumno Alumno

IdCurso, IdAlumno Matricula


Pago

Sintaxis

Alter Table NombreTabla

Add Constraint FK_NombreTabla_TablaReferenciada

Foreign Key ( Columna1, Columna2, . . . )

References TablaReferenciada;

Es necesario que en la tabla referenciada esté definida la PK, por que la relación se crea
entre la PK de la tabla referenciada y las columnas que indicamos en la cláusula Foreign
Key.

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto González Rodríguez MAF
Ciclo II-2012
8
Universidad de El Salvador BAD-115 Guía de Laboratorio #8

Tabla Matricula

1ra FK

La primera FK de esta tabla es IdCurso y la tabla referenciada es Curso, el script para


crear esta FK es el siguiente:

Script 8.5

SQL> Alter table Matricula

2 Add Constraint FK_Matricula_Curso

3 Foreign Key ( IdCurso )

4 References Curso;

Table altered.

2da FK

La segunda FK de esta tabla es IdAlumno y la tabla referenciada es Alumno, escriba


usted el script para crear ésta FK.

Tabla Pago

Esta tabla solo tiene una FK y esta compuesta por dos columnas: IdCurso e IdAlumno, y
la tabla referenciada es Matricula, escriba usted el script para crear ésta FK.

Restricción Default (Valores por Defecto)


El Valor por Defecto es el que toma una columna cuando no especificamos su valor en
una sentencia insert.

Sintaxis

Alter Table NombreTabla

Modify ( NombreColumna Default Expresión );

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto González Rodríguez MAF
Ciclo II-2012
9
Universidad de El Salvador BAD-115 Guía de Laboratorio #8

Ejemplo

El número de vacantes por defecto para cualquier curso debe ser 20.

Script 8. 6

SQL> Alter Table Curso

2 Modify ( Vacantes default 20 );

Table altered.

Para probar el default insertemos un registro en la tabla curso.

Script 8. 7

IDCU NO MCURSO VACANTES MATRICULADO S PRO FESOR PRECURSO

C001 O racle 9i - Nivel Inicial 20 10 Gustavo Coronel 350

Restricción NOT NULL (Nulidad de una Columna)


Es muy importante determinar la nulidad de una columna, y es muy importe para el
desarrollador tener esta información a la mano cuando crea las aplicaciones.

Sintaxis

Alter Table NombreTabla

Modify ( NombreColumna [NOT] NULL );

Ejemplo

En la tabla alumno, la columna Telefono no debe aceptar valores nulos.

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto González Rodríguez MAF
Ciclo II-2012
10
Universidad de El Salvador BAD-115 Guía de Laboratorio #8

Script 8. 8

SQL> Alter Table Alumno

2 Modify ( Telefono NOT NULL );

Table altered.

SQL> describe alumno

Name Null? Type

IDALUMNO NOT NULL NUMB ER(5)

NOMALUMNO NOT NULL VARCHAR2(40)

DIRECCIÓN NOT NULL VARCHAR2(40)

TELEFONO NOT NULL VARCHAR2(15)

Si queremos insertar un alumno tendríamos que ingresar datos para todas las columnas.

Script 8. 9

SQL> insert into alumno

2 values(10001, 'Ricardo Marcelo', 'Ingeniería', NULL);

insert into alumno

ERROR at line 1:

ORA-01400: cannot insert NULL into ("EGCC"."ALUMNO"."TELEFONO")

El mensaje de error claramente nos indica que no se puede insertar valores nulos en la
columna TELEFONO, de la tabla ALUMNO, que se encuentra en el esquema EGCC.

Restricción Unique (Valores Únicos)


En muchos casos debemos garantizar que los valores de una columna ó conjunto de
columnas de una tabla acepten solo valores únicos.

Sintaxis

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto González Rodríguez MAF
Ciclo II-2012
11
Universidad de El Salvador BAD-115 Guía de Laboratorio #8

Alter Constraint NombreTabl a

Add Constraint U_NombreTabla_NombreColumna

Unique ( Columna1, Columna2, . . . );

Ejemplo

No puede haber dos alumnos con nombres iguales.

Script 8.10

SQL> Alter Table alumno

2 Add Constraint U_Alumno_NomAlumno

3 Unique (NomAlumno);

Table altered.

Para probar la restricción insertemos datos.

Script 8.11

SQL> Insert Into Alumno

2 Values( 10001, 'Sergio Matsukawa', 'San Miguel', '456-3456' );

1 row created.

SQL> Insert Into Alumno

2 Values( 10002, 'Sergio Matsukawa', 'Los Olivos', '521-3456' );

Insert Into Alumno

ERROR at line 1:

ORA-00001: unique constraint (EGCC.U_ALUMNO_ NOMALUMNO) violated

El mensaje de error del segundo insert nos indica que esta violando el constraint de tipo
unique de nombre U_ALUMNO_NOMALUMNO en el esquema EGCC.

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto González Rodríguez MAF
Ciclo II-2012
12
Universidad de El Salvador BAD-115 Guía de Laboratorio #8

Restricción Check (Reglas de Validación)


Las reglas de validación son muy importantes por que permiten establecer una condición
a los valores que debe aceptar una columna.

Sintaxis

Alter Table NombreTabla

Add Constraint CK_NombreTable_NombreColumna

Check ( Condición );

Ejemplo

El precio de un curso no puede ser cero, ni menor que cero.

Script 8.12

SQL> Alter Table Curso

2 Add Constraint CK_Curso_PreCurso

3 Check ( PreCurso > 0 );

Table altered.

Probemos el constraint ingresando datos.

Script 8.13

SQL> Insert Into Curso

2 Values( 'C002', 'Asp.NET', 20, 7, 'Ricardo Marcelo', -400.00 );

Insert Into Curso

ERROR at line 1:

ORA-02290: check constraint (EGCC.CK_CURSO_PRECURSO) violated

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto González Rodríguez MAF
Ciclo II-2012
13
Universidad de El Salvador BAD-115 Guía de Laboratorio #8

Al intentar ingresar un curso con precio negativo, inmediatamente nos muestra el mensaje
de error indicándonos que se está violando la regla de validación.

Asignar Privilegios a Usuarios


Si queremos que otros usuarios puedan operar los objetos de un esquema, debemos
darle los privilegios adecuadamente.

Sintaxis

Grant Privilegio On Objeto To Usuario;

Ejemplo

Por ejemplo, el usuario scott necesita consultar la tabla curso.

Script 8.14

SQL> Grant Select On Curso To Scott;

Grant succeeded.

Ahora hagamos la prueba respectiva.

Script 8.15

SQL> connect scott/tiger

Connected.

SQL> select * from egcc.curso;

IDCU NOMCURS O VACANTES MATRICULADOS PROFES OR PRECURS O

C001 Oracle 9i - Nivel Inicial 20 10 Gustavo Coronel 350

Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto González Rodríguez MAF
Ciclo II-2012
14

También podría gustarte