El estándar SQL: 1999 introdujo una serie de características de bases de datos relacionales de objetos en SQL , principalmente entre ellas los tipos estructurados definidos por el usuario , generalmente llamados simplemente tipos estructurados . Estos se pueden definir en SQL simple con CREATE TYPE
pero también en Java a través de SQL / JRT . Los tipos estructurados de SQL permiten una herencia única .
Los tipos estructurados se admiten en diversos grados en la base de datos Oracle , IBM DB2 , PostgreSQL y Microsoft SQL Server , aunque este último solo permite tipos estructurados definidos en CLR .
Ejemplos de SQL
Tipo estructurado de objeto
Para definir un tipo de estructura personalizada utilizando la base de datos Oracle, se pueden usar declaraciones como estas:
CREAR TIPO Person_Type COMO OBJETO ( person_title VARCHAR2 ( 10 ), person_first_name VARCHAR2 ( 20 ), person_last_name VARCHAR2 ( 20 ), ) NOT FINAL ;
Dicho tipo de estructura se puede usar para crear una tabla que también contendría todas las columnas definidas en Person_Type :
CREAR TABLA Person_Table OF Person_Type ;
Los tipos de estructura personalizados admiten la herencia, lo que significa que se puede crear otro tipo que herede del anterior. NOT FINAL
Sin embargo, la declaración debe incluirse en una definición de tipo de estructura base para permitir la creación de cualquier otro subtipo.
CREAR TIPO Student_Type UNDER Person_Type (número de matrícula NÚMERO ( 10 ) );
Student_Type luego podría usarse para crear una Student_Table que incluirá todas las columnas definidas en Person_Type también. La clave principal y las restricciones deben definirse durante o después de la creación de la tabla y no se pueden definir dentro del tipo de estructura en sí.
CREAR TABLA Student_Table OF Student_Type ( matriculation_number PRIMARY KEY , CONSTRAINT person_title_not_null_constraint NOT NULL ( person_title ), );
Cada tipo de estructura personalizada también puede contener otros tipos para admitir estructuras más complejas:
CREAR TIPO Address_Type COMO OBJETO ( address_street VARCHAR2 ( 30 ), address_city VARCHAR2 ( 30 ), );CREAR TIPO Universidad COMO OBJETO ( university_name VARCHAR2 ( 30 ), university_address Address_Type );
Otras lecturas
- Jim Melton (2003). SQL avanzado: 1999 . Morgan Kaufmann. ISBN 978-1-55860-677-7. Capítulos 2-4.
- Suzanne W. Dietrich; Susan D. Urban (2011). Fundamentos de bases de datos de objetos: diseño orientado a objetos y relacional de objetos . Editores Morgan & Claypool. ISBN 978-1-60845-476-1. Capítulo 3.
- Catherine Ricardo (2011). Bases de datos iluminadas (2ª ed.). Editores Jones & Bartlett. ISBN 978-1-4496-0600-8. Capítulo 8.