Перечень статей   Choose language


Свои представления вместо чужих, путь второй:
клиент, перемещающийся по схеме базы


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

В клиенте можно редактировать записи, добавить новые, удалять записи [4]. А нажатие кнопки "Choice" на некоторой записи после эстафетного перехода возвращает к отображению предыдущей таблицы и копированию первичного ключа выбранной записи в ссылающееся поле предыдущей записи. Такой подход позволяет обойтись вообще без программиста - пользователь просто путешествует по базе данных, в которой ничего не запрограммировано [5]. Для удобства пользователя: Таблица может быть отображена одним из трех способов: с подстановкой значения из другой таблицы вместо ссылающегося поля в теле или в заголовке таблицы, а при наличии ссылки из таблицы на саму себя - с демонстрацией ее как таблицы или как дерева (способ указывается в системной таблице [7]).

Весь период времени работы программы-клиента является одной длинной транзакцией. При выходе из программы она спросит, сохранить или откатить изменения, сделанные в течении ее работы. Кроме того, каждый экран программы является точкой останова (savepoint) СУБД: нажимая кнопку "Back", пользователь не только возвращается на предыдущий экран, но и откатывает все изменения, сделанные в последнем экране [8]. Также для его удобства, программе-клиенту желательно:

Пользователь создаст свою схему базы быстрее, чем настроит чужое ПО. А программировать для заполнения схемы вообще не нужно.

[1] Таблица отображается со скроллингом, колонка первичного ключа не демонстрируется. В системной таблице СУБД указана таблица, отображаемая сразу после загрузки программы-клиента - клиент считывает ее название из системной таблицы и запрашивает именно ее

[2] Термин берет свое происхождение со с.9 pdf-документа

[3] Термин берет свое происхождение со с.8 pdf-документа

[4] Таким образом программа-клиент должна иметь в своем меню кнопки "Add" и "Del"

[5] Поле представления (view) A ссылается на ту же самую колонку некой таблицы C, на которую ссылается поле таблицы B, вошедшее в представление

[6] С.50 pdf-документа рассказывает подробнее о необходимой SQL-конструкции

select * from ... order by ... downward ... ;

[7] Способ отображения указывается для каждой таблицы в системной таблице СУБД. Если таблица должна быть представлена как дерево, и она имеет несколько полей, ссылающихся на нее саму, то поле, которое должно быть использовано для построения дерева, также указывается в системной таблице

[8] Программа-клиент расставляет точки останова в СУБД перед переходом к каждому следующему экрану. Кнопка "Choice" не откатывает транзакцию, т.е. не откатывает изменения, сделанные в окне (как сделанные сразу, так и сделанные после нажатия кнопки "All")


P.S.

Невидимость некоторых записей для оператора SELECT достигается введением в таблицу поля перечислимого (целого) типа и изложена подробно на с.148, 187-190 pdf-документа и в отдельной статье. Невидимость некоторых колонок таблицы для оператора SELECT достигается выражением вида "REVOKE select ON TABLE tab/@fld TO username".

Предложения по реализации браузера, перемещающегося по схеме базы данных, вы можете видеть в следующих документах отдельного проекта:



Тюрин Дмитрий, dmitryturin@yandex.ru



Перечень статей   Choose language


Используются технологии uCoz