Структурированный тип - Structured type

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

Структурированные типы в разной степени поддерживаются в базах данных Oracle , 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). Основы объектных баз данных: объектно-ориентированный и объектно-реляционный дизайн . Издатели Morgan & Claypool. ISBN   978-1-60845-476-1 . Глава 3.
  • Катрин Рикардо (2011). Освещенные базы данных (2-е изд.). Jones & Bartlett Publishers. ISBN   978-1-4496-0600-8 . Глава 8.