1 Интерфейс VFP 9.0 Тема 2. Конструкторы таблиц
1 Интерфейс VFP 9.0 Тема 2. Конструкторы таблиц и баз данных Table Designer и Database Designer
2 Общее окно, контекстные меню и панель инструментов Слева - общее окно конструктора БД c панелью инструментов, контекстным меню и окном сессии данных. Внизу - контекстное меню при выборе таблицы. (Collapse – заменяется на Expand для свернутой таблицы). При открытии конструктора появляется соответствующее меню (справа). Пока не выделена таблица, подгруппа пунктов 2 и 3 и последнего - недоступна. Связи. Пункт Edit Relationship доступен только после выделения связи. Ключи. Вид зависит от типа ключа
3 Редактирование полей таблицы Поля выбираются по первой букве. Для формирования выражений можно применять построитель выражений (многоточия) Поле Rule – Logic, остальные -текст, или выбор файла. Format - форматирование всего поля, mask – посимвольный формат.
4 Построитель выражений Применяется, когда надо задать выражение
5 Выбор типа полей Значение Null – Полей и комментариев. Здесь же – порядок сортировки
6 Выбор типа индексов Primary – первичный ключ, Regular - вешний
7 Задание свойств таблицы Триггеры. Псевдонимы. Правила. Комментарии
8 Настройка целостности: модификация
9 Настройка целостности: удаление
10 Настройка целостности: вставка
11 Работа с таблицами: общий вид
12 Работа с таблицами: меню Для вставки поля типа General: Выбираем поле Двойной щелчок или Ctrl + Page Down. Появляется поле редактирования В пункте меню Edit выбрать пункт «Insert Object» В открывшейся форме выбрать тип объекта и создать его или выбрать нужный файл и при необходимости – задать флажок «связь» и выбрать значок
13 Работа с таблицами: поиск, удаление, обновление Выбор диапазона для Scope All – все записи Next # заданное число, 1 – только текущая Rest – от текущей до конца Record # - указанная запись
14 Работа с таблицами: изменение полей, свойства таблицы, фильтр полей
15 Задание временных связей: выбор таблиц Задать индекс на дочерней таблице (можно и позже) Выбрать родительскую таблицу Выбрать дочернюю таблицу, задать индекс, если не задан Задать выражение в родительской таблице для сравнения с индексом
16 Просмотр временных связей
17 Задание к работе 4: Конструктор БД По разработанной логической модели реляционной БД создать эту БД в среде VFP 9.0 использую лицензионную версию, имеющуюся в вузе Для имеющихся в БД связей задать условия целостности по ссылкам Внести в БД минимальный набор записей, позволяющий проверить все заложенные в БД виды связей и структуры данных Научиться пользоваться окном Browse для просмотра, создания и редактирования записей различных типов, включая поля Memo и General – типов Научиться создавать и просматривать через окна Browse временные связи и убедиться в наличии таких связей для внесенных данных Убедиться на практике в работе механизма поддержания целостности путем каскадирования или запрета изменений Примечание: При внесении данных надо избегать внесения бессмысленной информации, типа фамилия = “@3jhhgЭ”, так как это затруднит в дальнейшем отслеживание правильности работы связей и запросов. Для упрощения применения к таблицам команд не используйте в настройках таблицы заголовки для полей, которые могут быть задействованы в выражениях для отбора данных Данные в дочерние таблицы вносить либо до настройки целостности, но лучше, во избежание ошибок, после, с применением команды Inset into <имя таблицы> (<имя поля - внешнего ключа>) Value (значение этого поля>). Если таких полей несколько, вводить их и значения списком, через запятую
18 Вопросы по работе №4: поля Для чего нужны пункты меню Database? Краткое назначение каждого пункта. Перечислить местонахождение в системном меню пунктов, связанных с разработкой базы данных, используемых для этого помощников и панелей инструментов. Какие типы полей используются в таблицах VFP? Какие данные могут храниться в полях таблицы типа General? Для чего нужны поля Display Library / Class на закладке Fields конструктора таблиц? Когда будут задействованы установленные в них значения? Для чего нужны поля Format, Input Mask и Caption на закладке Fields конструктора таблиц? Когда будут задействованы установленные в них значения? Для чего нужны поля Rule и Message на закладке Fields конструктора таблиц? В каких случаях будут задействованы установленные в них значения? Привести пример заполнения поля Rule При каком событии происходит присвоение полю значения по умолчанию? Для чего нужны поля Rule и Message на закладке Table конструктора таблиц? В каких случаях будут задействованы установленные в них значения? Привести пример заполнения поля Rule. Назначение столбца Null таблицы, расположенной на закладке Fields конструктора таблиц? Каким образом лучше всего изменять название таблицы и соответствующего ей файла в базе данных, если возникнет такая необходимость? С каким шагом можно инкрементировать данные в полях типа Integer autoincrement
19 Вопросы по работе №4: связи Провести сопоставление между определениями понятий ключа в общей теории СУБД и их конкретной реализацией в VFP. Какие выражения допустимы при создании индекса в VFP? Имеется ли какая-либо связь между значением выражения и именем индекса? Какие типы ключей используются в VFP и каковы их свойства? В чем разница между первичным и кандидатным ключом? Что означают стрелки в столбце Order таблицы, расположенной на закладке Indexes конструктора таблиц? Что означают стрелки в столбце Index таблицы, расположенной на закладке Fields конструктора таблиц? Каким образом можно использовать данные в этом столбце? Каково назначение временных связей? Каково назначение постоянных связей? Чем отличаются временные связи от постоянных с точки зрения их создания? Как устанавливается временная связь между таблицами? Как устанавливается постоянная связь между таблицами? Каким требованиям должны удовлетворять постоянные связи, а каким – временные? Что такое ссылочная целостность? Каким событиям, происходящим с записями таблицы, соответствуют закладки UPDATE, DELETE, INSERT в конструкторе ссылочной целостности VFP? Для чего в VFP нужны хранимые процедуры, как просмотреть их содержание и где можно увидеть названия этих процедур без открытия самого файла? Для чего нужны поля группы Triggers на закладке Table конструктора таблиц? В каких случаях будут задействованы установленные в них значения? Что кроется за содержимым данных полей? Как создать связи вида 1:М и М:М?
20 Вопросы по работе №4: просмотр Для чего нужны пункты меню Tables? Краткое назначение каждого пункта. Перечислить и продемонстрировать возможные манипуляции с окном просмотра таблиц Browse. При демонстрации использовать два варианта: работа с мышью и работа с клавиатурой. Как можно изменить размер шрифта в окне просмотра? Действует данная настройка на все таблицы или только на одну? Что означает пункт Append Mode в пункте View системного меню? Что означает пункт Edit/Browse в пункте View системного меню? Краткое описание назначения органов управления окна свойств таблицы, вызываемого из пункта Table – Properties.
21 Интерфейс VFP 9.0 Тема 3. Конструкторы запросов (Query Designer) и представлений (View Designer )
22 Общее понятие о команде Select Select – одна из важнейших команд SQL-языка. Входит с небольшими особенностями синтаксиса во многие СУБД, включая Oracle, SQL-Server, MySQL и др. Объекты VFP, основанные на Select - это Local View, Remote View, Query. Структура команды: Select {Список выводимых в столбцы результирующих данных, включая вычисления и анализ по группам. Исходные данные – поля таблиц} From {перечень таблиц} Join { Условия связи таблиц} Where {Условия фильтрации} Order by {Порядок просмотра данных} Group By {Условия группировки}. Смысл группировки – постоянство в пределах группы значения выражения для группировки, в которое обязательно должно входить хотя бы одно поле.
23 Полный синтаксис команды Select SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] Select_List_Item [, ...] FROM [FORCE] Table_List_Item [, ...] [[JoinType] JOIN DatabaseName!]Table [[AS] Local_Alias] [ON JoinCondition [AND | OR [JoinCondition | FilterCondition] ...] [WITH (BUFFERING = lExpr)] [WHERE JoinCondition | FilterCondition [AND | OR JoinCondition | FilterCondition] ...] [GROUP BY Column_List_Item [, ...]] [HAVING FilterCondition [AND | OR ...]] [UNION [ALL] SELECTCommand] [ORDER BY Order_Item [ASC | DESC] [, ...]] [INTO StorageDestination | TO DisplayDestination] [PREFERENCE PreferenceName] [NOCONSOLE] [PLAIN] [NOWAIT]
24 Полный синтаксис команды Select SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] Select_List_Item [, ...] FROM [FORCE] Table_List_Item [, ...] [[JoinType] JOIN DatabaseName!]Table [[AS] Local_Alias] [ON JoinCondition [AND | OR [JoinCondition | FilterCondition] ...] [WITH (BUFFERING = lExpr)] [WHERE JoinCondition | FilterCondition [AND | OR JoinCondition | FilterCondition] ...] [GROUP BY Column_List_Item [, ...]] [HAVING FilterCondition [AND | OR ...]] [UNION [ALL] SELECTCommand] [ORDER BY Order_Item [ASC | DESC] [, ...]] [INTO StorageDestination | TO DisplayDestination] [PREFERENCE PreferenceName] [NOCONSOLE] [PLAIN] [NOWAIT] SET ENGINEBEHAVIOR 70 | 80 | 90 – поведение для версий 7.0 … 9.0
25 Пример Select в СУБД MySQL SELECT [STRAIGHT_JOIN] //объединение таблиц как в списке FROM [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]//ожидаемый размер вывода для оптимизатора [SQL_CACHE | SQL_NO_CACHE] //сохранять ли результат в кэше [SQL_CALC_FOUND_ROWS] //возвращает количество строк без Limit [HIGH_PRIORITY] //приоритет выше, чем команда обновления таблицы [DISTINCT | DISTINCTROW | ALL] //удаление строк - дубликатов select_expression [[AS] psevdonim_name]] ,... //перечень полей [INTO {OUTFILE | DUMPFILE} 'file_name' export_options] [FROM table_references [AS] alias_name [WHERE where_definition] [GROUP BY {unsigned_integer | col_name | formula} [ASC | DESC], ...] [HAVING where_definition] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC], ...] [LIMIT [offset,] rows | rows OFFSET offset] [PROCEDURE procedure_name(argument_list)] [FOR UPDATE | LOCK IN SHARE MODE]]
26 Основной интерфейс View Designer: Пункты системного меню “Query” включают в себя пункты панелей инструментов, все закладки основного окна и пункты всплывающего (контекстного) меню. Пункты панели View Designer включают такие кнопки как: добавление таблицы или View (Add Table), их удаление (Remove Table), редактирование связи (через меню недоступно), просмотр кода команды SQL (View SQL), а также расширение или сжатие области, содержащей входящие в запрос таблицы за счет закрытия панели с закладками (можно двойным щелчком по полю с таблицами)
27 Добавление таблиц и задание связей Редактор связей Включение таблиц и View Одна и та же таблица или View могут быть добавлены в запрос многократно. В этом случае к их именам добавляется окончание _
28 Закладка Fields Новая колонка изначально всегда добавляется в конец списка. Дополнительное поле редактирования (слева внизу) – для добавления вычисляемых выражений. Можно вызывать построитель. В выражениях можно использовать пользовательские функции, однако это может замедлить обработку данных. Кроме того, в таких выражениях не следует применять имена таблиц, поскольку информация о них недоступна в процессе работы. Для ускорения работы лучше использовать API – функции или функции, написанные на Си или ассемблере, чем пользовательские функции, написанные языке VFP. Перенос полей из списка доступных в список выходных столбцов выполняется кнопками или двойным щелчком. Первый столбец левого списка содержит двунаправленные кнопки, позволяющие менять последовательность отображения выходных столбцов
29 Редактор свойств поля При использовании таких функций заголовок столбца выглядит как <имя функции>_<имя>, где <имя> - имя колонки в случае отсутствия применения функции. Использовать данные функции без включения опций Group By недопустимо. Заголовок столбца можно переименовать, дописывая к его значению опцию «as <новое имя>» Для каждой созданной колонки, не использующей вычисляемые выражения, можно задать ряд дополнительных свойств, аналогичных свойствам, задаваемым для полей таблицы в конструкторе таблиц (правила проверки, заголовок столбца, маски вывода и прочие свойства). Для вычисляемых выражений заголовок столбца имеет вид EXP_
30 Закладка Join Закладка позволяет редактировать существующие связи между таблицами и создавать новые, причем определяемые не только опцией JOIN, но и WHERE. Первый неименованный столбец (двунаправленные вертикальные стрелки)– задает порядок следования условий связи таблиц. Второй неименованный столбец (двунаправленные горизонтальные стрелки) – при щелкании по кнопке должен активировать окно редактирования связей между таблицами. Столбец «Left Table» – задает выражение связи для родительской таблицы, а столбец «Right Table» позволяет выбрать таблицу, стоящую в соединении справа. Раскрывающиеся списки, помимо самих таблиц, включают также случай
31 Задание сложных условий связи Важно: задание условий связи аналогично заданию условий отбора записей на закладке «Filter» и реализуется в команде Select опцией WHERE Столбцы Field Name и Value позволяют задать конкретные сравниваемые поля из левой и правой таблицы. При этом имеется возможность выбора из раскрывающихся списков полей не только связываемых, но и любых таблиц, а также возможность задания любых произвольных выражений, задаваемых путем вызова построителя выражений Столбцы Not и Criteria позволяют задать соответствия между значениями полей (или выражений над этими полями) из левой и правой таблиц соединения. Столбец Not отрицает условие связи, заданное столбцом Criteria. В последний входят следующие возможные варианты: Знак «=» означает равенство для числовых данных и частичное равенство – для строковых значений. Сравнение идет до последнего символа строки, стоящей справа. Иными словами, выражение 'ABC'='AB' будет истинным, поскольку правая строка короче левой и все символы в пределах той строки слева и справа совпадают. А вот выражение 'AB'='ABC' будет уже ложным. Для точного сравнения двух строк нужно использовать знак двойного равенства «= =». Условия сравнения «<»,«<=»,«>»,«>=» очевидны и не требуют пояснений. Можно лишь отметить, что они распространяются и на символьные данные. Например, сравнение 'Иван'< 'Яковлев' вернет истину. Критерий ‘Like’ означает сравнение по шаблону. С левой стороны должна быть задана маска сравнения, допускающая использование метасимволов (wildcards) «%» и «_» вместо привычных «*» и «?», означающих, соответственно (?), произвольное число любых символов, либо один произвольный символ. Столбец Logical позволяет логически связать условия соединения в соседних строках логическим союзом «И» или «ИЛИ».
32 Закладка Filter. Параметрический запрос Важно: задание условий отбора записей (фильтрации данных) аналогично заданию условий связи на закладке «Join», Отличие: столбец Value заменен на столбец Example, поэтому если в нем должно присутствовать выражение, его можно задать и потом скопировать из столбца Field Name Данная закладка позволяет создавать параметрические запросы. Для этого достаточно в условии фильтрации в графе Example записать выражении, в котором указать имя переменной, перед которой стоит знак вопроса. Если на момент вызова запроса переменная не определена, появится диалоговое окно, в котором будет предложено ввести значение для этой переменной. Например ввод в поле Example выражения «?x» приведет к появлению диалога, в котором будет предложено ввести значение для переменной х. Если значение переменной в программе уже задано, запрос выполнится сразу без данного диалога. Для удобства работы лучше давать переменной имя, которое подсказывало бы назначение данного ввода, например, так как это показано на рисунке. Для систематизации переменных – параметров запроса служит специальный пункт меню, активирующий соответствующий список таких параметров с указанием их типа. Однако в запросе можно использовать и переменные, не содержащиеся в этом списке. В этом случае в диалоге тип переменной указан не будет. Поскольку диалог ведется на английском и, как ни стараться, он все равно не очень нагляден, лучше для определения переменой – параметра запроса создавать собственное диалоговое окно. На закладке Filter, как и на закладке Join, тоже можно задавать связи между таблицами, если в колонке Example вписать имя поля таблицы, стоящей в соединении справа. Такая возможность особенно актуальна, если настройка соединения на закладке Join не дает нужного результата.
33 Закладка Order By Закладка позволяет задать последовательность просмотра данных. Порядок может быть как восходящим, от «а» до «я» и от 1 до 9, если задана опция Ascending, либо нисходящим, если задать опцию Descending. Выводимые в запрос данные сначала упорядочиваются по критерию, указанному в верхней строке списка критериев упорядочения, затем – по следующей, и т.д. Число критериев не ограничено.
34 Закладка Group By. Агрегатные функции Закладка позволяет группировать строки запроса по какому – либо полю. Все строки, в которых это поле имеет одинаковое значение, будут заменены одной строкой. Чтобы такая строка имела смысл, в запросе надо создавать столбцы на основе агрегатных функций, которые буду применяться к каждой группе по отдельности. Это обеспечивает создание отчетов, содержащих поля с подсчетом количества записей в группе, сумм по группе, максимальных и минимальных значений и т.д. При включенной настройке SET ENGINEBEHAVIOR 90 запрос выдаст ошибку, если в него после группировки попытаться вывести поля, содержащие информацию о поле, значение которого может изменяться в пределах группы. Настройка Having – тот же фильтр, но его надо устанавливать на столбцы, выводящие итоги по группе. Пример применения группировки. Для таблицы, содержащей даты и суммы вручения премий студентам вуза, можно создать запрос, в котором перечисляются студенты, получавшие такие премии за период учебы, а также количество полученных ими премий и их общую сумму. При желании можно выводить в список только тех студентов, которые получали премию более заданного числа раз и/или свыше заданной суммы. Если мы хотим дополнительно сделать отбор по фамилиям студентов, опцию Having для этого применять не следует, а лучше применить обычный фильтр.
35 Закладка Update Criteria Позволяет задать условия и порядок, по которым вносимые пользователем изменения в данные виртуальной таблицы будут переноситься в порождающие запрос исходные таблицы. Список содержит три графы. Графа Field Name может содержать поля любой из участвующих в запросе таблиц, если они присутствуют в результате запроса. Нужная таблица выбирается из раскрывающегося списка Table. Пока в первой графе списка нет ни единой отметки, над второй графой изображения карандаша не появляется. Отметка в данном столбце означает, что значение данного поля будет обновляться в исходной таблице при его изменении во View. Пока нет отметки во второй графе, опция Send SQL Updates остается недоступной. Данная опция включает режим активации сделанных настроек. Все поля списка можно установить или сбросить кнопками Update All или Reset Key. Группа SQL WHERE … позволяет задать критерий обновления: по изменению ключевого поля, любого измененного или только обновляемого. Группа Update using определяет режим обновления записи в исходной таблицы: либо путем ее модификации, либо путем удаления текущей записи и создания новой
36 Закладка Miscelaneous Закладка содержит ряд дополнительных настроек. No duplicate – исключает вывод повторяющихся строк в результат запроса Force join – заставляет таблицы открываться в порядке, указанном на закладке Join Группа настроек Top служит для ограничения выводимых в запрос строк, что актуально для запросов с доступам к данным по сети. Если снять флаг All (все строки), можно указать число выводимых строк (Number) или их процент (Percent) от общего количества. Cross tabulate – доступна только в запросах, когда в нем 3 поля – ось Х, Y и данные для вывода на график. Опции Report и Label доступны только в конструкторе запросов и позволяют вывести результат запроса в виде отчета или этикетки.
37 Задание к работе 5: View Designer Создать от одного до трех локальных представлений данных, позволяющих продемонстрировать такие возможности Local View, как: Просмотр в заданном порядке значений полей из связанных записей как минимум двух таблиц Просмотр записей, удовлетворяющих некоторому критерию их отбора Просмотр записей, удовлетворяющих критерию отбора, содержащему как минимум один параметр, вводимый пользователем перед выполнением запроса Наличие вычисляемых полей, содержащих одновременно информацию из разных полей исходных таблиц или таблицы. Это может быть, например, вывод фамилии с инициалами из отдельных полей с именем, отчеством и фамилией, вывод поля со значением цены на основании полей, содержащих значение суммы и количества товара и т.д. Наличие группировки данных с выводом информации о любых итоговых данных по группе (суммы, количество, среднее, экстремальные значения и т.д.) Возможность сохранения в исходной таблице изменений, произведенных при просмотре данных через локальное представление
38 Вопросы по работе 5: View Designer Что такое представление данных View и чем оно отличается от запроса? Какие виды представлений данных существуют в VFP? Каким образом лучше всего связывать таблицы в конструкторе представлений данных? Какие виды соединений могут существовать между таблицами и в чем их различие? Какие возможности имеются в конструкторе представлений данных при создании столбцов и их форматировании? Как в конструкторе представлений данных создавать поля, значения в которых вычисляются через содержимое полей таблиц? Какие тут существуют ограничения? Как в конструкторе представлений данных обеспечить фильтрацию данных по заданным условиям? Какие тут существуют ограничения? Что такое параметрический запрос и как он реализуется в конструкторе представлений данных? Какие операции над множествами выполняются в процессе отбора данных в локальном представлении? Каковы возможности конструктора представления данных по упорядочению данных? Что такое группировка данных и групповые операции и как она выполняется? Какие групповые операции можно применять в конструкторе представлений данных? Как через представление данных изменять содержимое исходных таблиц? В какой последовательности следует добавлять таблицы в конструктор представлений данных?
19548-_1.2._konstruktor_bazy_dannyh&view.ppt
- Количество слайдов: 38

