Tipos estructurados y herencia en SQL

Los tipos estructurados se pueden declarar y usar como en el siguiente ejemplo:
create type Editorial as(nombre varchar(20),sucursal varchar(20))
create type Libro as (título varchar(20), array-autores varchar(20) array [10], fecha-pub date, editorial Editorial, lista-palabras-clave setof(varchar(20)))
create table libros of type Libro

La primera instrucción define el tipo Editorial, que tie­ne dos componentes: un nombre y una sucursal. La segun­da instrucción define el tipo Libro, que contiene título, array-autores, que es un array de autores, una fecha de publicación, una editorial (de tipo Editorial) y un con­junto de palabras clave. Los tipos ilustrados se denomina tipos estructurados.
Finalmente, se crea la tabla libros que contiene tuplas del tipo Libro. El array permite registrar el orden de los nombres de autores. Los tipos estructurados permiten la representación directa de atributos compuestos de los diagramas E-R. También se pueden usar tipos fila en SQL para definir atributos compuestos. Por ejemplo, se podría haber definido un atributo editorial1 como

editorial1 row (nombre varchar(20), sucursal varchar(29))

en lugar de crear un tipo con nombre Editorial.Por supuesto se pueden crear tablas sin crear un tipo intermedio para la tabla. Por ejemplo, la tabla libros se podría también definir como:

create table libros (título varchar(20), array-autores varchar(20) array [10], fecha-pub date, editorial Editorial, lista-palabras-clave setof(varchar(20)))

Con esta declaración no hay un tipo explícito para las filas de la tabla.
Un tipo estructurado puede tener métodos definidos sobre él. Los métodos se declaran como parte de la defi­nición de tipos de un tipo estructurado.

create type Empleado as (nombre varchar(20),sueldo integer)
method incrementar(porcentaje integer)

El cuerpo del método se crea separadamente:

create method incrementar(porcentaje integer) for Empleado
begin
set selft.sueldo = self.sueldo + (self.sueldo* porcentaje)/100
              end
La variable self se refiere al ejemplar del tipo estructu­rado sobre el que se invoca el método. El cuerpo del método puede contener instrucciones procedimentales.


Referencias

Silberschatz, A. (2002). Fundamentos de Bases de Datos. Madrid: McGrauHill, Pag 213-214.

1 comentario: