- •Вопросы к экзамену по дисциплине «бд и субд»
- •Раскройте понятие базы данных. Перечислите и раскройте функции субд.
- •Функции субд:
- •Ранние подходы к организации субд.
- •Дайте определение термина «модель данных». Сформулируйте преимущества и недостатки иерархической модели данных и охарактеризуйте их.
- •Дайте определение термина «модель данных». Охарактеризуйте сетевую модель данных.
- •Преимущества
- •Недостатки
- •Дайте определение термина «модель данных». Охарактеризуйте объектно-ориентированную модель.
- •Дайте определение термина «модель данных». Охарактеризуйте многомерную модель данных.
- •Дайте определение термина «модель данных». Охарактеризуйте постреляционную модель данных.
- •Дайте определение термина «модель данных». Сформулируйте преимущества и недостатки реляционной модели данных.
- •Назовите элементы реляционной модели данных. Опишите условия, при которых таблица считается отношением.
- •Раскройте понятия: индексирование, связывание таблиц. Дайте характеристику бинарному типу связей между таблицами.
- •Дайте определение термина «ключ». Перечислите и охарактеризуйте виды ключей.
- •Перечислите и опишите типы отношений между таблицами.
- •Раскройте понятия: простой, составной индекс. Перечислите типы индексов в foxpro.
- •Выскажите общие суждения о нормализации данных. Объясните необходимость нормализации.
- •Перечислите и охарактеризуйте операции реляционной алгебры:
- •Приведите классификацию программ, относящихся к субд. По модели данных:
- •По архитектуре субд и организации хранения данных:
- •По способу доступа субд к базе данных:
- •Транзакции. Управление транзакциями.
- •Функции и основные возможности языка sql. Лекция 13. Язык sql. Функции и основные возможности
- •13.1. Sequel/sql субд System r
- •13.1.1. Запросы и операторы манипулирования данными
- •13.1.2. Операторы определения и манипулирования схемой бд
- •13.1.3. Определения ограничений целостности и триггеров
- •13.1.4. Представления базы данных
- •13.1.5. Определение управляющих структур
- •13.1.6. Авторизация доступа к отношениям и их полям
- •13.1.7. Точки сохранения и откаты транзакции
- •13.1.8. Встроенный sql
- •13.1.9. Динамический sql
- •Перечислите и дайте краткую характеристику объектам субд foxpro.
- •Опишите процесс создания проекта и базы данных в foxpro. Перечислите и охарактеризуйте типы полей в foxpro, соглашение по именам переменных.
- •Прокомментируйте этапы создания и редактирования таблиц в foxpro.
- •Опишите процесс определения отношений между таблицами и обеспечения целостности данных.
- •Перечислите характеристики объектно-ориентированного программирования.
- •Дайте характеристику многоколончатым отчётам и отчётам в свободной форме.
- •Выскажите суждение об использовании ole-объектов, каким образом осуществляется экспорт и импорт данных.
- •Выскажите суждение об использовании библиотек классов при разработке приложений.
- •Выскажите суждение об использовании active-X компонентов для разработки приложений.
- •Опишите создание классов.
- •Назовите типы справки в foxpro. Прокомментируйте этапы создания справочной системы.
- •Опишите процесс создания приложения.
- •Перечислите типы отчетов. Изложите способы создания отчётов.
- •Раскройте возможности использования библиотек классов при разработке приложений.
- •Охарактеризуйте 1nf, 2nf, 3nf.
- •Опишите процесс создания программ в foxpro, организации процедур и функций.
- •Перечислите операторы и выражения. Опишите их использование.
- •Раскройте понятия «переменная», «константа». Опишите область действия переменных.
- •Перечислите и опишите команды открытия, закрытия таблиц и перемещения по записям.
- •Дайте характеристику фильтрации данных в foxpro.
- •Изложите способы упорядочивания записей и поиска с помощью индексирования.
- •Укажите назначение форм. Прокомментируйте процесс создания экранных форм различными способами.
- •Поясните термин «форма». Объясните использование элементов управления на форме, размещение полей из нескольких таблиц.
- •Перечислите и опишите типы запросов. Охарактеризуйте возможности запросов, вызывающих изменения в таблицах базы данных. Опишите процесс создания визуальных запросов.
- •Перечислите команды манипулирования данными языка sql. Опишите создание sql-запросов: выборка данных с использованием группировки, условия выборки и условия поиска.
- •Создание базовых запросов на выборку в режиме конструктора
- •Объединение запросов на выборку в режиме sql
- •Приведите пример использования команды select при создании запросов. Опишите создание sql-запросов: изменение, вставка и удаление записей.
- •Опишите создание итоговых запросов, перекрёстных таблиц, диаграмм.
- •Перечислите типы отчетов. Изложите способы создания отчётов. Поясните термин «многотабличный отчет», опишите способы его создания.
- •Дайте характеристику многоколончатым отчётам и отчётам в свободной форме.
- •Поясните термин «представление данных». Прокомментируйте этапы создания представлений данных.
- •Опишите способы использования представлений данных в отчётах и для редактирования информации. Прокомментируйте этапы создания меню приложения.
- •Объясните использование grid-объектов при создании многотабличных форм.
- •Охарактеризуйте объекты pageframe и formset для организации интерфейса.
- •Перечислите свойства таблицы. Охарактеризуйте проверку условий достоверности ввода данных.
- •Прокомментируйте процесс создания триггеров и хранимых процедур. Предложение create trigger
- •Механизм доступа к данным bde.
- •Технология interbase express.
- •Технология dbexpress.
- •Раскрыть понятие архитектуры «клиент-сервер».
- •Преимущества архитектуры «клиент-сервер».
- •Трехзвенная архитектура.
Поясните термин «форма». Объясните использование элементов управления на форме, размещение полей из нескольких таблиц.
Форма. Объект, содержащий элементы управления и используемый для ввода и просмотра информации, находящейся в одной или нескольких связанных таблицах.
Форма в чистом виде, без элементов управления и данных, которыми она должна манипулировать, интереса не представляет. Поэтому любая форма создаётся именно с целью оперирования данными с помощью элементов управления, включаемых в форму. Данные в VFP хранятся, естественно, в таблицах и подключаются к форме с помощью специального объекта Data environment. Рассмотрим последовательность событий при запуске формы, но останавливая внимание пока только на событиях самой формы. Объект - Событие
Data environment - BeforeOpenTables
Form set - Load
Form - Load
Data environment cursor(s) - Init
Data environment - Init
Objects - Init
Form - Init
Form set - Init
Form set - Activate
Form - Activate
Object - When
Form - GotFocus
Object - GotFocus
Form - QueryUnload
Form - Destroy
Object - Destroy
Form - Unload
Form set - Unload
Data environment - AfterCloseTables
Data environment - Destroy
Data environment cursor(s) - Destroy
Load() – первое в последовательности событий объекта форма. В этом событии ни один элемент лежащий на форме еще не родился и там бессмысленно помещать код вроде this.text1.value=’я’. Это событие рекомендуется использовать для выполнения настроек среды окружения. Особенно это актуально при использовании приватных сессий данных (этот вопрос рассмотрим ниже). Также, тут имеет смысл осуществить открытие таблиц и баз данных, не включаемых в объект Data environment.
RETURN .F. в событии Load() отменяет дальнейшую загрузку формы. Если форма имеет private data session все открытые таблицы и полученные курсоры закрываются.
Init() – событие при создании формы. Следует учесть, что элементы управления, помещённые на форму, создаются раньше формы, то есть событие Init() элементов происходит раньше, и поэтому в событии Init() формы уже можно обращаться к элементам управления формы. Включив оператор LPARAMETERS в событие формы, можно осуществить возможность передачи в неё параметров. Стоит заметить, что видимость этих переменных-параметров дальше события Init() не распространяется. Поэтому в случае необходимости стоит присвоить значения параметров созданным вами свойствам формы. Приведем пример достаточно типовой ошибки, переменные переданные в Init() используются в выражении для фильтра на какую либо таблицу , участвующую в работе формы. Естественно, после срабатывания события переменных уже нет, и фильтр становиться не работоспособным, так как его значение вычисляется в момент перемещения по записям. Если необходимо, создание и соответственно запуск формы можно прекратить, выполнив команду RETURN .F. Это удобно, например, для организации допуска к формам разным пользователям или проверки верности условий запуска формы, без правильности которых, далее форма не сможет верно функционировать.
Activate() – активирование формы действиями пользователя, таким как щелчок мышью , или же когда вызывается метод SHOW() формы. Это событие при работе формы может срабатывать много раз, и иногда код, помещенный в него, может доставить разные проблемы. Скажем, там будет написан какой либо sql select
Выполнили из формы печать отчета, вернулись в форму, событие снова отработало, и явно помешало работе элементов формы, скажем гриду, чьим источником может быть курсор sql select. Рекомендуем, если нет возможности помещения кода в это событие, проверять необходимость повторного запуска кода в нем, скажем, таким образом -
If not this.old
This.DoSomething
This.old=.t.
endif
Не менее коварным может быть и элементарный код , помещенный в антипода упомянутого события – DEACTIVATE - которое тоже может многократно сработать. Куда смещается фокус из формы- в тулбар, просмотр отчета или в иное место, в этом событии неизвестно. Вот в отчете неожиданно становится видна одна запись вместо нескольких, а все потому, что в указанном событии написали всего одну строку - SELECT MyTable. Особенно кишат такими проблемами страничные формы, с кодами в указанных событиях на страницах: хотели указать алиас при смене страницы, когда пользователь остается на форме, а он в отчет пошел, и выбил у него табуретку из под него этим кодом.
GotFocus() – получение фокуса
Далее форма работает, и на ней могут срабатывать самые разные события, как то: нажатие клавиш, обновление содержания, перерисовка и другие. Пока опустим описание этих событий. При разгрузке формы формы происходят другие события
QueryUnload() – это событие происходит при выполнении команд CLEAR WINDOWS, RELEASE WINDOWS или QUIT, а также при нажатии на крестик окна формы. Стоит отметить, что это событие не происходит при выполнении метода RELEASE() формы. Для того чтобы предотвратить закрытие формы исходя из необходимых разработчику условий , достаточно выполнить команду NODEFAULT в этом событии.
Destroy() – происходит при уничтожении объекта
Unload() – это последнее из событие в последовательности перед уничтожением формы, происходит после освобождения всех объектов включённых в форму. Все элементы управления, включённые в форму, в этом событии формы уничтожены и недоступны.
При использовании Default data session в форме именно в этом событии стоит закрыть таблицы, открытые с использованием команды USE , а также полученные курсоры.
Если форма модальна, используя команду RETURN можно вернуть значение переменной из формы
Для размещения в отчете поля, которое может быть полем таблицы или вычисляемым полем, выполните следующие действия:
Нажмите кнопку Field (Поле) на панели инструментов Report Controls (Элементы управления отчета).
Щелкните мышью в месте предполагаемого размещения поля в окне конструктора отчета.
В открывшемся диалоговом окне Report Expression (Выражение отчета) укажите для поля источник данных, формат, условие, при котором поле будет выводиться на печать.
Завершив установку параметров, нажмите кнопку ОК.