Дейт К. Д27 Руководство по реляционной субд db2/ Пер с англ и предисл. М. Р. Когаловского
Вид материала | Руководство |
- Рич Р. К. Политология. Методы исследования: Пер с англ. / Предисл. А. К. Соколова, 6313.17kb.
- Рич Р. К. Политология. Методы исследования: Пер с англ. / Предисл. А. К. Соколова, 6313.29kb.
- Сорокин П. А. С 65 Человек. Цивилизация. Общество / Общ ред., сост и предисл., 11452.51kb.
- The guilford press, 6075kb.
- The guilford press, 6075.4kb.
- Курс лекций "Базы данных и субд" Ульянов В. С. Лекция. Целостная часть реляционной, 213.79kb.
- Дэвид Дайчес, 1633.42kb.
- Mathematics and the search for knowledge morris kline, 498.28kb.
- Лекция №1: Стандарты языка sql, 1420.56kb.
- Курс лекций "Базы данных и субд" Ульянов В. С. Лекция. Манипулирование реляционными, 276.31kb.
15.3. ЯЗЫК QUERY-BY-EXAMPLE
Как указывалось в разделе 15.1, QMF обеспечивает интерфейс Query-By-Example, а также интерфейс SQL. Query-By-Example (QBE) — реляционный язык запросов, который в некотором отношении более «дружествен для пользователей», чем SQL, по крайней мере для пользователей, не имеющих профессиональной подготовки в области обработки данных. Несомненно, справедливо, что SQL—более «дружествен для пользователей», чем более старые языки, например DL/1. Однако в нем все еще предполагается определенный опыт программирования. По существу, он является все-таки языком программирования в традиционном смысле, хотя и языком очень высокого уровня. Напротив, QBE—это язык, в котором все операции формулируются просто путем занесения данных в пустые таблицы на экране—по существу, путем заполнения форм. Такой стиль «заполнения бланков» является весьма легким для изучения и понимания и часто оказывается более привлекательным, чем стиль SQL, для пользователей с незначительной подготовкой или вообще не имеющих подготовки в области обработки данных.
С помощью интерфейса QBE для QMF пользователь может запрашивать операции, аналогичные операциям манипулирования данными SQL - SELECT, UPDATE, DELETE и INSERT. Однако все другие операции определения данных и управления данными, например CREATE и GRANT, могут запрашиваться только через интерфейс SQL. В QBE доступны операции Р., U., D. и I., соответствующие операциям SQL - SELECT, UPDATE, DELETE и INSERT.
Примечание. «Р.» обозначает «print» (печатать), однако эта команда фактически не вызывает какой-либо печати. Для этой цели предназначена команда PRINT в QMF, как указывалось и разделе 15.2.
Основная идея, лежащая в основе QBE, очень проста и иллюстрируется следующим примером. Рассмотрим запрос «Выдать номера поставщиков, находящихся в Париже и имеющих состояние больше 20» (пример 4.2.5 из главы 4). Этот запрос может быть представлен в QBE следующим образом:
S | НОМЕР_ПОСТАВЩИКА | ФАМИЛИЯ | СОСТОЯНИЕ | ГОРОД |
| Р. | | >20 | Париж |
Пояснение. Сначала, выдавая команду DRAW S (нарисоватьS), пользователь заставляет QMF вывести на экран пустую таблицу S, т. е. таблицу, в которой показаны только ее имя и имена столбцов без каких-либо значений данных. Затем пользователь конструирует запрос, печатая элементы трех позиций в теле этой таблицы. А именно, он печатает «Р.» в позиции НОМЕР_ПОСТАВЩИКА, чтобы указать цель запроса, в данном случае значения, которые должны быть «напечатаны» или показаны на экране. Помимо этого, он задает «>20» и «Париж» в позициях СОСТОЯНИЕ и ГОРОД, чтобы указать условия, которым должны удовлетворять эти целевые значения.
Можно специфицировать также «Р.» относительно полной строки, например, следующим образом:
S | НОМЕР_ПОСТАВЩИКА | ФАМИЛИЯ | СОСТОЯНИЕ | ГОРОД |
| Р. | | >20 | Париж |
что эквивалентно спецификации «Р.» в позиции каждого столбца таблицы:
S | НОМЕР_ПОСТАВЩИКА | ФАМИЛИЯ | СОСТОЯНИЕ | ГОРОД |
| Р. | Р. | Р.>20 | Р. Париж |
Отметим, между прочим, что значения, являющиеся строками символов, например Париж, могут специфицироваться без заключения их в кавычки. Однако не будет ошибки, если такое значение заключается в кавычки, а иногда, например если в строке содержатся пробелы, кавычки необходимы.
В остальной части этой главы с помощью ряда дальнейших примеров иллюстрируются некоторые важные особенности интерфейса QBE. Для удобства там, где это уместно, даются ссылки на варианты этих примеров в SQL из глав 4, 5 и 6. Мы не будем, однако, настолько же вдаваться в подробности, насколько это делали в случае SQL. Прежде чем перейти к рассмотрению примеров, сделаем еще два предварительных замечания:
— В QMF имеется команда, которая дает пользователю возможность специфицировать, будут ли запросы формулироваться в SQL или в QBE. Возможно динамическое переключение этих интерфейсов в одном сеансе QMF.
— Для формирования пустых таблиц на экране путем добавления или удаления столбцов и строк, а также расширения и сужения столбцов пользователь имеет в распоряжении команды редактирования. Таким образом, таблицы могут редактироваться для того, чтобы удовлетворить требованиям любой операции, которую пытается формулировать пользователь. В частности, могут быть исключены столбцы, которые не требуются для выполнения специфицированной в запросе операции. Например, в первом из приведенных выше примеров запросов столбец ФАМИЛИЯ мог быть исключен:
-
S
НОМЕР_ПОСТАВЩИКА
СОСТОЯНИЕ
ГОРОД
Р.
>20
Париж
В дальнейшем мы не будем беспокоиться относительно обсуждения таких подробностей.
15.3.1. ВЫБОРКА С УПОРЯДОЧЕНИЕМ
Выдать номера поставщиков и состояния для поставщиков из Парижа в порядке возрастания номеров поставщиков в рамках убывания состояния. (Расширенный вариант примера 4.2.6.)
Имеем в QBE:
S | НОМЕР_ПОСТАВЩИКА | ФАМИЛИЯ | СОСТОЯНИЕ | ГОРОД |
| Р. АО(2) | | Р. DО(1) | Париж |
Здесь «АО.» обозначает «в порядке возрастания», a «DO.» — «и порядке убывания». Целые числа в скобках указывают последовательность «от старшего к младшему» для столбцов упорядочения. В данном примере СОСТОЯНИЕ—старший столбец, а НОМЕР_ПОСТАВЩИКА—младший.
15.3.2. ВЫБОРКА, ТРЕБУЮЩАЯ ИСПОЛЬЗОВАНИЯ СВЯЗКИ OR
Выдать номера поставщиков и состояния для поставщиков, которые либо находятся в Париже, либо имеют состояние более 20, либо удовлетворяют обоим этим условиям (модифицированный вариант примера 4.2.5).
Условия, специфицированные в одной строке, считаются соединенными связкой AND, как иллюстрировалось приведенными до сих пор примерами. Для того, чтобы два условия были связаны с помощью OR, они должны быть специфицированы в разных строках, как показано ниже:
S | НОМЕР_ПОСТАВЩИКА | ФАМИЛИЯ | СОСТОЯНИЕ | ГОРОД |
| Р. Р. | | > 20 | Париж |
Замечание. Если данный поставщик удовлетворяет обоим условиям этого примера, соответствующий номер поставщика будет всеже появляться в результате только один раз.
Другой подход к этому запросу основан на использовании так называемого блока условия. Блок условия позволяет специфицировать условия любой степени сложности. Например:
S | НОМЕР_ПОСТАВЩИКА | ФАМИЛИЯ | СОСТОЯНИЕ | ГОРОД |
| Р. | | ST | SC |
УСЛОВИЯ |
SC = Париж OR -ST > 20 |
Пояснение. Здесь ST и SC являются «элементами образца». Фактически они представляют собой переменные, обозначающие состояние и город соответственно некоторого потенциального целевого поставщика. Блок условия специфицирует предикат, которому должны удовлетворять эти переменные для того, чтобы соответствующий целевой поставщик оказался среди поставщиков, подлежащих выборке. Имя элемента образца может быть произвольным с тем лишь ограничением, что оно должно начинаться с символа подчеркивания.
Другая команда редактирования DRAW COND (нарисовать блок условия) служит для того, чтобы заставить QMF показать на экране пустой блок условия. Условия в блоке условия могут включать AND, OR, NOT, IN (только в форме простого списка значений), LIKE и NULL, совсем как в SQL. (Замечание. IN, LIKE и NULL могут использоваться при заполнении пустой таблицы так же, как и блока условия.) Однако часто легче формулировать запросы без использования блока условия, и в дальнейшем возможность его использования часто будет игнорироваться.
15.3.3. ВЫБОРКА ПО МНОЖЕСТВУ УСЛОВИЙ, ЗАДАННЫХ ДЛЯ ОДНОГО И ТОГО ЖЕ СТОЛБЦА И ОБЪЕДИНЕННЫХ СВЯЗКОЙ AND
Выдать номера деталей, вес которых находится в диапазоне от 16 до 19 включительно (пример 4.2.7):
Р | НОМЕР_ДЕТАЛИ | НАЗВАНИЕ | ЦВЕТ | ВЕС | ВЕС | ГОРОД |
| Р. | | | >= 16 | <= 19 | |
Для добавления к пустой таблице второго столбца с именем ВЕС перед тем, как формулировать запрос, используются команды редактирования.
15.3.4. ВЫБОРКА ВЫЧИСЛЯЕМЫХ ЗНАЧЕНИЙ И КОНСТАНТ
Выдать для всех деталей номера деталей и вес их в граммах. Вес деталей в таблице Р задан в фунтах (расширенный вариант примера 4.2.3);
Р | НОМЕР_ДЕТАЛИ | ВЕС | | |
| Р. | _PW | Р. 'Вес в граммах=’ | P._ PW 454 |
15.3.5. ВЫБОРКА (специфицированных полей из) СОЕДИНЕНИЯ
Выдать все комбинации «номер поставщика/номер детали» такие, что рассматриваемые поставщик и деталь «соразмещены» (пример 4.3.4):
S | НОМЕР_ ПОСТАВЩИКА | ГОРОД | | Р | НОМЕР_ ДЕТАЛИ | ГОРОД | | | | |
| _SX | _сх | | | _РХ | _сх | | P. | _SX | _РХ |
Пояснение. Для этого запроса нужны три пустых таблицы — по одной для S и Р (показаны только столбцы, имеющие отношение к данному запросу) и одна — для результата. При этом и таблице для результата можно не специфицировать ни имени этой таблицы, ни имен столбцов. Обратите внимание, каким образом специфицированы элементы образца, которые связывают эти три таблицы. Полный запрос может быть перефразирован следующим образом: «Показать на экране пары номер поставщика/номер детали — SX/PX — такие, что SX и РХ размещены в одном и том же городе СХ».
15.3.6. СОЕДИНЕНИЕ ТАБЛИЦЫ С НЕЙ САМОЙ
Выдать все пары номеров поставщиков таких, что входящие к каждую пару поставщики соразмещены (пример 4.3.6);
S | НОМЕР_ ПОСТАВЩИКА | ГОРОД | | S | НОМЕР_ ПОСТАВЩИКА | ГОРОД | | | | |
| _SX | _сZ | | | _SY | _сZ | | P. | _SX | _SY |
Для того чтобы специфицировать дополнительное условие SX<SY, если это необходимо, может быть использован блок условия. Обсуждение этого вопроса см. в главе 4.
15.3.7. ВЫБОРКА С ИСПОЛЬЗОВАНИЕМ КВАНТОРОВ СУЩЕСТВОВАНИЯ
Выдать фамилии поставщиков, поставляющих деталь Р2 (пример 5.3.1):
S | НОМЕР_ ПОСТАВЩИКА | ФАМИЛИЯ | | SP | НОМЕР_ ПОСТАВЩИКА | НОМЕР_ ДЕТАЛИ |
| _SX | Р. | | | _SX | Р2 |
Строка в таблице SP неявным образом квантифицирована квантором существования «существует». Этот запрос можно перефразировать следующим образом: «Показать на экране фамилии поставщиков SX таких, что существует какая-либо поставка детали Р2 поставщиком SX».
15.3.8. ВЫБОРКА С ИСПОЛЬЗОВАНИЕМ СОЕДИНЕНИЯ
Выдать номера деталей, которые либо весят более 16 фунтов, либо поставляются поставщиком S2, либо удовлетворяют обоим этим условиям (пример 5.5.1):
Р | НОМЕР_ ДЕТАЛИ | ВЕС | | SP | НОМЕР_ ПОСТАВЩИКА | НОМЕР_ДЕТАЛИ | | | | |
| _РХ | > 16 | | | S2 | _PY | | | Р. Р. | _РХ _PY |
15.3.9. ОБНОВЛЕНИЕ ОДНОЙ ЗАПИСИ
Изменить цвет детали Р2 на желтый, увеличить ее вес на 5, а для города установить неопределенное значение (пример 6.2.1):
Р | НОМЕР_ДЕТАЛИ | НАЗВАНИЕ | ЦВЕТ | ВЕС | ВЕС | ГОРОД |
| Р2 | | U. желтый | _WT | U._WT+5 | U.NULL |
15.3.10. ОБНОВЛЕНИЕ МНОЖЕСТВА ЗАПИСЕЙ
Установить нулевой объем поставок для всех поставщиков, находящихся в Лондоне (пример 6.2.3):
SP | НОМЕР_ ПОСТАВЩИКА | КОЛИЧЕСТВО | | S | НОМЕР_ ПОСТАВЩИКА | ГОРОД |
| _SX | U.O. | | | _SX | Лондон |
15.3.11. УДАЛЕНИЕ МНОЖЕСТВА ЗАПИСЕЙ
Удалить всех поставщиков, находящихся в Лондоне (пример 6.3.2);
S | НОМЕР_ПОСТАВЩИКА | ФАМИЛИЯ | СОСТОЯНИЕ | ГОРОД |
D. | | | | Лондон |
Отметим, чти «D.» относится здесь ко всей строке и поэтому указано под именем таблицы. В то же время «U.», относящееся к отдельному полю, должно указываться в теле таблицы, т. е. в отдельном ее столбце.
15.3.12. ВСТАВКА ОДНОЙ ЗАПИСИ
Добавить в таблицу Р деталь Р7 со следующими характеристиками: город «Атенс», вес 2, название и цвет в настоящее время неизвестны (пример 6.4.1):
Р | НОМЕР_ДЕТАЛИ | НАЗВАНИЕ | ЦВЕТ | ВЕС | ГОРОД |
I. | Р7 | | | 2 | Атенс |
Здесь «I.» аналогично «D.» в предыдущем примере указано под именем таблицы.
В заключение данного раздела следует заметить, что существуют некоторые запросы, которые могут быть сформулированы в SQL, но не выражаются в QBE, по крайней мере с помощью его реализации в QMF. Так, в QBE не предусмотрены какие-либо диалоги следующих конструкций SQL:
– NOT EXISTS
– стандартных функций (SUM, AVG и т. д.)
– GROUP BY и HAVING.
Эти опущения не имеют столь важного значения: NOT EXISTS и HAVING необходимы лишь для весьма сложных запросов; а результатов, получаемых с помощью GROUP BY и стандартных функций, можно во всяком случае достигнуть более легким образом, используя возможности генерации отчетов QMF.
15.4. СРЕДСТВО DATA EXTRACT (DXT)
DATA EXTRACT (извлечение данных)—DXT—не является частью ни QMF, ни DB2. Это другой, поставляемый за отдельную плату, программный продукт. Однако на практике установка, на которой DXT используется для извлечения данных, будет, вероятно, использовать также и QMF для того, чтобы запрашивать и обновлять эти извлеченные данные, а также формировать по ним отчеты. Поэтому удобно включить в данную главу краткое описание DXT.
Задача DXT заключается в том, чтобы извлечь некоторую копию специфицированных данных из базы данных, управляемой языком DL/1, или из наборов данных SAM или VSAM и построить файл, содержащий эту извлеченную копию, в формате, который требуется утилитой загрузки системы DB2. (Примечание. DXT может генерировать также файлы в формате, необходимом для SQL/DS. Однако в этой книге мы имеем дело с DB2.) Тогда эти данные могут быть загружены в какую-либо таблицу базы данных системы DB2, где они могут далее использоваться в качестве основы деятельности, связанной с запросами, обновлениями и/или генерацией отчетов, адекватной конкретному приложению. Поэтому задача состоит, по существу, в том, чтобы обеспечить в интерактивном режиме доступ средствами SQL или QBE к данным, которые первоначально хранились в некоторой нереляционной форме. Поскольку такой доступ в интерактивном режиме направлен на извлечение данных, т. е. на формирование копии, он не является помехой другому использованию этих данных. В частности, он не влияет на эффективность любых запланированных, регулярно выполняемых по расписанию работ, оперирующих этими данными.
Примечание. Для обеспечения эффективности или по другим причинам даже для базы данных системы DB2 может оказаться целесообразным осуществлять в интерактивном режиме некоторые или все работы, связанные с запросами и генерацией отчетов, над извлеченными данными, а не над самой базой данных. Однако в таком случае процесс извлечения данных может быть реализован с помощью обычных средств самой системы DB2—фактически, предложений CREATE TABLE и INSERT для множества записей; не требуется никаких средств, подобных DXT.
DXT состоит из двух основных компонентов. Один из них дает пользователю возможность создавать запросы на извлечение данных, а другой фактически выполняет эти запросы. Первый компонент, называемый the User Input Manager (средство управления пользовательским вводом), может исполняться в интерактивном режиме под управлением TSO (более простой метод) или как обычное пакетное задание MVS. При этом средство управления диалогом, которое управляет интерактивным исполнением в среде TSO, поставляется фактически как часть продукта QMF, а не самого DXT. Второй компонент, the Data Extraction Manager (средство управления извлечением данных), исполняется одним из следующих способов:
— как пакетное приложение IMS — для извлечения данных из пакетных баз данных DL/1 и, по желанию, из наборов данных SAM или VSAM
— как приложение «пакетной обработки сообщений» (BMP — batch message processing) системы IMS — для извлечения данных из баз данных DL/1, используемых в интерактивном режиме, и, по желанию, из наборов данных SAM или VSAM
— как пакетное задание MVS — для извлечения данных из наборов данных SAM или VSAM.
Необязательный третий компонент DXT, the Dictionary Access Program (программа доступа к словарю данных) может оказывать помощь в процессе построения запросов на извлечение данных благодаря получению описаний исходных данных из словаря данных IBM DB/DC Data Dictionary, если это средство установлено.
В случае базы данных DL/1 данные можно извлекать из любого или из всех сегментов, принадлежащих одному иерархическому пути, и загружать их в одну таблицу системы DB2. При этом можно включать или исключать конкретные экземпляры сегментов в соответствии с предикатом, специфицированным в запросе на извлечение данных. Можно также по потребности включать или исключать конкретные поля сегментов.
УПРАЖНЕНИЯ
В следующих упражнениях нужно дать решения средствами Query-By-Example некоторых упражнений из глав 4—6. Повторим снова структуру используемой в них базы данных:
S (НОМЕР_ПОСТАВЩИКА, ФАМИЛИЯ, СОСТОЯНИЕ, ГОРОД)
Р (НОМЕР_ДЕТАЛИ, НАЗВАНИЕ, ЦВЕТ, ВЕС, ГОРОД)
J (НОМЕР_ИЗДЕЛИЯ, НАЗВАНИЕ, ГОРОД)
SPJ (НОМЕР_ПОСТАВЩИКА, НОМЕР_ДЕТАЛИ, НОМЕР_ИЗДЕЛИЯ, КОЛИЧЕСТВО)
Чтобы облегчить сравнение с вариантами решений в языке SQL, в каждом случае указывается номер первоначального упражнения из глав 4—6.
15.1. Выдать полный список деталей для всех изделий (упражнение 4.1).
15.2. Выдать упорядоченный список номеров поставщиков, поставляющих детали для изделия номер Л (упражнение 4.3).
15.3. Выдать номера изделий и города, где они изготавливаются, такие, что второй буквой названия города является «О» (См. подстрочное примечание к упражнению 4.7.— Примеч. пер.) (упражнение 4.7).
15.4. Выдать все триплеты «номер поставщика, номер детали и номер изделия» такие, что соответствующие каждому из них поставщик, деталь и изделие являются соразмещенными (упражнение 4.8).
15.5. Выдать номера деталей, поставляемых каким-либо поставщиком из Лондона (упражнение 4.11).
15.6. Выдать номера деталей, поставляемых каким-либо поставщиком из Лондона для изделия, изготавливаемого также в Лондоне (упражнение 4.12).
15.7. Выдать номера деталей, поставляемых для какого-либо изделия поставщиком, находящимся в том же городе, где изготавливается это изделие (упражнение 4.14).
15.8. Выдать номера изделий, для которых детали поставляются по крайней мере одним поставщиком не из того же самого города (упражнение 4.15).
15.9. Выдать все пары номеров деталей, таких, что некоторый поставщик поставляет обе указанные детали (упражнение 4.16).
15.10. Выдать номера поставщиков, поставляющих по крайней мере одну деталь, поставляемую по крайней мере одним поставщиком, который поставляет по крайней мере одну красную деталь (упражнение 5.5).
15.11. Выдать номера поставщиков, имеющих состояние меньше, чем у поставщика S1 (упражнение 5.6).
15.12. Построить упорядоченный список всех городов, в которых размещаются по крайней мере один поставщик, одна деталь или одно изделие (упражнение 5.25).
15.13. Изменить цвет всех красных деталей на оранжевый (упражнение 6.1).
15.14. Удалить все изделия из Рима и все соответствующие поставки (упражнение 6.4). 15.15. Вставить в таблицу S нового поставщика S10. Его фамилия и город — 'Уайт' и 'Нью-Йорк' соответственно, а состояние еще неизвестно (упражнение 6.5).
ОТВЕТЫ К НЕКОТОРЫМ УПРАЖНЕНИЯМ
15.1.
J | НОМЕР_ИЗДЕЛИЯ | НАЗВАНИЕ | ГОРОД |
P. | | | |
15.2.
SPJ | НОМЕР_ ПОСТАВЩИКА | НОМЕР_ ДЕТАЛИ | НОМЕР_ ИЗДЕлия | КОЛИЧЕСТВО |
Р. | Р.АО (1). | | J1 | |
15.3.
J | НОМЕР_ИЗДЕЛИЯ | НАЗВАНИЕ | ГОРОД |
| P. | | Р. P.LIKE '—0%' |
15.4.
S | НОМЕР_ ПОСТАВЩИКА | ГОРОД | | P | НОМЕР_ДЕТАЛИ | ГОРОД |
| _SX | _СХ | | | _РX | _СХ |
J | НОМЕР_ИЗДЕЛИЯ | ГОРОД | | | | | |
| _JX | _CX | | P. | _CX | _PX | _JX |
15.5.
SPJ | НОМЕР_ ПОСТАВЩИКА | НОМЕР_ДЕТАЛИ | | S | НОМЕР_ ПОСТАВЩИКА | ГОРОД |
| _SX | P. | | | _SX | Лондон |
15.6.
SPJ | НОМЕР_ПОСТАВЩИКА | НОМЕР_ДЕТАЛИ | НОМЕР_ИЗДЕЛИЯ |
| _SX | P. | _JX |
S | НОМЕР_ПОСТАВЩИКА | ГОРОД | | J | НОМЕР_ИЗДЕЛИЯ | ГОРОД |
| _SX | Лондон | | | _JX | Лондон |
15.7.
SPJ | НОМЕР_ ПОСТАВЩИКА | НОМЕР_ДЕТАЛИ | НОМЕР_ ИЗДЕЛИЯ | | S | НОМЕР_ ПОСТАВЩИКА | ГОРОД |
| _SX | P. | _JX | | | _SX | _CX |
-
J
НОМЕР_ИЗДЕЛИЯ
ГОРОД
_JX
_CX
15.8.
SPJ | НОМЕР_ ПОСТАВЩИКА | НОМЕР_ДЕТАЛИ | НОМЕР_ ИЗДЕЛИЯ | | S | НОМЕР_ ПОСТАВЩИКА | ГОРОД |
| _SX | P. | _JX | | | _SX | _CX |
-
J
НОМЕР_ИЗДЕЛИЯ
ГОРОД
_JX
_CX
15.9.
SPJ | НОМЕР_ ПОСТАВЩИКА | НОМЕР_ ДЕТАЛИ | | | | |
| _SX _SX | _PY _PZ | | P. | _PY | _PZ |
15.10.
SPJ | НОМЕР_ ПОСТАВЩИКА | НОМЕР_ ДЕТАЛИ | | P | НОМЕР_ ДЕТАЛИ | ЦВЕТ |
| P. _SY _SY | _PY _PY _PZ | | | _PY | Красный |
15.11.
S | НОМЕР_ПОСТАВЩИКА | СОСТОЯНИЕ |
| P. S1 | <_T1 _T1 |
15.12.
SPJ | НОМЕР_ ПОСТАВЩИКА | ГОРОД | | P | НОМЕР_ ДЕТАЛИ | ГОРОД |
| _SX | _СX | | | _PY | _CY |
J | НОМЕР_ ИЗДЕЛИЯ | ГОРОД | | | |
| _JZ | _СZ | | P. P. P. | _CX _CY _CZ |
15.14.
Сначала:
J | НОМЕР_ ПОСТАВЩИКА | НОМЕР_ ДЕТАЛИ | НОМЕР_ ИЗДЕЛИЯ | КОЛИЧЕСТВО |
D. | | | _JJ | |
J | НОМЕР_ИЗДЕЛИЯ | ГОРОД |
D. | _JJ | Рим |
Затем:
J | НОМЕР_ИЗДЕЛИЯ | НАЗВАНИЕ | ГОРОД |
D. | | | Рим |
15.15.
.S . | НОМЕР_ПОСТАВЩИКА | ФАМИЛИЯ | СОСТОЯНИЕ | ГОРОД |
1. | S10 | Уайт | | 'Нью-Йорк' |