
_1.2. Конструктор базы данных&View.ppt
- Количество слайдов: 30
Интерфейс VFP 9. 0 Тема 2. Конструкторы таблиц и баз данных Table Designer и Database Designer 1
2 Общее окно, контекстные меню и панель инструментов n n n Слева - общее окно конструктора БД c панелью инструментов, контекстным меню и окном сессии данных. Внизу - контекстное меню при выборе таблицы. (Collapse – заменяется на Expand для свернутой таблицы). При открытии конструктора появляется соответствующее меню (справа). Пока не выделена таблица, подгруппа пунктов 2 и 3 и последнего недоступна. Связи. Пункт Edit Relationship доступен только после выделения связи. Ключи. Вид зависит от типа ключа
3 Редактирование полей таблицы Поля выбираются по первой букве. Построитель выражений можно применять для формирования логических выражений (многоточия) Поле Rule – Logic, ост. -текст, или выбор файла
4 Построитель выражений Применяется, когда надо задать выражение
5 Выбор типа полей Значение Null – Полей и комментариев. Здесь же – порядок сортировки
6 Выбор типа индексов Primary – первичный ключ, Regular - вешний
7 Задание свойств таблицы Триггеры. Псевдонимы. Правила. Комментарии
8 Настройка целостности: модификация
9 Настройка целостности: удаление
10 Настройка целостности: вставка
11 Работа с таблицами: общий вид
12 Работа с таблицами: меню
13 Работа с таблицами: поиск, удаление, обновление
14 Работа с таблицами: изменение полей, свойства таблицы, фильтр полей
15 Задание связей: выбор таблиц
16 Просмотр временных связей
17 Задание к работе 4: Конструктор БД 1. По разработанной логической модели реляционной БД создать эту БД в среде VFP 9. 0 использую лицензионную версию, имеющуюся в вузе 2. Для имеющихся в БД связей задать условия целостности по ссылкам 3. Внести в БД минимальный набор записей, позволяющий проверить все заложенные в БД виды связей и структуры данных 4. Научиться пользоваться окном Browse для просмотра, создания и редактирования записей различных типов, включая поля Memo и General – типов 5. Научиться создавать и просматривать через окна Browse временные связи и убедиться в наличии таких связей для внесенных данных 6. Убедиться на практике в работе механизма поддержания целостности путем каскадирования или запрета изменений Примечание: 1. 2. 3. При внесении данных надо избегать внесения бессмысленной информации, типа фамилия = “@3 jhhg. Э”, так как это затруднит в дальнейшем отслеживание правильности работы связей и запросов. Для упрощения применения к таблицам команд не используйте в настройках таблицы заголовки для полей, которые могут быть задействованы в выражениях для отбора данных Данные в дочерние таблицы вносить либо до настройки целостности, но лучше, во избежание ошибок, после, с применением команды Inset into <имя таблицы> (<имя поля - внешнего ключа>) Value (значение этого поля>). Если таких полей несколько, вводить их и значения списком, через запятую
Интерфейс VFP 9. 0 Тема 3. Конструкторы запросов (Query Designer) и представлений (View Designer ) 18
19 Общее понятие о команде Select – одна из важнейших команд SQL-языка. Входит с небольшими особенностями синтаксиса во многие СУБД, включая Oracle, SQLServer, My. SQL и др. Объекты VFP, основанные на Select - это Local View, Remote View, Query. Структура команды: Select {Список выводимых в столбцы результирующих данных, включая вычисления и анализ по группам. Исходные данные – поля таблиц} From {перечень таблиц} Join { Условия связи таблиц} Where {Условия фильтрации} Order by {Порядок просмотра данных} Group By {Условия группировки}. Смысл группировки – постоянство в пределах группы значения выражения для группировки, в которое обязательно должно входить хотя бы одно поле.
20 Основной интерфейс View Designer: Пункты системного меню “Query” включают в себя пункты панелей инструментов, все закладки основного окна и пункты всплывающего (контекстного) меню. Пункты панели View Designer включают такие кнопки как: добавление таблицы или View (Add Table), их удаление (Remove Table), редактирование связи (через меню недоступно), просмотр кода команды SQL (View SQL), а также расширение или сжатие области, содержащей входящие в запрос таблицы за счет закрытия панели с закладками (можно двойным щелчком по полю с таблицами)
21 Добавление таблиц и задание связей Включение таблиц и View Редактор связей Одна и та же таблица или View могут быть добавлены в запрос многократно. В этом случае к их именам добавляется окончание _<chr>, где chr='a', 'b', 'c' и т. д. Например Table 1, Table 1_a, Table 1_b и т. д. Нужно тогда, когда дочерняя таблица содержит разнородные данные о родительской таблице по конечному множеству подвидов. Например, родительская таблица – города, а дочерняя – число фирм в этих городах, занимающихся n разными видами деятельности и имеющая, например, поля <ID города>, <номер деятельности>, <число фирм>/ Связи могут быть четырех типов. Inner – точное соответствие записей. Left (outer) join– когда из левой таблицы соединения в результат войдут все записи, но для тех, для которых соответствие отсутствует, их значение будет равно NULL. Аналогично – для соединений Right и Full. Важно: для задания связей здесь можно применять только значения полей
22 Закладка Fields Перенос полей из списка доступных в список выходных столбцов выполняется кнопками или двойным щелчком. Первый столбец левого списка содержит двунаправленные кнопки, позволяющие менять последовательность отображения выходных столбцов Редактор свойств поля Новая колонка изначально всегда добавляется в конец списка. Дополнительное поле редактирования (слева внизу) – для добавления вычисляемых выражений. Можно вызывать построитель. В выражениях можно использовать пользовательские функции, однако это может замедлить обработку данных. Кроме того, в таких выражениях не следует применять имена таблиц, поскольку информация о них недоступна в процессе работы. Для ускорения работы лучше использовать API – функции или функции, написанные на Си или ассемблере, чем пользовательские функции, написанные языке VFP. Для вычисляемых выражений заголовок столбца имеет вид EXP_<n>, где <n> - номер выражения. Кроме того, возможно применять и выражения над группами записей, используя следующие агрегатные функции (Agregate function): AVG( ) – среднее значение по группе для колонки из числовых данных COUNT( ) или CNT( ) – подсчитывает в пределах группы количество записей. В качестве аргумента можно указывать *. MIN( ) и MAX( ) – определяют наименьшее и наибольшее значение по колонке в пределах группы SUM( ) – суммарное значение числовых данных в колонке в пределах группы. При использовании таких функций заголовок столбца выглядит как <имя функции>_<имя>, где <имя> - имя колонки в случае отсутствия применения функции. Использовать данные функции без включения опций Group By недопустимо. Заголовок столбца можно переименовать, дописывая к его значению опцию «as <новое имя>» Для каждой созданной колонки, не использующей вычисляемые выражения, можно задать ряд дополнительных свойств, аналогичных свойствам, задаваемым для полей таблицы в конструкторе таблиц (правила проверки, заголовок столбца, маски вывода и прочие свойства).
23 Закладка Join Закладка позволяет редактировать существующие связи между таблицами и создавать новые, причем определяемые не только опцией JOIN, но и WHERE. Первый неименованный столбец (двунаправленные вертикальные стрелки)– задает порядок следования условий связи таблиц. Второй неименованный столбец (двунаправленные горизонтальные стрелки) – при щелкании по кнопке должен активировать окно редактирования связей между таблицами. Столбец «Left Table» – задает выражение связи для родительской таблицы, а столбец «Right Table» позволяет выбрать таблицу, стоящую в соединении справа. Раскрывающиеся списки, помимо самих таблиц, включают также случай <Undefined>, когда таблицы нет и случаи <Prev join> и <Next join>, когда таблица берется из предыдущего или последующего соединения. Столбец «Join» – задает тип связи, которые были рассмотрены ранее. Дополнительно здесь появляется еще тип Cross Join, фактически означающий использование таблицы без связи, поскольку при выборе данного типа все поля строки связи становятся недоступными. Столбцы «Pri» определяют приоритет выполнения соединений (левый столбец) и вычисления логических выражений (левый столбец), если они задействуются для задания связи. Наивысший приоритет равен 0, а самый низкий – 99. Назначение остальных столбцов будет пояснено на следующем слайде. .
24 Задание сложных условий связи Важно: задание условий связи аналогично заданию условий отбора записей на закладке «Filter» и реализуется в команде Select опцией WHERE Столбцы Field Name и Value позволяют задать конкретные сравниваемые поля из левой и правой таблицы. При этом имеется возможность выбора из раскрывающихся списков полей не только связываемых, но и любых таблиц, а также возможность задания любых произвольных выражений, задаваемых путем вызова построителя выражений Столбцы Not и Criteria позволяют задать соответствия между значениями полей (или выражений над этими полями) из левой и правой таблиц соединения. Столбец Not отрицает условие связи, заданное столбцом Criteria. В последний входят следующие возможные варианты: Знак «=» означает равенство для числовых данных и частичное равенство – для строковых значений. Сравнение идет до последнего символа строки, стоящей справа. Иными словами, выражение 'ABC'='AB' будет истинным, поскольку правая строка короче левой и все символы в пределах той строки слева и справа совпадают. А вот выражение 'AB'='ABC' будет уже ложным. Для точного сравнения двух строк нужно использовать знак двойного равенства «= =» . Условия сравнения «<» , «<=» , «>=» очевидны и не требуют пояснений. Можно лишь отметить, что они распространяются и на символьные данные. Например, сравнение 'Иван'< 'Яковлев' вернет истину. Критерий ‘Like’ означает сравнение по шаблону. С левой стороны должна быть задана маска сравнения, допускающая использование метасимволов (wildcards) «%» и «_» вместо привычных «*» и «? » , означающих, соответственно (? ), произвольное число любых символов, либо один произвольный символ. Столбец Logical позволяет логически связать условия соединения в соседних строках логическим союзом «И» или «ИЛИ» .
25 Закладка Filter. Параметрический запрос Важно: задание условий отбора записей (фильтрации данных) аналогично заданию условий связи на закладке «Join» , Отличие: столбец Value заменен на столбец Example, поэтому если в нем должно присутствовать выражение, его можно задать и потом скопировать из столбца Field Name Данная закладка позволяет создавать параметрические запросы. Для этого достаточно в условии фильтрации в графе Example записать выражении, в котором указать имя переменной, перед которой стоит знак вопроса. Если на момент вызова запроса переменная не определена, появится диалоговое окно, в котором будет предложено ввести значение для этой переменной. Например ввод в поле Example выражения «? x» приведет к появлению диалога, в котором будет предложено ввести значение для переменной х. Если значение переменной в программе уже задано, запрос выполнится сразу без данного диалога. Для удобства работы лучше давать переменной имя, которое подсказывало бы назначение данного ввода, например, так как это показано на рисунке. Для систематизации переменных – параметров запроса служит специальный пункт меню, активирующий соответствующий список таких параметров с указанием их типа. Однако в запросе можно использовать и переменные, не содержащиеся в этом списке. В этом случае в диалоге тип переменной указан не будет. Поскольку диалог ведется на английском и, как ни стараться, он все равно не очень нагляден, лучше для определения переменой – параметра запроса создавать собственное диалоговое окно. На закладке Filter, как и на закладке Join, тоже можно задавать связи между таблицами, если в колонке Example вписать имя поля таблицы, стоящей в соединении справа. Такая возможность особенно актуальна, если настройка соединения на закладке Join не дает нужного результата.
26 Закладка Order By Закладка позволяет задать последовательность просмотра данных. Порядок может быть как восходящим, от «а» до «я» и от 1 до 9, если задана опция Ascending, либо нисходящим, если задать опцию Descending. Выводимые в запрос данные сначала упорядочиваются по критерию, указанному в верхней строке списка критериев упорядочения, затем – по следующей, и т. д. Число критериев не ограничено.
27 Закладка Group By. Агрегатные функции Закладка позволяет группировать строки запроса по какому – либо полю. Все строки, в которых это поле имеет одинаковое значение, будут заменены одной строкой. Чтобы такая строка имела смысл, в запросе надо создавать столбцы на основе агрегатных функций, которые буду применяться к каждой группе по отдельности. Это обеспечивает создание отчетов, содержащих поля с подсчетом количества записей в группе, сумм по группе, максимальных и минимальных значений и т. д. При включенной настройке SET ENGINEBEHAVIOR 90 запрос выдаст ошибку, если в него после группировки попытаться вывести поля, содержащие информацию о поле, значение которого может изменяться в пределах группы. Настройка Having – тот же фильтр, но его надо устанавливать на столбцы, выводящие итоги по группе. Пример применения группировки. Для таблицы, содержащей даты и суммы вручения премий студентам вуза, можно создать запрос, в котором перечисляются студенты, получавшие такие премии за период учебы, а также количество полученных ими премий и их общую сумму. При желании можно выводить в список только тех студентов, которые получали премию более заданного числа раз и/или свыше заданной суммы. Если мы хотим дополнительно сделать отбор по фамилиям студентов, опцию Having для этого применять не следует, а лучше применить обычный фильтр.
28 Закладка Update Criteria Позволяет задать условия и порядок, по которым вносимые пользователем изменения в данные виртуальной таблицы будут переноситься в порождающие запрос исходные таблицы. Список содержит три графы. Графа Field Name может содержать поля любой из участвующих в запросе таблиц, если они присутствуют в результате запроса. Нужная таблица выбирается из раскрывающегося списка Table. Пока в первой графе списка нет ни единой отметки, над второй графой изображения карандаша не появляется. Отметка в данном столбце означает, что значение данного поля будет обновляться в исходной таблице при его изменении во View. Пока нет отметки во второй графе, опция Send SQL Updates остается недоступной. Данная опция включает режим активации сделанных настроек. Все поля списка можно установить или сбросить кнопками Update All или Reset Key. Группа SQL WHERE … позволяет задать критерий обновления: по изменению ключевого поля, любого измененного или только обновляемого. Группа Update using определяет режим обновления записи в исходной таблицы: либо путем ее модификации, либо путем удаления текущей записи и создания новой
29 Закладка Miscelaneous Закладка содержит ряд дополнительных настроек. No duplicate – исключает вывод повторяющихся строк в результат запроса Force join – заставляет таблицы открываться в порядке, указанном на закладке Join Группа настроек Top служит для ограничения выводимых в запрос строк, что актуально для запросов с доступам к данным по сети. Если снять флаг All (все строки), можно указать число выводимых строк (Number) или их процент (Percent) от общего количества. Cross tabulate – доступна только в запросах, когда в нем 3 поля – ось Х, Y и данные для вывода на график. Опции Report и Label доступны только в конструкторе запросов и позволяют вывести результат запроса в виде отчета или этикетки.
30 Задание к работе 5: View Designer Создать от одного до трех локальных представлений данных, позволяющих продемонстрировать такие возможности Local View, как: 1. Просмотр в заданном порядке значений полей из связанных записей как минимум двух таблиц 2. Просмотр записей, удовлетворяющих некоторому критерию их отбора 3. Просмотр записей, удовлетворяющих критерию отбора, содержащему как минимум один параметр, вводимый пользователем перед выполнением запроса 4. Наличие вычисляемых полей, содержащих одновременно информацию из разных полей исходных таблиц или таблицы. Это может быть, например, вывод фамилии с инициалами из отдельных полей с именем, отчеством и фамилией, вывод поля со значением цены на основании полей, содержащих значение суммы и количества товара и т. д. 5. Наличие группировки данных с выводом информации о любых итоговых данных по группе (суммы, количество, среднее, экстремальные значения и т. д. ) 6. Возможность сохранения в исходной таблице изменений, произведенных при просмотре данных через локальное представление
_1.2. Конструктор базы данных&View.ppt