- •Вопросы к экзамену по дисциплине «бд и субд»
- •Раскройте понятие базы данных. Перечислите и раскройте функции субд.
- •Функции субд:
- •Ранние подходы к организации субд.
- •Дайте определение термина «модель данных». Сформулируйте преимущества и недостатки иерархической модели данных и охарактеризуйте их.
- •Дайте определение термина «модель данных». Охарактеризуйте сетевую модель данных.
- •Преимущества
- •Недостатки
- •Дайте определение термина «модель данных». Охарактеризуйте объектно-ориентированную модель.
- •Дайте определение термина «модель данных». Охарактеризуйте многомерную модель данных.
- •Дайте определение термина «модель данных». Охарактеризуйте постреляционную модель данных.
- •Дайте определение термина «модель данных». Сформулируйте преимущества и недостатки реляционной модели данных.
- •Назовите элементы реляционной модели данных. Опишите условия, при которых таблица считается отношением.
- •Раскройте понятия: индексирование, связывание таблиц. Дайте характеристику бинарному типу связей между таблицами.
- •Дайте определение термина «ключ». Перечислите и охарактеризуйте виды ключей.
- •Перечислите и опишите типы отношений между таблицами.
- •Раскройте понятия: простой, составной индекс. Перечислите типы индексов в 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.
- •Раскрыть понятие архитектуры «клиент-сервер».
- •Преимущества архитектуры «клиент-сервер».
- •Трехзвенная архитектура.
Охарактеризуйте 1nf, 2nf, 3nf.
Нормальная форма — свойство отношения в реляционной модели данных, характеризующее его с точки зрения избыточности, которая потенциально может привести к логически ошибочным результатам выборки или изменения данных. Нормальная форма определяется как совокупность требований, которым должно удовлетворять отношение.
Отношение находится в первой нормальной форме (1НФ) тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов.
В реляционной модели отношение всегда находится в первой нормальной форме по определению понятия отношение. Что же касается различных таблиц, то они могут не быть правильными представлениями отношений и, соответственно, могут не находиться в 1НФ.
Отношение находится во второй нормальной форме, если оно находится в первой нормальной форме, и при этом любой его атрибут, не входящий в состав потенциального ключа, функционально полно зависит от каждого потенциального ключа. Функционально полная зависимость означает, что атрибут функционально зависит от всего составного потенциального ключа, но при этом не находится в функциональной зависимости от какой-либо из входящих в него частей. Или другими словами: в 2NF нет неключевых атрибутов, зависящих от части составного потенциального ключа.
Второе важное значение второй нормальной формы состоит в том, что она по определению запрещает наличие неключевых атрибутов, которые вообще не зависят от потенциального ключа. Таким образом, 2NF запрещает создавать отношения как несвязанные (хаотические, случайные) наборы атрибутов.
Отношение находится в 3NF тогда и только тогда, когда выполняются следующие условия:
Отношение находится во второй нормальной форме;
Каждый неключевой атрибут отношения находится в нетранзитивной (то есть прямой) зависимости от потенциального ключа.
Таким образом, отношение находится в 3NF тогда и только тогда, когда оно находится во 2NF и отсутствуют транзитивные зависимости неключевых атрибутов от ключевых. Транзитивной зависимостью неключевых атрибутов от ключевых называется следующая: {A} → {B} и {B} → {C}, где {A} — потенциальный ключ, {B} и {С} — различные множества неключевых атрибутов.
Опишите процесс создания программ в foxpro, организации процедур и функций.
Для создания программы в среде FoxPro для начала необходимо открыть специальное окно, для этого надо выбрать пункт меню File - New... - далее выбрать тип файла Program и нажать ОК. После этого, в среде FoxPro появиться новое окно - это и есть окно программы, которое заполняется программным кодом:
Программы сохраняются в файл (File - Save) с расширением "prg", имя может быть любым, состоящим обязательно из латинских букв и длинной не более 8 (восьми) символов; например - prog_001.prg (здесь знак "_" тоже считается символом).
Компиляция программы выполняется с помощью пункта меню Program - Compile, в случае если программа написана без ошибок, и соответственно нет ошибок компиляции, появится следующее сообщение - " 0 Compilation errors".
Для запуска программы используем пункт меню - Program - DO (или Ctrl+D), выбирается соответствующий файл, в которые сохранена программа, и программа запускается.
Напомню, что изначально файл с программой имеет расширение prg и является по сути обычным текстовым файлом, доступным для редактирования текстовым редактором. Для того, чтобы написанную и отлаженную программу сделать полноценным приложением с расширением EXE, необходимо выполнить следующее - File - New - Project - OK , далее нажимаем add (выбираем наш файл с расширением prg) - Build - ● Build Executable -● Compact - OK - выбираем место для сохранения EXE приложения, имя будущего приложения и жмем -Save - Build. Приложение готово.
Процедуры и программы по сути своей одно и тоже. Обычно процедура начинается ключевым словом PROCEDURE, что показывает компилятору что это и есть процедура. Заканчивается процедура словом RETURN, что завершает выполнение процедуры и возвращает управление в вызываемую программу. Обычно имя процедуры и имя файла, в котором она хранится, совпадают. Однако, можно с одном файле разместить несколько процедур, что даст нам процедурный файл. Особой разницы, как хранить процедуры вместе или врозь, в отдельных файлах, нет.
При построении проекта они все равно будут объединены в файл приложения, поэтому мы рекомендуем оформлять разные процедуры разными файлами, так легче с ними работать. Процедура может быть вызвана из любого места программы или другой процедуры, выполниться и вернуться в вызывающую программу.
Самая верхняя процедура обычно называется главной (стартовой) программой и, собственно, и есть основной единицей Вашего приложения (хотя это и необязательно, как мы покажем ниже). При вызовах процедуры может случиться так, что какая-то процедура (или функция) вызывает саму себя. Это называется рекурсией. С рекурсией в VFP следует обращаться крайне осторожно. VFP поддерживает до 128 рекурсивных вызовов, не более, поэтому мы настоятельно рекомендуем не пользоваться рекурсивными вызовами.
Процедура может принимать при ее вызове параметры от вызывающей программы. Параметры могут объявляться как частные переменные (ключевое слово PARAMETERS) или как локальные переменные (ключевое слово LPARAMETERS). Как именно объявлять параметры дело Вашего вкуса. Число передаваемых параметров может быть меньше, чем число объявленных параметров. В этом случае "лишние" параметры процедуры инициализируются в значение false (.F.). Пример оформления процедуры:
Procedure MyProc
parameter nScope
? "Число pi="+str(nScope)
return
Соответственно вызов этой процедуры выглядит так:
Do MyProc with 3.14
Программа, дойдя до оператора Do MyProc, произведет поиск файла myproc.prg (или откомпилированного myproc.fxp) и произведет вызов этой процедуры. При вызове переменной-параметру nScope будет передано значение 3.14, и начнет исполняться процедура, пока не будет достигнут конец файла myproc.prg или не будет встречен оператор RETURN. При этом управление будет передано на следующий оператор после Do MyProc.
Наборы процедур можно хранить в одном файле, что дает нам процедурный файл. В этом случае вызов выглядит так:
Do MyProc with 3.14 in MyProcFile,
где MyProcFile имя процедурного файла.
Функции очень похожи на процедуры, за исключением двух ключевых моментов:
Функции могут вызываться из выражения, а не только прямым вызовом DO;
Функции могут возвращать результат своей работы;
То есть, можно сказать и так, если процедура что-то выполняет, то функция что-то вычисляет и сообщает об этом вызывающей программе. Конечно же, это деление весьма условно, и, как мы убедимся, более удобно использовать функции.
функция начинается ключевым словом FUNCTION и завершается словом RETURN. После RETURN обычно следует переменная или выражение, которое будет возвращено вызывающей программе. Если это выражение отсутствует или отсутствует само ключевое слово RETURN, то предполагается возврат логического выражения .T. (истина).
Пример функции, которая вычисляет что-то:
FUNCTION MyFUNC
PARAMETER X, Y, Z
LOCAL Result
Result=x+y+z
RETURN Result
Вызов этой функции может быть таким:
MyVar = MyFunc(MyParam1, MyParam2, MyParam3)
или таким:
Something = MyFunc(Param1) + MyFunc(Param2)
или даже так:
=MyFunc()
Как видно, во втором и третьем случае число передаваемых в функцию параметров меньше, чем объявлено в самой функции. Это не ошибка, "лишние" параметры принимаются как переменные логического типа со значением .F. (ложно). Этот момент следует учитывать,
Число переданных параметров в функции всегда можно узнать с помощью функции PARAMETERS(), или проверить параметры функцией EMPTY(), которая вернет .T., если выражение, переданное в нее, является пустым (то есть, .F. или пустая строка или 0 или пустая дата или NULL)
В последнем примере видно как функция вызывается без фиксации возвращаемого результата (кстати говоря, тут и сам знак = не нужен, но так читабельнее). То есть в этом случае, возвращаемый результат нигде не сохраняется. В этом случае, функция ведет себя как типичная процедура, выполняя что-то, а не вычисляя. Кстати, большинство функциональных возможностей VFP реализовано именно как функции.
Далее мы увидим, что методы классов тоже реализуются именно как функции. Функции, определенные Вами, в VFP называются User Defined Function, то есть функции, определенные пользователем. UDF это очень мощный инструмент структурного программирования.
