Você está na página 1de 4

Tipos de datos complejos Los elementos de datos bsicos son registros bastantes pequeos y cuyos campos son atmicos,

es decir, no contienen estructuras adicionales y en los que se cumple la primera forma normal. Con sistemas de tipos complejos se pueden representar directamente conceptos del modelo E-R como los atributos compuestos, los atributos multivalorados, la generalizacin y la especializacin, sin necesidad de una compleja traduccin al modelo relacional. La posibilidad de usar tipos de datos complejos como los conjuntos y los arrays puede resultar til en muchas aplicaciones, pero se debe usar con cuidado. Tipos estructurados y herencia en SQL Un sistema de tipos extenso a SQL, lo lo que permite los tipos estructurados y la herencia de tipos.

Tipos estructurados Los tipos estructurados permiten representar directamente los atributos compuestos de los diagramas E-R. Por ejemplo, de las tablas anteriores se puede definir el siguiente tipo estructurado para representar el atributo compuesto nombre con los atributos componentesnombredepila y apellidos: create type Nombre as (nombredepila varchar(20) apellidos varchar(20) final las especificaciones final y not final estn relacionadas con las subtipificacin. Se pueden usar esos tipos para crear atributos compuestos en las relaciones, con solo declarar que

un atributo es de uno de estos tipos. Por ejemplo, se puede crear la tabla cliente de la manera siguiente: create table cliente ( nombreNombre, direccionDireccion, fechaDeNacimiento date) Se puede tener acceso a los componentes de los atributos compuestos usando la notacin punto. Una manera alternativa de definir los atributos compuestos en SQL, es usar tipos de filasin nombre. Sobre los tipos estructurados se pueden definir mtodos. Los mtodos se declaran coo parte de la definicin de los tipos de los tipos estructurados. La clausula for indica el tipo al que se aplica el mtodo, mientras que la palabra clave instanteindica que el mtodo se ejecuta sobre un ejemplar. La variable self hace referencia al ejemplarque se invoca el mtodo. Se usan funciones constructoras para crear valores de los tipos estructurados. Las funciones con el mismo nombre que un tipo estructurado son funciones constructoras de ese tipo estructurado. Herencia de tipos Los mtodos de los tipos estructurados se heredan por sus subtipos, igual que los atributos. Sin embargo, cada subtipo puede redefinir el efecto de los mtodos volviendo a declararlos, usandooverriding method en lugar de method en la declaracin del mtodo. SQL solo soporta la herencia simple, es decir, cada tipo solo se puede heredar de un nico tipo. La herencia mltiple no esta soportado en SQL, el valor de un tipo estructurado debe tener exactamente un tipo mas concreto. Cada valor debe asociarse, al crearlo, con un tipo concreto, denominado su tipo mas concreto. Por ejemplo en un a base de datos informacin adicional sobre las personas que son estudiantes y sobre las que son profesores. Dado que los estudiantes y los profesores tambin son personas se usar la herencia para definir en SQL los tipos estudiantes y profesor. create type Estudiante under Persona (grado varchar(20) departamento varchar(20) create type Profesor under Persona (sueldo integer,

departamento varchar(20) Herencia de tablas Las subtablas de SQL se corresponden con el concepto de especializacin/generalizacin de E-R. Los tipos de las subtablas deben ser subtipos del tipo de la tabla madre. Todos los atributos presentes tambin estn presentes en las subtablas. La palabra clave only tambin puede usarse en las sentencias delete y update. Sin la palabra clave only, la instruccin delete aplicada a una supertabla, tambin borra las tuplas que se insertaron originalmente en las subtablas. La herencia multiple es posible con las tablas, igual que con los tipos. Por ejemplo, se puede crear una tabla del tipo ProfesorAyudante: create table profesores_ayudantes of ProfesorAyudante under estudiantes, profesores se dice que las tuplas de una subtabla se corresponden con las tuplas de la tabla madre si tienen el mismo valor para todos los atributos heredados. Por tanto, las tuplas correspondientes representan a la misma entidad. Los requisitos de consistencia de las subtablas son: 1. Cada tupla de la super tabla puede corresponderse, como mximo con una tupla de cada una de sus subtablas inmediatas. 2. SQL posee una restriccin adicional que hace que todas las tuplas que se correspopnden entre si deben proceder de una tupla (insertada en una tabla) Las subtablas de SQL no se pueden usar para representar las especializaciones que se solapen de los modelos E-R. Por supuesto, se pueden crear tablas diferentes para representar las especializaciones o generalizaciones que se solapen sin usar la herencia. SQL define un nuevo privilegio denominado under, en el cual es necesario para crear subtipos o subtablas bajo otro tipo o tabla la razn de ser de este privilegio es parecida a la del privilegio references. Tipos de arreglo multiconjunto en SQL SQL soporta dos tipos de conjuntos: arrays y multiconjuntos. Multiconjuntos es un conjunto no ordenado, en el que cada elemento puede aparecer varias veces. A diferencia de los elementos de los multiconjuntos, los elementos de los arrays estn ordenados Por ejemplo se ilustra la manera en que se pueden definir en SQL, estos atributos valorados con arrays y multiconjuntos.

create type Editor as (nombre varchar(20) sucursal vachar(20) create type Libro as (titulo vachar (20), array_autores vachar (20) array[10], fecha_publicacion date, editor Editor, conjunto_palabras_clave varchar(20) multiset) create table los atributos multivalorados de los esquemas E-R se pueden asignar en SQL atributos valorados como multiconjuntos si el orden es importante se pueden usar los arrays de SQL en lugar de los multiconjuntos. Creacin y acceso a los valores de los conjuntos array[silberschatz,Korth, Sudarshan] de manera parecida se puede crear un multiconjunto de palabras clave de la manera siguiente: multiset[computadora, base de datos, SQL] Consulta de los atributos valorados como conjuntos Ahora se considerara la forma de manejar los atributos que se valoran como conjuntos. Las expresiones que se valoran como conjuntos pueden aparecer en cualquier parte en la que pueda aparecer el nombre de una relacin, como las clausulas FROM. Al desanidar un arrays la consulta anterior pierde informacin sobre el orden de los elementos de consulta. Se pueden usar las clausulas UNESTED WITH ORDINALITY para obtener esta informacin. La clausulas WITH ORDINALITY genera un atributo adicional que se registra la posicin del elemento en el arrays. Se puede usra una consulta parecida. Pero sin la clausula WITH ORDINALITY, para generar la relacin. Anidamiento y desanidamiento La transformacin de una relacin anidada en una forma con menos atributos de tipos relacin (o sin ellos) se denomina desanidamiento.

Você também pode gostar