Рефетека.ру / Информатика и програм-ие

Реферат: Cache': техника группировки

Cache': техника группировки

Евгений Каратаев

В этой статье рассмотрим техническую часть группировки данных. В качестве базы данных выберем СУБД Cache', поскольку в ней существует возможность самостоятельно использовать собственные структуры данных. Из общих слов на тему "зачем" можно сказать, что типа такие задачи возникают при составлении отчетов, что это очень важно, не всегда понятно, и прочее. Все вопросы на тему "зачем" в дальнейшем будем опускать и займемся вопросом "как". А именно, как сделать так, чтобы работало, работало хорошо и чтобы было понятно, какие возможности предоставляет техника группирования.

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

Отдадим должное методологии и опишем, в чем заключается операция группирования. Группировка в общих словах - это операция выборки данных в таком виде, в котором значения колонок рассматриваются в качестве критерия объединения строк - строки с одинаковыми значениями в группирующих колонках объединяются в одну строку.

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

Создадим тестовые данные скриптом вида:

create(n)

  s:'$d(n) n=100

  s:(n

Рефетека ру refoteka@gmail.com