Базы данных - Cache - статьи

Использование мастера связывания таблиц


Для создания в Caché таблиц, представляющих собой связи с таблицами “внешних” ODBC-источников предусмотрен мастер связывания таблиц (Link Table Wizard), который доступен из SQL-менеджер.

Рассмотрим по шагам создание link-таблицы Caché (будем считать, что вы уже зарегистрировали нужный DSN в Редакторе конфигурации). Для того, чтобы запустить мастер связывания таблиц откройте SQL-менеджер и перейдите к нужной области, в которой вы хотите создать вашу link-таблицу. Мастер доступен из меню SQL-менеджера (Рис. 4. SQL-менеджер Caché): Файл->Связать таблицу (или щелкните правой кнопкой мыши на пункте “Таблицы” для выбранного пакета и в контекстном меню выберите “Создать таблицу”, а затем “Связать таблицу”).

Рис. 4. SQL-менеджер Caché

В результате этих действий откроется мастер создания связей с “внешними” таблицами (Рис. 5), работа мастера заключается в выполнении определенной фиксированной последовательности шагов. Как видно из рисунка 5, на первом шаге мастера не нужно выполнять никаких действий, нажмите кнопку “Далее”.

Рис. 5. Первый шаг мастера

На втором шаге мастера (Рис. 6) отображается список источников данных, зарегистрированных в Caché (зарегистрированных Gateway-соединений). Выберите нужное Gateway-соединение и нажмите кнопку “Далее”.

Рис. 6. Второй шаг мастера

На третьем шаге мастера (Рис. 7) отображается список таблиц, доступных в выбранном источнике данных. Выберите нужную таблицу и нажмите кнопку “Далее”.

Рис. 7. Третий шаг мастера

Рис. 8. Четвертый шаг мастера

На четвертом шаге мастера (Рис. 8) отображается список столбцов выбранной таблицы “внешнего” ODBC-источника, укажите столбцы, которые должны присутствовать в новой таблице и нажмите кнопку “Далее”.

Пятый шаг мастера. Здесь вы можете отредактировать имена полей, если необходимо. Обратите внимание на то, что названия полей должны соответствовать синтаксису  Caché для свойств объектов, например, знаки подчеркивания недопустимы. Приведя имена столбцов создаваемой таблицы к нужному виду, нажмите кнопку “Далее”.


Рис. 9. Пятый шаг мастера

На шестом, заключительном шаге мастера вы можете указать, какое поле (поля) является первичным ключом и отредактировать имя таблицы Caché, которая будет создана мастером, и соответствующего данной таблице хранимого класса Caché. Имена таблицы и соответствующего ей класса не обязательно должны совпадать. Если, например, в вашем приложении в именах классов желательно придерживаться определенного стиля, или в приложении уже есть класс с данным именем, возможность изменять названия классов (и таблиц) может быть полезной. В том случае, если указанное имя класса содержит недопустимые, с точки зрения Caché символы (например, подчеркивания), Caché удалит эти символы из имени класса.

Рис. 10. Шестой шаг мастера

По окончанию работы мастера создается таблица Caché, данные которой физически расположены во “внешнем” источнике данных. Созданная link-таблица доступна из Caché SQL. Автоматически для созданной таблицы создается хранимый (Persistent) класс Caché, использующий GateWay-хранение. Объектами созданного класса можно пользоваться как обычно, т.е. можно описывать методы, вычислимые поля, суперклассы и т.д., но нельзя изменить схему GateWay-хранения. Впрочем, ничто не мешает добавить в описание класса альтернативные способы хранения. Когда вы сочтете нужным, можно будет поменять хранение с “внешнего” на “внутреннее” незаметно для окружающих.

Отличием от использования “внутренних” таблиц Caché является невозможность комбинировать в одном запросе “внутренние” (родные) и “внешние” таблицы.

Обратите внимание: если с обычными, “внутренними” таблицами вы сначала описываете хранимый класс, одной из проекций которого является SQL-представление, другими словами класс первичен, таблица вторична, то в случае с внешними таблицами все наоборот. Сначала вы описываете внешнюю таблицу с помощью мастера, затем автоматически создается новый класс, соответствующий новой таблице.

В Листинге 1 приведен пример класса, созданного с помощью мастера связывания таблиц.


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

Листинг 1 Class dbo.Manager Extends %Persistent [ ClassType = persistent, SqlRowIdPrivate, SqlTableName = Manager,
StorageStrategy = GSQLStorage ]

{
Parameter CONNECTION = "Managers,NOCREATE";
Parameter EXTERNALTABLENAME = "dbo.Manager";
Property Id As %Integer(EXTERNALSQLNAME = "Id")
[ SqlColumnNumber = 4, SqlFieldName = Id ];
Property Name As %String(EXTERNALSQLNAME = "Name",
MAXLEN = 50) [ SqlColumnNumber = 2, SqlFieldName = Name ];
Property OrdersAmount As %Integer
(EXTERNALSQLNAME = "OrdersAmount") [ SqlColumnNumber = 3, SqlFieldName = OrdersAmount ];
Index MainIndex On Id [ IdKey, PrimaryKey ];
Query ManagerInfo() As %SQLQuery
{
SELECT Id,Name,OrdersAmount FROM Manager
ORDER BY Name
}

}


Содержание раздела