Файл: Учебник Макаровой.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.07.2024

Просмотров: 1428

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Пример 19.40.

Sheets("<имя_листа_диалога>"). Labels ("<имя_объекта_метки>")

.Caption="cтpoкa текста"

Поле ввода является многострочным, содержит текст, который можно редактировать. Поле ввода входит в набор EditBoxes(), его можно редактировать и программным способом.

Пример 19.41.

Sheets("<имя_листа_диалога>").ЕditBoxes("<имя_окна>").Техt="строка текста"

Кроме того, этот тип элемента диалогового окна обладает следующими свойствами: MultyLine = True – в случае многострочности поля ввода;

InputType - ограничение типа данных, вводимых в окно (xlFormula, xlInteger, xllNumber, xlReference, xlText).

Рамка группы обеспечивает объединение нескольких элементов диалогового окна. Этот тип окна изображается в первую очередь, а затем внутри него размещаются другие элементы. Для задания строки текста в верхней строке рамки программным образом используется его свойство Caption.

Флажок обеспечивает аддитивный выбор, имеет свойство Value (принимает значение True, если выбран, или False в противном случае). Подобные переключатели образуют набор CheckBoxes().

Кнопка переключателя обеспечивает альтернативный выбор из списка взаимоисключающих опций. Такие кнопки входят в состав группы, если они различны по назначению, либо все кнопки в диалоговом окне образуют единую группу; выбор одной из кнопок внутри группы означает автоматический невыбор других. Подобные переключатели образуют набор OptionButtons(). Свойство Value принимает значение True, если выбрана кнопка, и False в противном случае.

Окно списка предоставляет для выбора список значений, при этом редакция списка невозможна. Формирование списка осуществляется только программным путем. Существует несколько вариантов организации списков с помощью свойств объекта:

ListFillRange ссылка на диапазон ячеек электронной таблицы, содержащей значения элементов списка;

List() - перечисление элементов списка непосредственно, замена старого списка новым целиком.

Раскрывающийся список во многом соответствует окну списков, но этот элемент входит в набор

DropDowns().

Поле ввода со списком объединяет окно списка и окно редактирования. При выборе элемента списка он автоматически появляется в окне редактирования, где возможна его корректировка. В принципе это два разных окна с различными свойствами.

Поле ввода с раскрывающимся списком представляет собой комбинацию выпадающего списка, элементы которого можно редактировать.

Линейка прокрутки создает горизонтальную или вертикальную линейку прокрутки. Свойство Value содержит число, соответствующее положению ползунка, доступ к линейкам прокрутки через набор ScrollBars(). Свойства Min и Мах управляют диапазоном значений, доступны как из программы, так и через диалоговое окно форматирования элемента. Свойства LargeChange и SmallChange содержат величину изменения свойства Value.

Регулятор счетчика аналогичен линейке прокрутки, но отсутствует свойство LargeChange.

На рис. 19.27 представлено диалоговое окно пользователя для ввода данных об экзаменационных оценках.

Диалоговое окно пользователя включает следующие элементы: метки (Группа, Фамилия Имя Отчество, № зач.книжки и др.);

окно списка для выбора № группы список может быть сформирован в ячейках рабочего листа, при этом выделение элемента списка может быть одинарным, множественным или связным. Результат выбора можно записать в указанную ячейку рабочего листа; поля ввода (Фамилия Имя Отчество, № зач.книжки, Дата), для которых может быть указан тип

вводимой информации (текст, целое число, число, ссылка, формула), наличие многострочного текста и вертикальной линейки прокрутки;

603


раскрывающиеся списки (дисциплина, преподаватель, оценка), элементы которых могут быть записаны в ячейках рабочего листа, указывается максимально возможное число элементов; кнопки управления (<По умолчанию>, <Отмена>, <Закрыть>, <Справка>).

Рис. 19.27. Диалоговое окно пользователя

Для выделенного элемента диалогового окна с помощью команды контекстного меню Формат объекта вызывается окно «Форматирование объекта» для задания указанных характеристик.

19.3. РЕЛЯЦИОННЫЕ ЯЗЫКИ МАНИПУЛИРОВАНИЯ ДАННЫМИ

Реляционные модели Классификация реляционных языков

Основные характеристики языка SQL Организация запросов к базе данных на языке SQL

РЕЛЯЦИОННЫЕ МОДЕЛИ Основные понятия

Реляционные модели данных (РМД), в отличие от сетевых и иерархических (см. гл. 15), характеризуются простотой структуры данных, удобным для пользователя табличным представлением, а

также возможностью использования формального аппарата алгебры отношений и реляционного исчисления для обработки данных. Отношение, или реляционная таблица, имеет прямоугольную структуру ("плоский файл") (рис. 19.28):

Поле 1

Поле 2

...

Поле n

Запись 1

Запись 2

Запись m

Рис. 19.28. Структура данных реляционной таблицы

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

Условимся считать, что указанные термины имеют полноправное употребление и являются синонимами.

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

(Поле1, Поле2,.... Поле n)

604


Пример 19.42. Схема отношения:

СТУДЕНТ(Имя, Фамилия, Дата рождения, № зач.книжки,...).

В заполненном виде этой схеме соответствует таблица (рис. 19.29).

Студент

Имя

Фамилия

Дата рождения

№ зач. книжки

и т.д.

 

 

 

 

 

Петр

Иванов

12.12.80

123245

 

Марина

Петрова

1.1.80

233244

 

Рис. 19.29. Фрагмент реляционной таблицы

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

Для определенности изложения рассмотрим реляционную таблицу (рис. 19.29).

Таблица СТУДЕНТ содержит основные сведения о студентах учебного заведения. Каждое поле принимает определенное значение в строке таблицы, обладает определенным форматом, или типом данных: Фамилия строка символов, Дата рождения дата в формате ДД.ММ.ГГ.

Таблица имеет ключи поле или группа полей, значение которых необходимо для идентификации строк (записей). Ключ обладает свойством уникальности значения, то есть неповторяемости в экземплярах записей.

Если ключей несколько, один из них в объявлении схемы принимается за первичный (основной). Прочие ключи называются возможными. По первичному ключу выполняется автоматическое упорядочение записей (сортировка в порядке возрастания значений ключа).

Пример 19.43. Таблица СТУДЕНТ содержит записи; для идентификации отдельной записи указывается значение ключа. В данном случае ключей несколько:

№ зач. книжки; [Имя]+[Фамилия]+[Дата рождения].

Право выбора первичного ключа остается за пользователем, выбирается ключ, как правило, наиболее часто используемый для поиска записи.

Для эффективной реализации поиска и обработки данных создаются индексы, обеспечивающие формирование дополнительных индексных файлов (рис. 19.30).

Значение индекса

Адрес записи, содержащей значение индекса

и1

Адр2

и2

Адр10

и3

Адр1

и т.д.

 

Рис. 19.30. Индекс реляционной таблицы

При корректировке записей таблицы автоматически упорядочиваются индексы, изменяется местоположение каждого индекса согласно принятому условию (возрастание или убывание значений);

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

Количество индексов, имена (идентификаторы) индексов, соответствие индексов полям таблицы определяются при создании схемы таблицы. В свою очередь, индексы можно создавать и удалять, оставляя неизменным содержание записей реляционной таблицы. Следует помнить, что большое число индексов замедляет корректировку записей в реляционной таблице.

Работа с данными осуществляется на уровне:

605


отдельной таблицы; нескольких таблиц.

Типовые операции по обработке записей реляционной таблицы

Классический состав операций с реляционными таблицами определяет требования к реляционным языкам. Рассмотрим типовые операции по обработке записей в изолированной реляционной таблице.

Включить добавляется новая запись, для чего указывается имя таблицы, в которую производится дополнение, и значения полей новой записи, обязательно заполнение ключевых полей.

Удалить удаляется определенная запись или группа записей, указывается имя таблицы и первичный ключ удаляемой записи единичное удаление либо формируется условие (задают значения вторичных ключей или отдельных полей записи), выполнение которого необходимо для удаления группы записей.

Обновить - изменяется значение полей указанной записи, задается имя таблицы, идентификатор записи (записей), подлежащей корректировке значений полей, новые значения изменяемых полей.

Выборка (селекция) выбор подмножества записей таблицы по условию, которое формулируется как логическое выражение. Результирующая таблица имеет ту же схему, что и исходная; эту операцию называют "горизонтальной" выборкой. Частным случаем выборки является пустая выборка, если исходные записи не соответствуют условию отбора.

Проекция для таблицы указывается подмножество полей, участвующих в формировании новой (выходной) таблицы, имеющей другую схему, и, может быть, другой массив записей (исключаются записи, дублирующие друг друга). Эту операцию называют "вертикальной" выборкой.

Пример 19.44.

Ввод сведений о новом студенте:

ВКЛЮЧИТЬ в СТУДЕНТ [Игорь; Смирнов; 23.02.1980; 126543] Изменить номер зачетной книжки студента:

ОБНОВИТЬ в СТУДЕНТ: [Игорь; Смирнов; 23.02.1980] поле [

зач.книжки] = 345234

Удаление сведения о студенте:

УДАЛИТЬ в СТУДЕНТ: [Игорь; Смирнов; 23.02.1980] Удаление сведения о студентах, которые родились в 1979 г.:

УДАЛИТЬ в СТУДЕНТ: если [Дата рождения] >=01.01.1980 AND

[Дата рождения] < 01.01.1981

Отобрать студентов, у которых номера зачетных книжек находятся в интервале 100000 – 200000:

ВЫБОРКА в СТУДЕНТ: если [№ зач.книжки] >= 100000 AND [

зач.книжки] < 200000

Результат выборки

Имя

Фамилия

Дата рождения

№ зач.книжки

Марина

Петрова

1.1.80

233244

Сформировать список имен студентов на основании таблицы СТУДЕНТ

ПРОЕКЦИЯ СТУДЕНТ [Имя]:

СТУДЕНТ

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Петр

Иванов

12.12.80

123245

Марина

Петрова

1.1.80

233244

Марина

Смирнова

6.6.81

553435

Результат проекции

606


Типовые операции совместной обработки реляционных таблиц

Операции совместной обработки таблиц различны для таблиц с одинаковой или отличающейся схемой данных. Применительно к односхемным таблицам (одинаковый состав полей) выполняются следующие операции:

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

Пример 19.45. Имеются таблицы СТУДЕНТ (дневная форма обучения) и СТУДЕНТ-ЗАОЧНИК (заочная форма обучения) одной схемы. Они объединяются в одну таблицу СТУДЕНТЫ той же схемы (но без дублирования первичных ключей записей). Так, студентка ПЕТРОВА Марина присутствует в таблице СТУДЕНТЫ в единственном числе:

СТУДЕНТ

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Петр

Иванов

12.12.80

123245

Марина

Петрова

1.1.80

233244

СТУДЕНТ-ЗАОЧНИК

 

 

 

 

 

 

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Иван

Сидоров

12.1.80

123247

Марина

Петрова

1.1.80

233244

Итог объединения: СТУДЕНТЫ

 

 

 

 

 

 

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Петр

Иванов

12.12.80

123245

Марина

Петрова

1.1.80

233244

Иван

Сидоров

12.1.80

123247

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

Пример 19.46. Имеются таблицы СТУДЕНТ (дневная форма обучения) и СТУДЕНТ-ЗАОЧНИК (заочная форма обучения). При пересечении таблиц выявляются студенты, находящиеся в двух таблицах одновременно:

СТУДЕНТ

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Петр

Иванов

12.12.80

123245

Марина

Петрова

1.1.80

233244

СТУДЕНТ-ЗАОЧНИК

607