Interested Article - Структурированный тип

Стандарт SQL:1999 привнес ряд функциональности объектно-реляционных баз данных в язык запросов SQL , основным из них были Структурированные типы данных, определенные пользователем ( structured user-defined types ), обычно называемые просто структурированными типами . Они могут быть определены в чистом SQL c использованием выражения CREATE TYPE , а также в языке программирования Java с помощью SQL/JRT . Структурированные типы SQL позволяют использовать одиночное наследование .

Структурированные типы поддерживаются в разной степени в Oracle Database , IBM Db2 , PostgreSQL и Microsoft SQL Server , хотя последний позволяет использовать только структурированные типы данных, определенные с помощью CLR .

SQL примеры

Объектно-структурированный тип

Для определения пользовательского структурного типа в Oracle Database можно использовать следующие выражения:

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
);

К дальнейшему прочтению

  • Jim Melton. . — Morgan Kaufmann, 2003. — ISBN 978-1-55860-677-7 . Chapters 2-4.
  • Suzanne W. Dietrich. Fundamentals of Object Databases: Object-Oriented and Object-Relational Design / Suzanne W. Dietrich, Susan D. Urban. — Morgan & Claypool Publishers, 2011. — ISBN 978-1-60845-476-1 . Chapter 3.
  • Catherine Ricardo. . — 2nd. — Jones & Bartlett Publishers, 2011. — ISBN 978-1-4496-0600-8 . Chapter 8.
Источник —

Same as Структурированный тип