SQL> -- Creacion de tipos: SQL> SQL> DROP TYPE cuidador_t FORCE; Tipo borrado. SQL> DROP TYPE conj_animales_t FORCE; Tipo borrado. SQL> DROP TYPE animal_t FORCE; Tipo borrado. SQL> DROP TYPE especie_t FORCE; Tipo borrado. SQL> SQL> SQL> CREATE TYPE especie_t AS OBJECT( 2 especie_id VARCHAR2(15), 3 nombreComun VARCHAR2(50), 4 clase VARCHAR2(25), 5 orden VARCHAR2(25), 6 descEspecie SYS.XMLType 7 ) 8 / Tipo creado. SQL> SQL> CREATE TYPE animal_t AS OBJECT( 2 animal_id VARCHAR2(15), 3 nombre VARCHAR2(50), 4 sexo VARCHAR2(15), 5 cod_especie REF especie_t, 6 descripcion SYS.XMLType 7 ) 8 / Tipo creado. SQL> SQL> CREATE TYPE conj_animales_t AS TABLE OF REF animal_t 2 / Tipo creado. SQL> SQL> CREATE TYPE cuidador_t AS OBJECT( 2 dni VARCHAR2(15), 3 nombre VARCHAR2(50), 4 telefono VARCHAR2(12), 5 animales conj_animales_t 6 ) 7 / Tipo creado. SQL> -- Creacion de tablas: SQL> SQL> DELETE FROM especies_tab; DELETE FROM especies_tab * ERROR en línea 1: ORA-04063: table "IX52AL063346.ESPECIES_TAB" tiene errores SQL> DROP TABLE especies_tab; Tabla borrada. SQL> SQL> CREATE TABLE especies_tab OF especie_t 2 (PRIMARY KEY(especie_id)); Tabla creada. SQL> SQL> SQL> DELETE FROM animales_tab; DELETE FROM animales_tab * ERROR en línea 1: ORA-04063: table "IX52AL063346.ANIMALES_TAB" tiene errores SQL> DROP TABLE animales_tab; Tabla borrada. SQL> SQL> CREATE TABLE animales_tab OF animal_t 2 (PRIMARY KEY(animal_id), 3 SCOPE FOR (cod_especie) IS especies_tab); Tabla creada. SQL> SQL> SQL> DELETE FROM cuidadores_tab; DELETE FROM cuidadores_tab * ERROR en línea 1: ORA-04063: table "IX52AL063346.CUIDADORES_TAB" tiene errores SQL> DROP TABLE cuidadores_tab; Tabla borrada. SQL> SQL> CREATE TABLE cuidadores_tab OF cuidador_t 2 (PRIMARY KEY(dni)) 3 NESTED TABLE animales STORE AS conj_animales_tab 4 (); Tabla creada. SQL> SQL> ALTER TABLE conj_animales_tab ADD 2 (SCOPE FOR (COLUMN_VALUE) IS animales_tab); Tabla modificada. SQL> SQL> -- Insercion de datos: SQL> SQL> -- Tabla ESPECIES_TAB SQL> SQL> INSERT INTO especies_tab (especie_id, nombreComun, clase, orden, descEspecie) 2 VALUES ('esp00', 'Leopardo', 'Mamíferos', 'Carnívoros', sys.XMLType.createXML(' 3 4 Leopardo 5 Animal 6 Cordados 7 Vertebrados 8 Mamiferos 9 Carnivoros 10 Felinos 11 Panthera pardus 12 La hembra pare una camada que oscila entre 1 y 6 cachorros, aunque lo normal son 2 o 3 13 Terrestre 14 Consumidor terciario 15 16 17 Actualmente es una especie amenazada y en serio peligro, ya que estos animales mueren debido a que son cazados para conseguir sus pieles o utilizarlos como trofeos en senyal de poder. Se encuentra en el apendice I de la CITES 18 19 20 Es una especie que esta sujeta a proteccion especial por un tiempo determinado. Solo cuando esta en periodo reproductivo, no es permitida su caza 21 22 23 ') 24 ); 1 fila creada. SQL> SQL> INSERT INTO especies_tab (especie_id, nombreComun, clase, orden, descEspecie) 2 VALUES ('esp01', 'Gallina', 'Aves', 'Galliformes', sys.XMLType.createXML(' 3 4 Gallina 5 Animal 6 Cordados 7 Vertebrados 8 Aves 9 Galliformes 10 Aves 11 Gallus gallus 12 Cada cierto tiempo las gallinas se ponen cluecas, es decir, dejan de poner y muestran una gran propensión a sentarse sobre sus nidos para incubar los huevos. Después de unas semanas (21 dÃas) salen de 10 a 12 pollos, los cuales pueden echar a correr de inmediato y son capaces de alimentarse por sà mismos. 13 Terrestre 14 Consumidor terciario 15 16 17 Cresta (carúncula) roja y dentada, caÃda a un lado ; pico córneo, corto, fuerte y cónico; los ojos muy vivos, con tres párpados: uno superior, otro inferior y otro transversal y transparente que protege al ojo. El cuerpo es fuerte y pesado; está recubierto de abundantes plumas. Tiene cuatro extremidades: dos alas y dos patas. Las alas están poco desarrolladas, por esto la gallina vuela muy poco. Las patas están recubiertas de escamas y tienen cuatro dedos (tres de ellos dirigidos hacia adelante y uno hacia atrás). 18 19 20 ') 21 ); 1 fila creada. SQL> SQL> INSERT INTO especies_tab (especie_id, nombreComun, clase, orden, descEspecie) 2 VALUES ('esp02', 'Oso panda', 'Mamiferos', 'Carnivoros', sys.XMLType.createXML(' 3 4 Oso panda 5 Animal 6 Cordado 7 Vertebrados 8 Mamiferos 9 Carnivoros 10 Ursidae 11 Ailuropoda melanoleuca 12 Una o dos crÃas minúsculas, ciegas y desvalidas 13 Terrestre 14 Consumidor terciario 15 16 17 Es un carnÃvoro, de color blanco y negro 18 19 20 Le han usurpado el nombre al pequeño panda, que en principio se llamó oso gato, pero que ahora se conoce como "panda menor o común" o "panda rojo", para diferenciarlos 21 22 23 ') 24 ); 1 fila creada. SQL> SQL> SQL> INSERT INTO especies_tab (especie_id, nombreComun, clase, orden, descEspecie) 2 VALUES ('esp03', 'Periquito Atolero o del PacÃfico Mexicano', 'Aves', 'Psitaciformes', sys.XMLType.createXML(' 3 4 Periquito Atolero o del PacÃfico Mexicano 5 Animal 6 Cordados 7 Vertebrados 8 Aves 9 Psitaciformes 10 Psittacidae (Psitácidos) 11 Aratinga canicularis 12 De dos a cuatro polluelos 13 Terrestre 14 Consumidor secundario 15 16 17 Es un perico pequeño con la parte superior del cuerpo verde brillante, más amarillo y claro por debajo y con un tinte oliva en el pecho; la frente es naranja o amarillo-naranja (reducido en los juveniles) y presentan un parche color azul opaco en la corona 18 19 20 El forro de las alas es oliva amarillento, y las remeras azules en su mayorÃa, al igual que la punta de su larga cola. El iris es amarillo y el anillo ocular desnudo es amarillo naranja. Tienen el pico ganchudo, fuerte y blancuzco; las patas son color grisáceo apagado, con dos dedos hacia delante y dos hacia atrás, lo que les permite agarrarse bien de las ramas de los árboles 21 22 23 Esta especie mide aproximadamente 24cm. y pesa 80 gr 24 25 26 ') 27 ); 1 fila creada. SQL> SQL> INSERT INTO especies_tab (especie_id, nombreComun, clase, orden, descEspecie) 2 VALUES ('esp04', 'Ballena azul', 'Mamiferos', 'Cetáceos', sys.XMLType.createXML(' 3 4 Ballena azul 5 Animal 6 Cordado 7 Vertebrados 8 Mamiferos 9 Cetáceos 10 Balenoptéridos 11 Balaenoptera musculus 12 Sólo una crÃa en cada gestación 13 Acuático 14 Consumidor terciario 15 16 17 La ballena azul o rorcual azul gigante es el animal más grande. La longitud media de esta especie es de 24 m, pero puede medir hasta 33 metros. La hembra suele ser más grande que el macho, pues pueden llegar a pesar de 84 a 150 toneladas 18 19 20 Su cuerpo en realidad es gris azulado con manchas pálidas, lo que permite a los investigadores identificarlas mejor. Se ven de color azul cuando están bajo el agua y el dÃa es soleado. Los superficies inferiores a menudo se cubren con microorganismos, que dan al vientre un tinte amarillento Tienen una aleta dorsal pequeña (35 cm.) en comparación con el tamaño de su cuerpo y está muy cercana a la aleta caudal (cola) 21 22 23 ') 24 ); 1 fila creada. SQL> SQL> -- Tabla ANIMALES_TAB SQL> SQL> INSERT INTO animales_tab 2 SELECT 'ani01', 3 'Perico', 4 'macho', 5 ref(e), 6 sys.XMLType.createXML(' 7 8 Perico 9 10 11 12 Se mostró agresivo y nervioso ante la presencia de un grupo de niños 13 14 15 16 ') 17 FROM especies_tab e 18 WHERE e.especie_id = 'esp00'; 1 fila creada. SQL> SQL> INSERT INTO animales_tab 2 SELECT 'ani02', 3 'Rosita', 4 'hembra', 5 ref(e), 6 sys.XMLType.createXML(' 7 8 Rosita 9 10 11 12 13 ') 14 FROM especies_tab e 15 WHERE e.especie_id = 'esp00'; 1 fila creada. SQL> SQL> INSERT INTO animales_tab 2 SELECT 'ani03', 3 'Turuleta', 4 'hembra', 5 ref(e), 6 sys.XMLType.createXML(' 7 8 Turuleta 9 10 11 12 Se mostró decaído y reacio a comer 13 14 15 Se mostró decaído y reacio a comer. Parece padecer un cuadro de extrés 16 17 18 Se alimenta con normalidad 19 20 21 22 ') 23 FROM especies_tab e 24 WHERE e.especie_id = 'esp01'; 1 fila creada. SQL> SQL> INSERT INTO animales_tab 2 SELECT 'ani04', 3 'Pancho', 4 'macho', 5 ref(e), 6 sys.XMLType.createXML(' 7 8 Pancho 9 10 11 12 Atacó a un cuidador. Fue necesario reducirlo mediante sedantes 13 14 15 16 ') 17 FROM especies_tab e 18 WHERE e.especie_id = 'esp02'; 1 fila creada. SQL> SQL> INSERT INTO animales_tab 2 SELECT 'ani05', 3 'Manchita', 4 'hembra', 5 ref(e), 6 sys.XMLType.createXML(' 7 8 Manchita 9 10 11 12 13 ') 14 FROM especies_tab e 15 WHERE e.especie_id = 'esp02'; 1 fila creada. SQL> SQL> INSERT INTO animales_tab 2 SELECT 'ani06', 3 'Pepe', 4 'macho', 5 ref(e), 6 sys.XMLType.createXML(' 7 8 Pepe 9 10 11 12 13 ') 14 FROM especies_tab e 15 WHERE e.especie_id = 'esp03'; 1 fila creada. SQL> SQL> SQL> INSERT INTO animales_tab 2 SELECT 'ani07', 3 'Pepa', 4 'hembra', 5 ref(e), 6 sys.XMLType.createXML(' 7 8 Pepa 9 10 11 12 13 ') 14 FROM especies_tab e 15 WHERE e.especie_id = 'esp03'; 1 fila creada. SQL> SQL> INSERT INTO animales_tab 2 SELECT 'ani08', 3 'Moby Dick', 4 'hembra', 5 ref(e), 6 sys.XMLType.createXML(' 7 8 Moby Dick 9 10 11 12 Tras su llegada al zoo parece presentar problemas para adaptarse al su habitáculo, golpea los cristales y se teme que pueda llegar a lastimarse 13 14 15 Nos hemos visto obligados a administrar un sedante al animal 16 17 El animal parece haberse adaptado totalmente al habitáculo, en unos días será presentado al público 18 19 20 21 ') 22 FROM especies_tab e 23 WHERE e.especie_id = 'esp04'; 1 fila creada. SQL> SQL> SQL> SQL> SQL> -- Tabla CUIDADORES_TAB SQL> SQL> INSERT INTO cuidadores_tab 2 VALUES( cuidador_t( 3 '123456789X', 4 'Jorge', 5 '654765876', 6 conj_animales_t()) 7 ); 1 fila creada. SQL> SQL> -- Inserciones en la tabla anidada SQL> SQL> INSERT INTO TABLE(SELECT c.animales 2 FROM cuidadores_tab c 3 WHERE c.dni = '123456789X') 4 SELECT ref(a) 5 FROM animales_tab a 6 WHERE a.animal_id = 'ani01'; 1 fila creada. SQL> SQL> INSERT INTO TABLE(SELECT c.animales 2 FROM cuidadores_tab c 3 WHERE c.dni = '123456789X') 4 SELECT ref(a) 5 FROM animales_tab a 6 WHERE a.animal_id = 'ani02'; 1 fila creada. SQL> SQL> INSERT INTO TABLE(SELECT c.animales 2 FROM cuidadores_tab c 3 WHERE c.dni = '123456789X') 4 SELECT ref(a) 5 FROM animales_tab a 6 WHERE a.animal_id = 'ani04'; 1 fila creada. SQL> SQL> INSERT INTO TABLE(SELECT c.animales 2 FROM cuidadores_tab c 3 WHERE c.dni = '123456789X') 4 SELECT ref(a) 5 FROM animales_tab a 6 WHERE a.animal_id = 'ani05'; 1 fila creada. SQL> SQL> SQL> -- Tabla CUIDADORES_TAB SQL> SQL> INSERT INTO cuidadores_tab 2 VALUES( cuidador_t( 3 '2234467789W', 4 'Alicia', 5 '666665876', 6 conj_animales_t()) 7 ); 1 fila creada. SQL> SQL> -- Inserciones en la tabla anidada SQL> SQL> INSERT INTO TABLE(SELECT c.animales 2 FROM cuidadores_tab c 3 WHERE c.dni = '2234467789W') 4 SELECT ref(a) 5 FROM animales_tab a 6 WHERE a.animal_id = 'ani08'; 1 fila creada. SQL> -- Tabla CUIDADORES_TAB SQL> SQL> INSERT INTO cuidadores_tab 2 VALUES( cuidador_t( 3 '555767789T', 4 'Rubén', 5 '666885556', 6 conj_animales_t()) 7 ); 1 fila creada. SQL> SQL> -- Inserciones en la tabla anidada SQL> SQL> INSERT INTO TABLE(SELECT c.animales 2 FROM cuidadores_tab c 3 WHERE c.dni = '555767789T') 4 SELECT ref(a) 5 FROM animales_tab a 6 WHERE a.animal_id = 'ani03'; 1 fila creada. SQL> SQL> INSERT INTO TABLE(SELECT c.animales 2 FROM cuidadores_tab c 3 WHERE c.dni = '555767789T') 4 SELECT ref(a) 5 FROM animales_tab a 6 WHERE a.animal_id = 'ani06'; 1 fila creada. SQL> SQL> INSERT INTO TABLE(SELECT c.animales 2 FROM cuidadores_tab c 3 WHERE c.dni = '555767789T') 4 SELECT ref(a) 5 FROM animales_tab a 6 WHERE a.animal_id = 'ani07'; 1 fila creada. SQL> SQL> -- Indexacion! SQL> SQL> DROP INDEX especies_index; DROP INDEX especies_index * ERROR en línea 1: ORA-01418: el índice especificado no existe SQL> SQL> CREATE INDEX especies_index ON especies_tab(descEspecie) 2 INDEXTYPE IS CTXSYS.CONTEXT 3 PARAMETERS ('section group CTXSYS.PATH_SECTION_GROUP'); Índice creado. SQL> SQL> -- Indexacion! SQL> SQL> DROP INDEX animales_index; DROP INDEX animales_index * ERROR en línea 1: ORA-01418: el índice especificado no existe SQL> SQL> CREATE INDEX animales_index ON animales_tab(descripcion) 2 INDEXTYPE IS CTXSYS.CONTEXT 3 PARAMETERS ('section group CTXSYS.PATH_SECTION_GROUP'); Índice creado. SQL> SQL> SQL> spool off