Sunteți pe pagina 1din 10

Unidades Tecnolgicas de Santander.

Ingeniera en Telecomunicaciones. Docente: Ingeniero Rogerio Orlando Beltrn Castro.

PRCTICA 2 (Base de Datos Relacional ORACLE)


OBJETIVO Creacin de un Script a partir del Modelo de Entidad Relacin Tipos de datos en Oracle Los tipos de datos soportados por Oracle se agrupan en los siguientes conjuntos. Los valores alfanumricos van encerrados entre comilla simple: 'Alfanumrico' Los valores numricos son nmero simples: 123 Las fechas van encerradas entre comillas simples: '1/12/2000' Los valores binarios no pueden ser representados (son fotos, videos) Tipo de dato CHAR(b) Almacena cadenas de caracteres de longitud fija, desde 1 a 2.000 bytes de ocupacin. El nmero de caracteres que se pueden almacenar se rige segn la siguiente frmula. n caracteres = bytes / character set Para ASCII, el conjunto de caracteres ocupa un byte, por lo que coincide el nmero de caracteres mximos con la ocupacin del tipo de dato. Si se introduce un valor de 10 caracteres en un campo de CHAR(100), se rellenar con espacios las 90 posiciones restantes. As la siguiente expresin es cierta: 'Hola pepe' = 'Hola pepe '

Si se intenta introducir un valor demasiado grande para el campo, se intentar eliminar los espacios finales, y si cabe sin espacios, se introduce. Si an as no cabe, se retorna un error. Tipo de dato VARCHAR2(b) Almacena cadenas de caracteres de longitud variable. Si se define una columna de longitud 100 bytes, y se introduce en ella un valor de 10 bytes, la columna ocupar 10 y no 100 como haca con el tipo de dato CHAR. Tipo de dato VARCHAR(b) En Oracle8 es equivalente a VARCHAR2, en futuras versiones permitir distintos criterios de comparacin. Tipo de dato NCHAR(b) Almacena un valor alfanumrico de longitud fija con posibilidad de cambio de juego de caracteres. Puede almacenar tanto caracteres ASCII, EBCDIC, UNICODE Tipo de dato NVARCHAR2(b) Almacena un valor alfanumrico de longitud variable con posibilidad de cambio de juego de caracteres. Puede almacenar tanto caracteres ASCII, EBCDIC, UNICODE

Prctica 02, Base de Datos Relacional UTS.

Unidades Tecnolgicas de Santander.


Ingeniera en Telecomunicaciones. Docente: Ingeniero Rogerio Orlando Beltrn Castro. Tipo de dato NUMBER(p,s) Almacena valores numricos en punto flotante que pueden ir desde 1.0 x 10-130 hasta 9.9(38 nueves) 9 x 10125 . El almacenamiento interno de los valores numricos en notacin cientfica: Mantisa x 10exponente La mantisa puede contener cualquier nmero, entero o decimal, positivo o negativo. El exponente podr contener cualquier nmero entero, positivo o negativo. El parmetro p indica la precisin (nmero de dgitos contando los decimales) que contendr el nmero como mximo. Oracle garantiza los datos con precisiones de 1 a 38. El parmetro s indica la escala, esto es, el mximo de dgitos decimales. Hay que tener en cuenta que una columna definida NUMBER(10,5), podr contener como mximo cualquier nmero siempre y cuando el nmero de dgitos enteros ms el nmero de dgitos decimales no supere 10 (y no 15). La escala puede ir de -84 a 127. Para definir nmero enteros, se puede omitir el parmetro s o bien poner un 0 en su lugar. Se puede especificar una escala negativa, esto lo que hace es redondear el nmero indicado a las posiciones indicadas en la escala. Por ejemplo un nmero definido como NUMBER(5,-2), redondear siempre a centenas. As si intentamos introducir el valor 1355, en realidad se almacenar 1400. Tipo de dato FLOAT(b) Almacena un nmero en punto decimal sin restriccin de dgitos decimales. El parmetro b indica la precisin binaria mxima que puede moverse en el rango 1 a 126. Si se emite el defecto ser 126. Una columna FLOAT(126) es equivalente a una columna NUMBER(38), aunque la diferencia est en que la columna NUMBER no podr contener decimales y la columna FLOAT si y en con cualquier escala. Tipo de dato DATE Almacena un valor de fecha y hora. Para un tipo de dato DATE, Oracle almacena internamente los siguiente datos: 1. Siglo 2. Ao 3. Mes 4. Da 5. Hora 6. Minuto 7. Segundo El formato por defecto de las fechas es: 'DD-MON-YYYY' Esto es: Dos dgitos para el da. Las tres primeras siglas del ao (depende del idioma instalado). Cuatro dgitos para el ao. Por ejemplo: '1-JAN-2001' '2-DEC-1943'

Prctica 02, Base de Datos Relacional UTS.

Unidades Tecnolgicas de Santander.


Ingeniera en Telecomunicaciones. Docente: Ingeniero Rogerio Orlando Beltrn Castro. Este formato puede ser alterado en cualquier momento. Internamente un fecha se almacena como el nmero de das desde cierto punto de inicio (por ejemplo el ao 0). Esto permite que las fechas puedan ser tratadas en operaciones aritmticas normales: '1-JAN-2001' + 10 '1-JAN-2000' - 1 = '11-JAN-2001' = '31-DEC-1999'

'10-MAY-2000' - '1-MAY-2000' = 9

Tipos de datos binarios Permiten almacenar informacin en formato "crudo", valores binarios tal y como se almacenan en el disco duro o como residen en memoria. Estas columnas se pueden utilizar tanto para almacenar grandes cantidades de datos (hasta 4Gb.), como para almacenar directamente cualquier tipo de fichero (ejecutables, sonidos, videos, fotos, documentos Word, DLLs) o para transportar datos de una base de datos a otra, ya que el formato binario es el nico formato comn entre cualquier sistema informtico. Tipo de dato LONG Almacena caracteres de longitud variable hasta 2 Gb. Este tipo de dato se soporta para compatibilidad con versiones anteriores. En Oracle8 y siguientes versiones de debe usar los tipos de datos CLOB y NLOB para almacenar grandes cantidades de datos alfanumricos. Tipo de dato ROWID Representa una direccin de la base de datos, ocupada por una nica fila. El ROWID de una fila es un identificador nico para una fila dentro de una base de datos. No hay dos filas con el mismo ROWID. Este tipo de dato sirve para guardar punteros a filas concretas. Normas para pasar el diagrama E-R a tablas: 1. Las Entidades pasan a formar tablas directamente. 2. Las relaciones (Asociaciones) tienen el siguiente tratamiento: 3. Si el grado de asociacin es mayor de dos, esa asociacin pasa a formar una entidad con los identificadores de cada entidad involucrada y los atributos propios de la asociacin. A(a1,a2,) B(b1,b2,) C(c1,c2,. RABC(a1,b1,c1,x,y,)

4. Para asociaciones de grado dos: Relaciones Muchos a Muchos: Este tipo de relaciones tambin origina una tabla intermedia con los identificadores de las entidades de la relacin Relacin Uno a Muchos: En la tabla de los hijos se debe agregar el indicador (llave) del padre y los atributos de la asociacin. Relaciones Uno a Uno:

Prctica 02, Base de Datos Relacional UTS.

Unidades Tecnolgicas de Santander.


Ingeniera en Telecomunicaciones. Docente: Ingeniero Rogerio Orlando Beltrn Castro. A cualquiera de las dos se agrega el indicador del otro (Normalmente al de menor cardinalidad) 5. Si existe una entidad dbil, debe agregarse el identificador completo del padre. 6. Cada entidad en una generalizacin pasa a formar una tabla y hereda la llave de la entidad genrica. Se debe empezar por la entidad a la cual le llegan la relacin a uno La entidad que le llega la relacin a muchos (de una relacin 1:N) tiene la llave fornea. En una relacin N:M se crea una tabla intermedia formada por las llaves primarias de las entidades de donde viene la relacin, y ests a su vez formaran la llave primaria de la nueva entidad. Adems sera llave fornea de la relacin.

Para ayudarnos a realizar dicha conversin utilizaremos el siguiente formato: Nombre de la Tabla: Nombre de Columna Tipo de Llave (pk,fk) Columna Tipo de Nulo/Uni Tabla co referenci referenci Dato a a (nn,uk) Tamao Mximo Ejempl

Nombre de la Tabla Nombre de la columna: Tipo de Llave :

El mismo de la entidad El mismo del atributo pk: Llave primaria fk: Llave secundaria

Nulo/nico

nn: Atributos obligatorios uk: Atributos nicos

Tabla y Columna Referencia: Se utiliza la tabla y el campo con la cual se estableci la relacin.

Prctica 02, Base de Datos Relacional UTS.

Unidades Tecnolgicas de Santander.


Ingeniera en Telecomunicaciones. Docente: Ingeniero Rogerio Orlando Beltrn Castro. CREATE TABLE Crea una tabla en base de datos. La sintaxis bsica es: CREATE TABLE nombre_tabla( COLUMNA COLUMNA ... {CONSTRAINT nombre_clave_primaria PRIMARY KEY (columnas_clave)} {CONSTRAINT nombre_clave_fornea FOREIGN KEY(columnas_clave) REFERENCES tabla_detalle( columnas_clave ) {ON DELETE CASCADE} } ) {TABLESPACE tablespace_de_creacin} {STORAGE( INITIAL XX{K|M} NEXT XX{K|M} )} TIPO TIPO [NOT NULL], [NOT NULL],

La creacin de la tabla FACTURA sera la siguiente: CREATE TABLE FACTURA( REFERENCIA VARCHAR2(10) DESCRIPCION VARCHAR2(50), C_PAIS NUMBER(3), C_CLIENTE IMPORTE NUMBER(5), NUMBER(12), NOT NULL,

CONSTRAINT PK_FACTURA PRIMARY KEY( REFERENCIA ) CONSTRAINT FK_CLIENTE(C_PAIS,C_CLIENTE) REFERENCES CLIENTE( C_PAIS, C_CLIENTE) ON DELETE CASCADE); Los campos que van a formar parte de la clave se tienen que definir como NOT NULL ya que no tiene sentido que stas columnas carezcan de valor. Adems se crea la clave primaria y la clave fornea que hace referencia a CLIENTE (como ya dijimos en el apartado de claves forneas). Con la clusula ON DELETE CASCADE hacemos que si se borra un cliente, se borren automticamente todas sus facturas. Si no la incluysemos, al borrar el cliente, nos dara el siguiente error: ORA-02292: integrity constraint (FK_CLIENTE) violated - child record found

Hay que tener en cuenta que aunque la clave fornea se crea sobre la tabla FACTURA, tambin acta cuando se hacen operaciones sobre CLIENTE.

Al intentar insertar una factura a un cliente inexistente nos dar el siguiente error: ORA-02291: integrity constraint (FK_CLIENTE) violated - parent key not found

Prctica 02, Base de Datos Relacional UTS.

Unidades Tecnolgicas de Santander.


Ingeniera en Telecomunicaciones. Docente: Ingeniero Rogerio Orlando Beltrn Castro. Taller Realizar el script del siguiente modelo de datos

1. Se define el orden en que se realiza el script, es el mismo como se debe de construir la base de datos, se empiece desde las tablas que no tenga ninguna relacin hasta las tablas que tenga la mayor cantidad de relaciones. a. b. c. d. e. f. g. Ciudad Clasificacin Artculo Cliente Cnyuge. Factura Factura_Articulo

Prctica 02, Base de Datos Relacional UTS.

Unidades Tecnolgicas de Santander.


Ingeniera en Telecomunicaciones. Docente: Ingeniero Rogerio Orlando Beltrn Castro. 2. Se define con la ayuda de la tabla los campos, su tipo y sus caractersticas. Tabla Nombre de Columna Cdigo Nombre. Tabla Nombre de Columna Cdigo Nombre. Tabla Nombre de Columna PLU Barras. Nombre. Clasificacin Costo Venta IVA. Tabla Nombre de Columna Cdula. PK Nombre. Direccin. Telfono. Celular. Lugar Fecha Tabla Nombre de Columna Cdula Nombre. CIUDAD Nulo/Unico Tabla Columna Tipo de (nn,uk) referencia referencia Dato nn.uk nn Nmerico Cadena

Tipo de Llave (pk,fk) PK

Tamao Ejemplo Mximo 1 30 Tamao Ejemplo Mximo 1 30 Tamao Ejemplo Mximo 1 15 770777124567890 30 ARROZ 1 200 300 16 Tamao Ejemplo Mximo 91475632 PEDRO DIAZ CALLE 15 # 12 56 63603245 3002112453 1 31/06/1980

Tipo de Llave (pk,fk) PK

CLASIFICACION Nulo/Unico Tabla Columna Tipo de (nn,uk) referencia referencia Dato nn.uk nn Nmerico Cadena

Tipo de Llave (pk,fk) PK

ARTICULO Nulo/Unico Tabla Columna Tipo de (nn,uk) referencia referencia Dato nn.uk nn nn nn nn nn nn Nmerico Cadena Cadena Nmerico Nmerico Nmerico Nmerico

FK

Clasificacion Codigo

Tipo de Llave (pk,fk) PK

CLIENTE Nulo/Unico Tabla Columna Tipo de (nn,uk) referencia referencia Dato nn.uk nn nn nn Nmerico Cadena Cadena Cadena Cadena Nmerico Fecha

15 30 20 20

FK

nn nn

Ciudad

Codigo

Tipo de Llave (pk,fk) PK

CONYUGE Nulo/Unico Tabla Columna Tipo de (nn,uk) referencia referencia Dato nn.uk nn nn Ciudad nn Cliente Codigo Cdula Nmerico Cadena Cadena Cadena Cadena Nmerico

Tamao Ejemplo Mximo 63456120 MARIA DELGADO CALLE 15 # 12 56 63603245 3002331452 91475632

15 30 20 20

Celular. Lugar FK Fecha Cdula_Cliente FK

Prctica 02, Base de Datos Relacional UTS.

Unidades Tecnolgicas de Santander.


Ingeniera en Telecomunicaciones. Docente: Ingeniero Rogerio Orlando Beltrn Castro.

Tabla Nombre de Columna Nmero. Fecha. Base. IVA. Total. Tabla Nombre de Columna Numero PLU Cantidad. Costo. Venta. IVA. Total.

Tipo de Llave (pk,fk) PK

FACTURA Nulo/Unico Tabla Columna Tipo de (nn,uk) referencia referencia Dato nn.uk nn nn nn nn Nmerico Fecha Nmerico Nmerico Nmerico

Tamao Ejemplo Mximo 1 01/01/2007 1000 160 1160 Tamao Ejemplo Mximo 1 1 5 200 232 160 1160

Tipo de Llave (pk,fk) PK,FK PK,FK

FACTURA_ARTICULO Nulo/Unico Tabla Columna Tipo de (nn,uk) referencia referencia Dato nn,uk nn,uk nn nn nn nn nn FACTURA ARTICULO NUMERO PLU Nmerico Nmerico Nmerico Nmerico Nmerico Nmerico Nmerico

3. Se construye el script de datos. Create Table Ciudad ( Codigo Flota not null, Nombre Not Null, Constraint PK_Ciudad Primary Key (Codigo)); Create Table Clasificacion ( Codigo Flota not null, Nombre Not Null, Constraint PK_Clasificacion Primary Key (Codigo)); Create Table Articulo ( PLU Float not null, Barras Varchar2(15) not null, Nombre Varchar2(30) not null. Clasificacin Flota not null, Costo Float not null, Venta Float not null, IVA Float not null, Constraint PK_Articulo Primary Key (PLU), Constraint FK_ClasificacionArticulo Foreign Key (Clasificacion) references Clasificacion(Codigo)); Create Table Cliente ( Cdula Float not null, Nombre Varchar2(30) not null, Direccin Varchar2(30) not null, Telfono Varchar2(20) not null, Celular Varchar2(30), Lugar Float,

Prctica 02, Base de Datos Relacional UTS.

Unidades Tecnolgicas de Santander.


Ingeniera en Telecomunicaciones. Docente: Ingeniero Rogerio Orlando Beltrn Castro. Fecha Date, Constraint PK_Cliente Primary Key (PLU), Constraint FK_LugarCliente Foreign Key (Lugar) references Lugar(Codigo)); Create Table Conyuge ( Cdula Float not null, Nombre Varchar2(30) not null, Celular Varchar2(30), Lugar Float, Fecha Date, Cedula_Cliente Float not null, Constraint PK_Conyuge Primary Key (PLU), Constraint FK_LugarConyuge Foreign Key (Lugar) references Lugar(Codigo), Constraint FK_ClienteConyuge Foreign Key (Cedula_Cliente) references Cliente(Cedula) ); Create Table Factura ( Numero Float not null, Fecha Date not null, Base Float not null, IVA Float not null, Total Float not null, Constraint PK_Factura Primary Key (Numero) ); Create Table Factura_Articulo ( Numero Float not null, PLU Float not null, Cantidad Float not null, Costo Float not null, Venta Float not null, IVA Float not null, Total Float not null, Constraint PK_FacturaArticulo Primary Key (Numero,PLU), Constraint FK_Factura_FacturaArticulo Foreign Key (Numero) references Factura(Numero), Constraint FK_Articulo_FacturaArticulo Foreign Key (PLU) references Cliente(PLU) );

Prctica 02, Base de Datos Relacional UTS.

Unidades Tecnolgicas de Santander.


Ingeniera en Telecomunicaciones. Docente: Ingeniero Rogerio Orlando Beltrn Castro. Taller Prctico 1. Realizar el modelo entidad relacin 2. Realizar el script.

La cadena de Video-Clubs Glob-Gusters ha decidido, para mejorar su servicio, emplear una base de datos para almacenar la informacin referente a las pelculas que ofrece en alquiler. Esta informacin es la siguiente:

Una pelcula se caracteriza por su ttulo, nacionalidad, productora y fecha (p.e., Quo Vadis, Estados Unidos, M.G.M., 1955). En una pelcula pueden participar varios actores (nombre, nacionalidad, sexo) algunos de ellos como actores principales. Una pelcula est dirigida por un director (nombre, nacionalidad). De cada pelcula se dispone de uno o varios ejemplares diferenciados por un nmero de ejemplar y caracterizados por su estado de conservacin. Un ejemplar se puede encontrar alquilado a algn cliente (DNI, nombre, direccin, telfono).
Se desea almacenar la fecha de comienzo del alquiler y la de devolucin.

Un socio tiene que ser avalado por otro socio que responda de l en caso detener problemas en el
alquiler.

Prctica 02, Base de Datos Relacional UTS.

10

S-ar putea să vă placă și