13.08.2013 Views

Modelo objeto-relacional en Oracle ÍNDICE

Modelo objeto-relacional en Oracle ÍNDICE

Modelo objeto-relacional en Oracle ÍNDICE

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

EVOLUCIÓN DE TIPOS<br />

A continuación, modificamos el tipo tipoPersona sustituy<strong>en</strong>do el<br />

atributo edad por f_nacimi<strong>en</strong>to. En este punto, la redefinición del tipo<br />

tipoPersona, ha cambiado también la definición de la tabla Persona,<br />

pero los datos de la tabla no han sido modificados aún, para ajustarse<br />

a la nueva definición.<br />

ALTER TYPE tipoPersona<br />

ADD ATTRIBUTE (f_nacimi<strong>en</strong>to DATE),<br />

DROP ATTRIBUTE edad CASCADE NOT INCLUDING TABLE DATA;<br />

Cuando consultamos ahora el valor de los <strong>objeto</strong>s de la tabla Persona<br />

obt<strong>en</strong>emos lo sigui<strong>en</strong>te:<br />

SELECT value(p) FROM TablaPersona p;<br />

VALUE(P)(NOMBRE, APELLIDOS, F_NACIMIENTO)<br />

----------------------------------------------<br />

TIPOPERSONA(’Pepe', ’Sánchez', NULL)<br />

EVOLUCIÓN DE TIPOS<br />

• Cuando la consulta anterior recupera los datos<br />

de la tabla Persona, <strong>Oracle</strong> los modifica para<br />

que concuerd<strong>en</strong> con la nueva definición del tipo.<br />

• En este caso, como se ha añadido un nuevo<br />

atributo, se limita a inicializarlo con valor nulo,<br />

NULL.<br />

• Para borrar tipos con tablas u otros tipos<br />

dep<strong>en</strong>di<strong>en</strong>tes, es necesario borrar antes todos<br />

los <strong>objeto</strong>s dep<strong>en</strong>di<strong>en</strong>tes o bi<strong>en</strong> incluir la<br />

cláusula FORCE.<br />

• Así, por ejemplo, para borrar el tipo tipoPersona,<br />

t<strong>en</strong>dríamos que especificar:<br />

DROP TYPE tipoPersona FORCE;<br />

31

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!