Структурированный тип
Стандарт SQL:1999 ряд функций объектно-реляционных баз данных ввел в SQL , в основном среди них структурированные определяемые пользователем типы , обычно называемые просто структурированными типами . Они могут быть определены либо в простом SQL с помощью CREATE TYPE
но также и на Java через SQL/JRT . Структурированные типы SQL допускают одиночное наследование .
Структурированные типы в различной степени поддерживаются в Oracle Database , IBM Db2 , PostgreSQL и Microsoft SQL Server , хотя последний допускает только структурированные типы, определенные в CLR .
Примеры SQL
[ редактировать ]Структурированный тип объекта
[ редактировать ]Чтобы определить тип пользовательской структуры с помощью базы данных Oracle, можно использовать такие операторы:
CREATE TYPE Person_Type AS OBJECT (
person_title VARCHAR2(10),
person_first_name VARCHAR2(20),
person_last_name VARCHAR2(20),
)
NOT FINAL;
Такой тип структуры затем можно использовать для создания таблицы, которая также будет содержать все столбцы, определенные в Person_Type :
CREATE TABLE Person_Table OF Person_Type;
Типы пользовательских структур поддерживают наследование, что означает, что можно создать другой тип, который наследует от предыдущего. NOT FINAL
Однако оператор должен быть включен в определение типа базовой структуры, чтобы можно было создавать любые другие подтипы.
CREATE TYPE Student_Type UNDER Person_Type (
matriculation_number NUMBER(10)
);
Student_Type затем можно использовать для создания Student_Table будет включать все столбцы, определенные в Person_Type , которая также . Первичный ключ и ограничения должны быть определены во время или после создания таблицы и не могут быть определены внутри самого типа структуры.
CREATE TABLE Student_Table OF Student_Type (
matriculation_number PRIMARY KEY,
CONSTRAINT person_title_not_null_constraint NOT NULL (person_title),
);
Каждый тип пользовательской структуры может также содержать другие типы для поддержки более сложных структур:
CREATE TYPE Address_Type AS OBJECT (
address_street VARCHAR2(30),
address_city VARCHAR2(30),
);
CREATE TYPE University AS OBJECT (
university_name VARCHAR2(30),
university_address Address_Type
);
Дальнейшее чтение
[ редактировать ]- Джим Мелтон (2003). Расширенный SQL: 1999 . Морган Кауфманн. ISBN 978-1-55860-677-7 . Главы 2-4.
- Сюзанна В. Дитрих; Сьюзан Д. Урбан (2011). Основы объектных баз данных: объектно-ориентированное и объектно-реляционное проектирование . Издательство Морган и Клейпул. ISBN 978-1-60845-476-1 . Глава 3.
- Катрин Рикардо (2011). Освещенные базы данных (2-е изд.). Издательство Джонс и Бартлетт. ISBN 978-1-4496-0600-8 . Глава 8.