Приветствую Вас, Гость
Главная » Статьи » Разработка баз данных FileMaker

Алгоритмы, применяемые в СУБД FileMaker.

Алгоритмы, применяемые в СУБД FileMaker.

 

1. Некоторые принципы имен полей в таблице базы данных, принципы имен полей.

Сведения данного раздела написаны на основе опыта разработки баз данных, являются субъективным мнением автора статьи.

 

1.1. Обязательные поля, которые желательно иметь в каждой таблице базы.

 

tp_ID - уникальный номер записи. Тип поля – NumberAuto-Enter,  Serial number;
tp_ID_Created, tp_ID_Modified – для записи аккаунтов создателя записи, редактора записи. Тип полей – Text, Auto-Enter, Creation – Account Name (Modification – Account Name для tp_ID_Modified);
Date_Created, Date_Modified - – для записи соответственно дат создания и редактирования записиТип полей – TimeStamp, Creation – TimeStamp (Modification – TimeStamp для Date_Modified);
pr_true – тип поля – Number, AutoEnter, Data = 1, автозаполнение единицами (часто используется для выборки активных элементов из различных списков);
count_record – тип поле Summary = Count of tp_ID (подсчет числа записей в таблице или в выборке).

 

1.2. Некоторые принципы имен полей.

 

tp_ID - уже говорилось выше, уникальный номер записи в таблице; 
tp_ID_Project - ссылка из текущей таблицы на таблицу Project (к примеру);
Project_Text - вычисляемое поле из связанной таблицы Project (например = Project::small_name). Т.е. если в таблице есть ссылка на связанную таблицу, то логично иметь такое вычисляемое поле. 
full_name, small_name - полное и краткое наименование.

 

2. Использование цикла типа Loop – End Loop

 

2.1. Простой перебор записей в текущей таблице.

 

Freeze Window // логично использовать при большом числе записей для ускорения процедуры

Go to Record/Request/Page [First]  // переход на первую запись

Loop  //начало цикла

Set Field [ ]  // в общем случае набор операций для работы с записью

Commit Records/Requests [No dialog]  // подтверждение записи

Go to Record/Request/Page [Next; Exit after last] // переход на следующую записьВыход после последней записи.

End Loop

 

2.2. Расстановка дат и номеров в порядке увеличения.

 

Set Variable [$nValue:1]  // присваиваем начальное значение переменной

Set Variable [$dateValue:GetAsDate ( "01.01.2010" )] // присваиваем начальное значение переменной для даты

Go to Record/Request/Page [First]

Loop

Set Field[Таблица::tp_ID; $n]   // присваиваем значение поля

Set Field [Таблица::Дата; $date]   // присваиваем значение поля даты

Commit Records/Requests [No dialog]

Set Variable [$nValue:$n + 1]  //увеличиваем значение переменной

Set Variable[$dateValue:$date + 1] //увеличиваем значение переменной для даты

Go to Record/Request/Page [Next; Exit after last]

End Loop

 

2.3. Дублирование записи вместе с записями в связанной таблице.

 

Исходные данные: в базе имеются таблицы: Таблица и Связ_Таблица. В Связ_Таблице поле Связ_Таблица::tp_ID_Основ для связи с основной таблицей.

Задача: дублировать запись в основной таблице вместе с данными в связанной таблице.

 

Set Variable [$nValue:1]  // устанавливаем начальное значение счетчика

Go to Portal Row [Select; First] // переход на первую запись портала

  Loop  // перебираем записи в связанной таблице, формируем массив переменных

  Set Variable [$pole_1[$n]; Value:Связ_Таблица::Поле_1]

  Set Variable[$pole_2[$n]; Value:Связ_Таблица::Поле_2]

  Go to Portal Row [Select; Next; Exit after last]

  Set Variable [$n; Value:$n + 1]

  End Loop

Commit Records/Requests [No dialog]

Duplicate Record/Request  //дублируем запись в основной таблице

Set Variable [$id_newValue:Таблица::tp_ID] //считываем ID новой записи в переменную

New Window[Height:50; Width: 50] // в новом окне переходим на Макет связанной таблицы

Go to Layout ["Связ_Таблица” (Связ_Таблица)]

Set Variable [$repeatValue:1] // устанавливаем значение нового счетчика

  Loop  // в цикле формируем новые записи связанной таблицы

  New Record/Request

  Set Field[Связ_Таблица::tp_ID_Основ; $id_new]

  Set Field [Связ_Таблица::Поле_1; $pole_1[$repeat]]

  Set Field [Связ_Таблица::Поле_2; $pole_2[$repeat]]

  Commit Records/Requests [No dialog]

  Set Variable[$repeat; Value:$repeat + 1]

  Exit Loop If [$repeat > $n]  // выходим, если значение нового счетчика превысит значение первого счетчика

  End Loop

Close Window [ Current Window ] // закрываем окно

Commit Records/Requests [No dialog]  // подтверждаем все изменения

 

3. Использование логических образов таблиц в системе FileMaker.

 

Для разработки комплексной структуры базы данных в системе FileMaker используются логические образы таблиц. У многих читателей статей возникают вопросы в связи с использованием логических образов таблиц. Кратко рассмотрим область применения таких структур.

 

Предположим, в нашей БД появился справочник, включающий в себя справочник периодов, групп и статей.

Таким образом, начальная структура выглядит:

 

 

Для организации связtq добавляем в Таблицу поля :

tp_ID_Группа – номер группы из справочника

tp_ID_Период – номер периода из справочника

tp_ID_Статья – номер статьи из справочника

 

Далее, создаем логические образы таблицы Справочник.

Для этого выделяем таблицу Справочник и нажимаем кнопку Дублировать. Создается логический образ с именем Справочник 2. Переименуем его в Группа_Таблица. Аналогично создаем образы с именами Статья_ТаблицаПериод_Таблица.

 

Для информации: обычно имена логических образов формируются следующим методом:

- для таблиц-справочников – [Имя_Поля_Справочника]_[Имя_Таблицы_Основной] (примеры Группа_Таблица, Статья_Таблица)

- для просто связанных таблиц – [Имя_Связ_Таблицы]_[Имя_Основной_Таблицы] (примеры Проект_Таблица)

 

Итак, продолжим.

Организуем связи:

а) Таблица::tp_ID_Группа – Группа_Таблица::tp_ID

б) Таблица::tp_ID_Период – Период_Таблица::tp_ID

в) Таблица::tp_ID_Статья – Статья_Таблица::tp_ID

 

В результате получаем структуру:

 

 

И, наконец, создаем наши вычисляемые поля:

- Группа_Text = Группа_Таблица::Группа

- Период_Text = Период_Таблица::Период

- Статья_Text = Статья_Таблица::Статья

 

 

 

Категория: Разработка баз данных FileMaker | Добавил: mihalych_2013 (01.01.2014)
Просмотров: 1197 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: