CREACION DE UN ESQUEMA EN ORACLE

Page 1

TUTORIAL PARA LA CREACION DE UN ESQUEMA EN ORACLE

Por: Edith Camargo Oyola. 10 de Mayo de 2011. CIMM SENA Regional Sogamoso. Administración de Bases de Datos.

INTRODUCCION Vamos a ver a través de una serie de pasos como crear un esquema en Oracle. Esto será de gran ayuda para personas que ya teniendo los conceptos básicos de bases de datos puedan empezar el desarrollo de sistemas con bases de datos en Oracle. En este tutorial aprenderemos a crear un esquema en Oracle a partir de un ejercicio y siguiendo los siguientes ítems:

1. Planteamiento del caso a desarrollar 1.1 Desarrollo del modelo lógico 1.2 Desarrollo del modelo físico 2. Creación del Usuario para el esquema 2.1 Creación del usuario 2.2 Asignación de privilegios 3. Creación de Tablas 4 Restricciones Primary Key 5. Restricciones Foreign key 6.Restricciones Default 7. Restricciones NOT NULL 8. Restricciones UNIQUE 9. Restricciones Check 10. Asignación de privilegios a usuarios.

1. PLANTEAMIENTO DEL CASO A DESARROLLAR Se desea simular el comportamiento de una universidad cualquiera, atendiendo a la siguiente especificación.


Cada alumno se matricula de una serie de asignaturas en las que obtendrá una calificación. Un alumno puede matricularse de la misma asignatura varias veces y de una asignatura pueden matricularse muchos alumnos. Cada asignatura es impartida por un único profesor y un profesor puede dar clase de muchas asignaturas. Cada profesor pertenece a un departamento. De los alumnos almacenaremos la identificación del alumno, nombres, dirección, teléfono, fecha de nacimiento y estado civil. El estado civil de un alumno puede ser el siguiente: S: Soltero C:Casado V:Viudo P:Separado D:Divorciado.

De las asignaturas se guardara el código, nombre y un campo de observaciones. De cada profesor tendremos una identificación, titulación que posee y nombres. De los departamentos se tiene como datos su código y nombre.

1.1. Desarrollo del modelo lógico Con el caso planteado en el punto anterior empezaremos el desarrollo del modelo lógico. Como introducción a este tema empezaremos definiendo que es un modelo. Modelo: Es una representación de la realidad que contiene las características generales de algo que se va a realizar. En base de datos, esta representación la elaboramos de forma gráfica. Modelos lógico Con este modelo representamos los datos de tal forma como nosotros los captamos en el mundo real. Existen diferentes modelos de este tipo, pero el más utilizado por su sencillez y eficiencia es el modelo Entidad-Relación Modelo Entidad-Relación Denominado por sus siglas como: E-R; Este modelo representa la realidad a través de entidades, que son objetos que existen y que se distinguen de otros por sus características. Las entidades pueden ser de dos tipos: Tangibles: Son todos aquellos objetos físicos que podemos ver, tocar o sentir.


Intangibles: Todos aquellos eventos, objetos conceptuales que no podemos ver, aun sabiendo que existen, por ejemplo: la entidad matricula, sabemos que existe, sin embargo, no la podemos visualizar o tocar. Las características de las entidades en base de datos se llaman atributos, por ejemplo el nombre, dirección teléfono son atributos de la entidad alumno; Codigo, Nombre y Observaciones son atributos de la entidad asignatura. A su vez una entidad se puede asociar o relacionar con más entidades a través de relaciones. Como primer paso identificaremos los objetos o entidades principales son y las características que los identifican. Para nuestro caso planteado quedaría de la siguiente forma: ALUMNO(IdAlumno, Nombre, Fecha_Nacimiento, Estado_Civil) ASIGNATURA(Codigo, Nombre, Observaciones) DEPARTAMENTO(Codigo, Nombre) PROFESOR(IdProfesor,Nombre,Titulo) Ahora identificaremos las relaciones existentes entre entidades. Tendríamos las siguientes: La relación entre Alumno y Asignatura la podemos establecer como: Matricula. La relación entre Departamento y Profesor la podemos establecer como: Pertenece. La relación entre Asignatura y Profesor la podemos establecer como: Dicta. El siguiente paso es describir como se representa un modelo E-R gráficamente, la representación es muy sencilla, se emplean símbolos, los cuales son: Símbolo

Representa


De esta manera nuestro caso quedaría representado de la siguiente forma:

1.2 Desarrollo del Modelo Físico Este tipo de modelo se usa para describir a los datos en el nivel más bajo. Básicamente capturan aspectos de la implementación de los sistemas de base de datos. En este modelo definiremos las entidades con sus respectivos atributos y tipos de datos, las llaves primarias y foráneas. Para nuestro caso el modelo físico quedaría de la siguiente forma:


Vemos que obtenemos una nueva entidad que para nuestro caso llamaremos MATRICULA puesto que se rompe una relación muchos a muchos entre ALUMNO y ASIGNATURA. Esta entidad tiene las llaves primarias de las dos entidades y unos campos propios como: Fecha y nota. 2. CREACION DEL USUARIO PARA EL ESQUEMA Para crear un usuario en Oracle debemos crear primero un TABLESPACE. Recordemos que un tablespace es el archivo donde se almacenarán las tablas y datos de usuario. No es más que un archivo físico donde oracle almacenará esos datos. 2.1 Creación del usuario Seguimos los siguientes pasos: 1. Desde la línea de comandos SQL nos conectamos como usuario SYSDBA SQL>conn / as sysdba

Nota: Recordemos que el usuario sysdba de oracle tiene privilegios para hacer operaciones de "seguridad" como arranque y parada de base de datos.


2. Creamos un tablespace donde almacenaremos nuestro usuario. Cada tablespace se compone de, al menos, un datafile y un datafile solo puede pertenecer a un tablespace. SQL> CREATE TABLESPACE UNIV_DATA DATAFILE 'C:\ORACLEXE\ORADATA\XE\UNIVDATA1.DBF' SIZE 100M; 3. Una vez creado el tablespace creamos un usuario el cual asignaremos a ese tablespace. Un usuario es un nombre de acceso a la base de datos oracle. Normalmente va asociado a una clave (password). SQL> CREATE USER admin IDENTIFIED BY claveuno DEFAULT TABLESPACE UNIV_DATA; DEFAULT TABLESPACE= Asigna a un usuario el tablespace (Para nuestro caso el tablespace creado en el punto anterior UNIV_DATA) para almacenar los objetos que cree. Si no se asigna ninguno, el tablespace por defecto es SYSTEM.

2.2 Asignación de privilegios Para que nuestro usuario admin pueda crear objetos se le deben asignar los privilegios CONNECT y RESOURCE mediante la siguiente sentencia: SQL> grant connect, resource to admin; 3. CREACION DE TABLAS Para empezar a crear nuestras tablas primero nos conectamos con el usuario creado : SQL> CONN admin Introduzca la contrase±a: Conectado. Una vez conectado con el usuario admin empezamos la creación de las tablas agregando únicamente las columnas sin llaves primarias ni foráneas.

CREACION DE LA TABLA ALUMNO: SQL>Create table ALUMNO( IdAlumno VARCHAR2(20) NOT NULL, Nombre VARCHAR2(40) NOT NULL, Fecha_Nacimiento DATE NOT NULL, Estado_Civil VARCHAR2(1) NULL ); Tabla creada.


CREACION DE LA TABLA ASIGNATURA: SQL> CREATE TABLE ASIGNATURA( IdAsignatura VARCHAR2(20) NOT NULL, IdProfesor VARCHAR2(20) NOT NULL, Codigo VARCHAR2(20) NOT NULL Nombre VARCHAR2(20) NOT NULL, Observaciones VARCHAR2(60) NOT NULL, ); Tabla creada.

CREACION DE LA TABLA DEPARTAMENTO: SQL> CREATE TABLE DEPARTAMENTO( Codigo VARCHAR2(20) NOT NULL, Nombre VARCHAR2(40) NOT NULL ); Tabla creada.

CREACION DE LA TABLA PROFESOR: SQL> CREATE TABLE PROFESOR( IdProfesor VARCHAR2(20) NOT NULL, Codigo VARCHAR2(20) NOT NULL Nombre VARCHAR2(40) NOT NULL, Titulo VARCHAR2(40) NOT NULL ); Tabla creada.

CREACION DE LA TABLA MATRICULA:

SQL>CREATE TABLE MATRICULA( Codigo VARCHAR2(20) NOT NULL, IdAlumno VARCHAR2(20) NOT NULL, IdAsignatura VARCHAR2(20) NOT NULL Fecha DATE NOT NULL, Nota NUMBER NOT NULL ); Tabla creada.


4. RESTRICCIONES PRIMARY KEY

Esta restricción se utiliza para definir la clave primaria de una tabla. Una tabla sólo puede tener una restricción PRIMARY KEY y ninguna columna a la que se aplique una restricción PRIMARY KEY puede aceptar valores NULL. Debido a que las restricciones PRIMARY KEY garantizan datos únicos. Vamos a identificar las llaves primarias mediante una tabla de la siguiente forma: Tabla Alumno Asignatura Departamento Profesor Matricula

Primarykey IdAlumno Código Código IdProfesor IdAlumno, IdAsignatura

Ahora si creamos las llaves primarias mediante un alter table para cada tabla. La sintaxis quedaría de la siguiente forma:

TABLA ALUMNO SQL> ALTER TABLE ALUMNO ADD CONSTRAINT PK_ALUMNO PRIMARY KEY(IdAlumno); Tabla modificada.

TABLA ASIGNATURA SQL> ALTER TABLE ASIGNATURA ADD CONSTRAINT PK_ASIGNATURA PRIMARY KEY(IdAsignatura); Tabla modificada.

TABLA DEPARTAMENTO SQL> ALTER TABLE DEPARTAMENTO ADD CONSTRAINT PK_DEPARTAMENTO PRIMARY KEY(Codigo); Tabla modificada.


TABLA PROFESOR SQL> ALTER TABLE PROFESOR ADD CONSTRAINT PK_PROFESOR PRIMARY KEY(IdProfesor); Tabla modificada.

TABLA MATRICULA SQL> ALTER TABLE MATRICULA ADD CONSTRAINT PK_MATRICULA PRIMARY KEY(Codigo); Tabla modificada.

5. RESTRICCIONES FOREIGN KEY Esta restricción se utiliza para definir la relación entre dos tablas. Con la restricción "foreign key" se define un campo (o varios) cuyos valores coinciden con la clave primaria de la misma tabla o de otra, es decir, se define una referencia a un campo con una restricción "primary key" de la misma tabla o de otra. Para entender mejor veamos la siguiente tabla: Tabla Asignatura Profesor Matricula

Foreign Key IdProfesor, Codigo Codigo IdAsignatura, IdAlumno

Tabla Referenciada Profesor, Departamento Departamento Asignatura, Alumno

A Continuación modificamos las tablas para adicionar la llave foránea. La sintaxis quedaría de la siguiente forma:

TABLA ASIGNATURA (FK de la tabla PROFESOR) SQL> ALTER TABLE ASIGNATURA ADD CONSTRAINT FK_ASIGNATURA_PROFESOR FOREIGN KEY(IdProfesor) REFERENCES PROFESOR; Tabla modificada. TABLA ASIGNATURA (FK de la tabla DEPARTAMENTO) SQL> ALTER TABLE ASIGNATURA ADD CONSTRAINT FK_ASIGNATURA_DEPARTAMENTO FOREIGN KEY(Codigo)


REFERENCESDEPARTAMENTO; Tabla modificada.

TABLA PROFESOR (FK de la tabla DEPARTAMENTO) SQL> ALTER TABLE PROFESOR ADD CONSTRAINT FK_PROFESOR_DEPARTAMENTO FOREIGN KEY(Codigo) REFERENCES DEPARTAMENTO; Tabla modificada. TABLA MATRICULA (FK de la tabla ASIGNATURA) SQL> ALTER TABLE MATRICULA ADD CONSTRAINT FK_MATRICULA_ASIGNATURA FOREIGN KEY(IdAsignatura) REFERENCES ASIGNATURA; Tabla modificada. TABLA MATRICULA (FK de la tabla ALUMNO) SQL> ALTER TABLE MATRICULA ADD CONSTRAINT FK_MATRICULA_ALUMNO FOREIGN KEY(IdAlumno) REFERENCES ALUMNO; Tabla modificada.

6. RESTRICCIONES DEFAULT Cuando no especificamos el valor de una columna lo toma por defecto. Le proporcionamos a una columna un valor por defecto cuando el valor de la columna no se especifica en la cláusula INSERT. Vamos a asignar un valor por defecto para el campo Estado civil en la tabla ALUMNO donde tome el valor por defecto= ‘S’(Soltero). La sintaxis quedaría de la siguiente forma:

SQL> ALTER TABLE ALUMNO MODIFY(ESTADO_CIVIL DEFAULT 'S'); Tabla modificada.


7. RESTRICCIONES NOT NULL Esta restricción es de gran importancia para definir la nulidad de las columnas en una tabla. En la tabla ALUMNO vamos a cambiar el campo Estado Civil para que no acepte valores nulos. La sintaxis para realizar esto sería la siguiente:

SQL> ALTER TABLE ALUMNO MODIFY (Estado_Civil NOT NULL); Tabla modificada.

Si deseamos insertar un alumno tendríamos que ingresar datos para todas las columnas. De lo contario obtendríamos el siguiente error el cual indica que no se pueden insertar valores nulos en la columna Estado Civil de la tabla ALUMNO:

SQL> INSERT INTO ALUMNO VALUES( '1023','ADRIANA LOPEZ','08/05/1985',NULL); '1023','ADRIANA LOPEZ','08/05/1985',NULL) ERROR en lÝnea 2: ORA-01400: no se puede realizar una inserci¾n NULL en ("ADMIN"."ALUMNO"."ESTADO_CIVIL") 8. RESTRICCIONES UNIQUE El tipo de restricción UNIQUE se utiliza para garantizar que no se escriben valores duplicados en columnas específicas que no forman parte de una clave principal. Vamos a hacer una restricción para el campo Nombre en la tabla ALUMNO para que nunca se repita el mismo nombre. SQL> ALTER TABLE ALUMNO ADD CONSTRAINT U_ALUMNO_NOMBRE UNIQUE(NOMBRE); Tabla modificada. Vamos a insertar datos para probar esta restricción: SQL> INSERT INTO ALUMNO VALUES(1023,'ADRIANA LOPEZ', '12/05/1980','D'); 1 fila creada.


Si intentamos insertar nuevamente datos con el mismo nombre obtenemos un error que indica la violación del constraint UNIQUE del campo Nombre en la tabla ALUMNO. SQL> INSERT INTO ALUMNO VALUES(1025,'ADRIANA LOPEZ', '12/05/1980','D'); INSERT INTO ALUMNO * ERROR en lÝnea 1: ORA-00001: restricci¾n ·nica (ADMIN.U_ALUMNO_NOMBRE) violada 9. RESTRICCION CHECK Esta restricción permite establecer condiciones para los valores que acepta una columna. Una nota no puede ser menor de 0. La sintaxis quedaris de la siguiente forma: SQL> ALTER TABLE MATRICULA ADD CONSTRAINT CK_MATRICULA_NOTA CHECK (NOTA>0); Tabla modificada. Si intentamos ingresar unvalor para el campo nota<=0 nos muestra error puesto que se está violando la regla de validación. SQL> INSERT INTO MATRICULA VALUES('528','22/01/2010','0','1023','369'); INSERT INTO MATRICULA * ERROR en lÝnea 1: ORA-02290: restricci¾n de control (ADMIN.CK_MATRICULA_NOTA) violada

10. ASIGNACION DE PRIVILEGIOS A USUARIOS Podemos asignarle a cada usuario diferentes privilegios de acuerdo a sus funciones. Para nuestero caso le asignaremos el privilegio de seleccionar los datos de la tabla ALUMNO a nuestro usuario UNI. SQL> GRANT SELECT ON ALUMNO TO UNI; Concesi¾n terminada correctamente.

Ahora nos conectamos con el usuario UNI e intentamos hacer una selección de los datos en la tabla ALUMNO para comprobar la asignación del privilegio.


SQL> conn UNI/clavedos Conectado.

SQL> select * from alumno; IDALUMNO NOMBRE FECHA_NA E -------------------- ---------------------------------------- -------- 1023 ADRIANA LOPEZ 12/05/80 D

Hemos llegado al final de este tutorial espero haya servido de ayuda y si tienen alguna duda pueden escribirme a edith.camargo@gmail.com


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.