Классика баз данных - статьи

       

Другие SQL ОРСУБД предлагают другие


Другие SQL ОРСУБД предлагают другие конструкторы составных типов, например VARRAY или ARRAY вместо SET, и OBJECT вместо ROW. Конструкторы простых встроенных типов с ограничениями как CHAR(5) унаследованы от SQL2. Zigzag принимает вышеупомянутую таблицу без использования конструкторов типов, как ниже, через процедуру readTable (). Первая строка входных данных объявляет названия атрибутов. Имя "id" может быть опущено, а "student" обозначать и первичный ключевой атрибут и таблицу.

$readTable() < student; name:first; name:last; course st031 ; Jane ; Hunter ; Economy, Planning st072 ; Richard ; White ; Computers in Engineering >;



Наследование типа



Иерархия структурных комплексных данных предлагает дополнительное свойство, наследование типа. То есть структурный тип может иметь подтипы, которые используют все его атрибуты и содержат дополнительные атрибуты, специфицированные в подтипе. Рассмотрим следующие данные:

employees

















Name


Salary


Sylvia Karsen


30000.00


programmers

























Name


Salary


Language


Project


William Helprin


40000.00


C++


Seestorm


representatives





















Name


Salary


Region


Akiko Yokomoto


50000.00


Asia


Типы данных формируют иерархию изображенную ниже.

Employee(Name,Salary) / \ Programmer(Language,Project) Representative(Region)



SQL представление



Для создания базы данных воспользуемся преимуществами Oracle SQL ().

CREATE TYPE Employee AS OBJECT ( Name VARCHAR2(20), Salary NUMBER(6,2) ) NOT FINAL; CREATE TYPE Programmer UNDER Employee ( Language VARCHAR2(12), Project VARCHAR2(30) ); CREATE TYPE Representative UNDER Employee ( Region VARCHAR2(30) ); CREATE TABLE employees OF Employee; CREATE TABLE programmers OF Programmer; CREATE TABLE representatives OF Representative; INSERT INTO employees VALUES (Employee('Sylvia Karsen', 30000.00)); INSERT INTO programmers VALUES (Programmer('William Helprin', 40000.00, 'C++', 'Seestorm')); INSERT INTO representatives VALUES (Representative('Akiko Yokomoto', 50000.00, 'Asia'));


Содержание  Назад  Вперед