Программирование >>  Sql: полное руководство 

1 ... 221 222 223 [ 224 ] 225 226 227 ... 264


инженера. Тот факт, что их количество переменно, для объектной модели не составляет проблемы, поскольку переменное количество однородных элементов всегда можно представить в виде массива внутри объекта, хранящего данные об инженере.

Таблица ENGINEERS

EMPI NUM

NAME

ADDRESS

SALARY 1 YRS EXPER

F NAME

M INIT

L NAME

STREET

CITY

STATE

POSTCODE MAIN 1 SFX

12 13 14 J

34 Bob J Smith 956 Elm Rd Forest NY 38294 4567 $45,000 6 74 Sam F Wilson 564 В i rch Rd Marion KY 82942 3524 $30,000 12 21 Sally P Watson 87 Dry Lane Mt Erie Dl 73853 2394 $34,500 9

Внешний ключ

Таблица DEGREES

DEGREE

SCHOOL

1245

Michigan

1245

Purdue

1374

Lehigh

1439

1436

1439

Stanford

Рис 23 5. Реляционная модель информации об инженерах и их ученых степенях

Объектно-реляционные СУБД поддерживают множества, массивы и другие типы коллекций. Их можно использовать для определения столбцов таблиц. Такой столбец будет содержать не одно значение в каждой ячейке, а целый набор значений. С помошью специальных расширений синтаксиса SQL пользователь или хранимая процедура могут маниттулировать коллекцией данных как единым целым или обращаться к ее отдельным элементам.

Создание коллекций

в Informix Universal Server существует три типа коллекций:

Список (list) - это упорядоченный набор значений одного типа. В списке есть первый, последний и п-ный элемент. Элементы списка не обязательно должны быть уникальными. Например, сггасок имен сотрудников, нанятых в текущем году, может быть таким (в порядке приема на работу): {Jim, Магу, Sam, Jim, John}.

Мультимножество (multiset) - это неупорядоченный набор значений одного типа. В нем нет ни первого, ни последнего, ни и-ного элемента - все они равнозначны. Элементы мультимножества не обязательно должны быть уникальными. Например, список имен сотрудников будет мультимножеством, если вас не интересует порядок их найма: {Jim, Sam, John, Mary, Jim}.

Множество (set) - это неупорядоченный набор уникальных значений одного типа. В нем тоже нет ни первого, ни последнего, ни -ного элемента, но все



элементы множества обязательно должны иметь уникальные значения. Например, приведенный выше список имен сотрудников не можег считаться множеством, а вот набор их фамилий - может- {Johnson, Samuels, Wnght, Jones, Smith}.

Чтобы проиллюстрировать концепцию коллекций, мы расширим таблицы нашей ОРБД следующим образом:

Таблица reps будет включать плановые объемы продаж на первый, второй, третий и четвертый кварталы. Квартальные планы логичнее всего представить в виде списка, так как они имеют естественный порядок (от первого до четвертого), один и тот же тип данных (денежный) и их значения не обязательно уникальны (т.е. планы первого и второго квартала вполне могут совпадать).

Таблица engineers будет включать информацию об ученых степенях инженеров. Эта информация будет состоять из двух компонентов собственно степени (BS - бакалавр естественных наук, PhD - доктор философии и т.п) и учебного заведения, в котором она получена. Данньге будут храниться в виде мультимножества, поскольку инженер может иметь две степени одного уровня, например бакалавра естественных наук и бакалавра бизнеса, полученные в одном и том же учебном заведении.

Таблица technicians будет включать информацию о проектах, в которых участвует каждый технолог. Технолог может участвовать и в нескольких проектах, но у каждого проекта будет уникальное название Поэтому данные о проектах будут храниться в виде множества.

Вот инструкции alter table, которые вносят в структуру таблиц нашей базы данных все эти изменения:

alter table reps

add QTR TGT list(money (9, 2)); /* четыре квартальных плана */

alter table technicians

add projects SET(varchar(15)); /* проекты */

alter table engineers

add degrees multiset(row( /* ученые степени */

degree varchar(3), school varchar(15));

Результирующие таблицы представлены на рис. 23.6. Получившуюся структуру можно назвать таблицей в таблице . Как видите, коллекции вносят серьезные изменения в реляционную модель, основанную на хранении строк и столбцов с атомарными элемента.ми. С появление.м каялекций таблицы как бы растягиваются, чтобы вместить дополнительные данные.

InfoTmix Universal Server допускает самое широкое использование коллекций. Коллекция может быть полем записи, а сами записи могут быть элементами коллекции. При желании можно даже определить коллекцию в коллекции. Например, проекты в нашем примере могут состоять из подчиненных проектов, участие в которых тоже можно отслеживать в базе данных. С добавлением каждого нового уровня сложности усложняется как SQL, так и язык хранимых процедур, которым нужны средства для манипулирования новыми типами данных.



Таблица REPS

NAME

ADDRESS

POSTCODE

EMPL NUN

F NANE

M UIT

L NANE

STREET

CITY

STATE

KAIN 1 SFX

SLS GR

SALARY

OUOTA

OTR TGT

4267

Nancy

Walsh

2698

$36,000

$760 ООО

$160 ООО $190 ООО $210.000 $190. ООО

4316

a

*

2698

$32 ООО

$690 ООО

$120,000 $166,000 $190 ООО $215 ООО

Таблица TECHNICIANS

NANE

ADDRESS

POSTCODE

ENPL NUN

FNAME

L NAME

STREET

CITY

STATE

MAIN 1 SFX

WAGE-RATE

PROJECTS

1421

Jones

$16.75

bingo atlas checkmate

1637

Harry

Franks

s

*

$20 50

at las

1618

George W

s

s

$19.75

допго

bingo

Таблица ENGINEERS

NANE

ADDRESS

POSTCODE

DEGREES

EMPL NUN

F ANE

H.INIT

L NANE

STREET

CITY

STATE

MAIN 1 SEX

SALARY

YRS EXPER

DEGREE

SHOOL

1234

Smith

.

... ...

$4S ООО

BS NS

Nicbigan Purdue

1374

WlIson

... ...

$30,000

Lehigh

Sally

Watson

... ...

$34.60D

BS BS ИВА

.Stanford

P C 23.6. ТфблИЦЫ CO стояЙцоА*ф%

I коллекцин

Oracle подцерживает коллекции двух типов:

Массив переменного размера (varray) - это упорядоченный набор значений одного типа. Элементы массива не обязаны быть уникальными. При создании столбца этого типа следует задать максимальное количество элементов массива. Для доступа к отдельным элементам массивов в Oracle поддерживается расширенный синтаксис SQL.

Вложенная таблица (table) - это самая настоящая таблица в таблице. Столбец данного типа содержит ячейки, которые сами являются таблицами. Oracle хранит содержимое вложенной таблицы отдельно от главной таблицы, но поддерживает расширенный синтаксис SQL, позволяющий обращаться к вложенной таблице как к столбцу главной таблицы. В отличие от массива переменной длины вложенная таблица может содержать любое количество строк.



1 ... 221 222 223 [ 224 ] 225 226 227 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика