Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

9_Ломтадзе В.В., Шишкина Л.П_Практическая информатика_2011

.pdf
Скачиваний:
163
Добавлен:
26.03.2016
Размер:
3.06 Mб
Скачать

Таблица 8.4

Получение таблицы, содержащей консолидированные данные

 

A

B

 

C

 

D

 

E

1

Объем продаж филиалами в 1999 г.

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

3

Название

Объем продаж по кварталам, тыс.руб.

4

I

 

II

 

III

 

IV

 

 

 

 

5

Филиал 1

 

 

 

 

 

 

 

6

Компьютеры

 

2245

 

3050

 

3077

2186

7

Мониторы

 

580

 

495

 

566

428

8

Процессоры

 

427

 

440

 

392

360

9

Материнские платы

 

360

 

296

 

304

288

10

Филиал 2

 

 

 

 

 

 

 

11

Компьютеры

 

1232

 

2042

 

2070

1046

12

Мониторы

 

370

 

386

 

455

317

13

Процессоры

 

316

 

329

 

281

249

14

Материнские платы

 

230

 

182

 

211

186

15

Филиал 3

 

 

 

 

 

 

 

16

Компьютеры

 

2468

 

3146

 

3208

3005

17

Мониторы

 

602

 

501

 

612

455

18

Процессоры

 

487

 

508

 

360

388

19

Материнские платы

 

396

 

312

 

322

290

20

 

 

 

 

 

 

 

 

21

Филиалы 1 - 3 (всего по фирме)

 

 

 

 

22

Компьютеры

 

5945

 

8238

 

8355

6237

23

Мониторы

 

1552

 

1382

 

1633

1200

24

Процессоры

 

1230

 

1277

 

1033

997

25

Материнские платы

 

986

 

790

 

837

764

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

Теперь для построения сводной таблицы необходимо выполнить следующую последовательность действий:

1)вызвать мастер сводных таблиц с помощью пункта меню Данные/Сводная таблица, указать источник данных (в списке или базе данных), нажать кнопку Далее;

2)указать диапазон, в котором находятся исходные данные (в нашем примере A3:F15); если ячейки выделены заранее, то программа определит диапазон по выделению; нажать кнопку Далее;

3)создать макет сводной таблицы, используя известные поля; в нашем примере надо переместить мышью кнопку поля Филиал в область Страница

111

(Рис. 8.9), кнопку поля Наименование – в область Строка, а кнопки I, II, III, IV – в область Данные; нажать кнопку Далее;

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

Таблица 8.5

Исходные данные для построения сводной таблицы

 

A

B

C

D

E

F

1

 

Объем продаж филиалами по кварталам 1999 г.

 

2

 

 

 

 

 

 

 

 

3

Филиал

Название

I

II

III

IV

 

 

 

 

 

 

 

4

Филиал 1

Компьютеры

2245

3050

3077

2186

5

Филиал 1

Мониторы

580

495

566

428

6

Филиал 1

Процессоры

427

440

392

360

7

Филиал 1

Материнские платы

360

296

304

288

8

Филиал 2

Компьютеры

1232

2042

2070

1046

9

Филиал 2

Мониторы

370

386

455

317

10

Филиал 2

Процессоры

316

329

281

249

11

Филиал 2

Материнские платы

230

182

211

186

12

Филиал 3

Компьютеры

2468

3146

3208

3005

13

Филиал 3

Мониторы

602

501

612

455

14

Филиал 3

Процессоры

487

508

360

388

15

Филиал 3

Материнские платы

396

312

322

290

Сводная таблица, созданная для нашего примера (Таблица 8.6), в первой строке содержит поле со списком. Если список раскрыть, то из него можно выбрать конкретный филиал или все (филиалы) – в зависимости от выбора изменяется содержимое столбца Всего.

Рис. 8.9. Создание макета сводной таблицы

112

Таблица 8.6

Пример сводной таблицы

Филиал

(Все)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Название

Данные

Всего

Компьютеры

Сумма по полю I

5945

 

Сумма по полю II

8238

 

Сумма по полю III

8355

 

Сумма по полю IV

6237

Материнские платы

Сумма по полю I

986

 

Сумма по полю II

790

 

Сумма по полю III

837

 

Сумма по полю IV

764

Мониторы

Сумма по полю I

1552

 

Сумма по полю II

1382

 

Сумма по полю III

1633

 

Сумма по полю IV

1200

Процессоры

Сумма по полю I

1230

 

Сумма по полю II

1277

 

Сумма по полю III

1033

 

Сумма по полю IV

997

Итог Сумма по полю I

9713

Итог Сумма по полю II

11687

Итог Сумма по полю III

11858

Итог Сумма по полю IV

9198

На этом завершим рассмотрение табличного процессора Excel. Как и при описании текстового процессора Word (см. раздел 7), мы не ставили перед собой задачу проиллюстрировать абсолютно все возможности данного приложения. Для более полного знакомства с Excel мы рекомендуем проделать лабораторные и контрольные работы, приведенные в [6, 7], а также познакомиться с расширенными возможностями Excel [1, 2].

Кроме консолидации данных и построения сводных таблиц, Excel предоставляет и другие возможности, позволяющие работать с электронными таблицами как с базой данных. При желании эти возможности можно изучить самостоятельно, пользуясь литературой [1, 2, 9, 13] и встроенной справкой. Но еще лучше воспользоваться более мощными средствами, имеющимися в системах управления базами данных (СУБД), которым посвящен следующий раздел.

113

Контрольные вопросы к главе 8

Назначение Excel; основные понятия: электронная таблица, ячейка таблицы, адрес ячейки, ссылка, блок ячеек, текущая (активная) ячейка, рабочая книга;

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

строки и столбцы; как выделить ячейку, строку, столбец, блок ячеек;

установка формата выделенных ячеек – вкладки Число, Выравнивание,

Шрифт, Граница, Вид;

копирование формата ячеек, основные кнопки панели инструментов

Форматирование, их применение;

выполнение расчетов по формулам: ввод формулы, применение относительной и абсолютной адресации, автозаполнение;

функции, используемые в Excel

построение диаграмм: ряды и категории данных, этапы построения диаграммы, форматирование элементов диаграммы;

сортировка, консолидация данных, сводные таблицы.

114

9. СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ. СУБД ACCESS

9.1. Основные понятия

База данных – это совокупность структурированных данных, относящихся к некоторой предметной области.

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

Структурирование – это введение соглашений о способах представления данных. Это понятие близко к понятиям модель данных и формализация данных. В реляционных базах данных используются три структуры данных: таблица, запись, поле. Каждая из этих структур имеет свои свойства, описываемые параметрами. Таблица имеет имя и состоит из записей. Запись имеет номер в таблице и состоит из полей. У каждого поля есть имя, тип (текстовый, числовой и т.п.), длина в байтах. Поясним эти структуры на примере построения информационной модели конкретной предметной области.

Пусть нас интересует проблема учета всех затрат предприятия, например, строящего фабрику. Затраты должны учитываться по объектам, по видам работ и по организациям-подрядчикам. В соответствии с нашими интересами построим таблицы:

Объекты [Код об, Объект], Работы [Код раб, Работа],

Организации [Код орг, Организация, Индекс, Город, Адрес, Телефон, Факс, Эл почта]

и собственно таблицу для учета затрат Затраты [Код затр, Затрата, Код об, Код раб, Код орг, Дата, Стоимость].

Каждая из этих таблиц имеет имя, выделенное полужирным курсивом, и состоит из записей - строк, состав которых (перечень полей) указан в квадратных скобках. Имена полей – это имена столбцов таблицы. Курсивом выделены имена ключевых полей. Значение ключевого поля (ключа) однозначно определяет запись в таблице. По возрастанию значений ключа СУБД сортирует записи в таблицах.

Ключевые поля служат также для связывания таблиц. Например, таблица Затраты может содержать множество записей, в которых указан код одной и той же организации-подрядчика. Предположим, одна и та же организация проектировала и строила мост, подъездную дорогу, трансформаторную подстанцию и, возможно, другие объекты. При обработке записей таблицы Затраты может потребоваться факс этой организации – его легко найти в таблице Организации, которая должна содержать единственную запись с требуемым нам кодом организации в поле Код орг. Связь между этими таблицами называется связью «один ко многим» (1 ): ссылка на одну запись в таблице Организации содержится во многих записях таблицы Затраты. Если бы мы

115

ввели еще одну таблицу – Банковские реквизиты, в которой для каждой орга- низации-подрядчика указали бы ее код, название банка, номера счетов и другие данные, используемые при оформлении платежей, то связь между этой таблицей и таблицей Организации была бы связью «один к одному» (1 1), т.к. в этих таблицах есть только по одной записи с одним и тем же значением ключевого поля Код орг. В некоторых ситуациях ключ может состоять из двух-трех полей и тогда он называется составным. Например, подразделение может идентифицироваться номером цеха и номером бригады в данном цехе.

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

Итак, в нашем примере база данных охватывает несколько взаимосвязанных таблиц «объекты-свойства». Такие базы данных называются реляционными. Это понятие (relation – отношение) было введено известным американским специалистом в области систем управления базами данных И.Ф.Коддом. В 1994 г. отмечалась 25 годовщина с того момента, как И.Ф.Кодд (тогда научный сотрудник корпорации IBM) предложил реляционную модель. Тем не менее первая коммерческая реляционная СУБД, названная Oracle [11], появилась только в 1979 г. Она была разработана небольшой компанией Silicon Valley. Сегодня это Oracle Corporation – крупнейший в мире поставщик реляционных СУБД и сопутствующих программных продуктов. Первой СУБД клиент/сервер стал выпущенный в 1985 г. Oracle 5. В настоящее время широкое распространение получили более поздние реляционные СУБД, созданные корпорациями Oracle, Sybase, Microsoft и некоторыми другими. Современные ведущие реляционные СУБД сочетают реляционную модель данных с технологией клиент/сервер и с объектно-ориентированным подходом к созданию программных средств.

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

рая отражает предметную область в виде совокупности информационных объектов и их структурных связей.

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

116

предприятием, окажется «на своем месте» - в конкретной таблице конкретной базы данных, а, во-вторых, отпадает необходимость в разработке огромного числа процедур обработки данных. Последнее объясняется тем, что типовые операции над содержимым структур данных (таблиц, записей, полей) уже запрограммированы и входят в состав СУБД – ведь системы управления базами данных как раз и предназначены для создания баз данных и последующего манипулирования этими данными. СУБД, работающую со структурами данных, можно сравнить с техническими средствами на современном транспорте – они работают с контейнерами, не зависимо от того, что в этих контейнерах перевозится в конкретном случае.

9.2. Нормализация отношений (таблиц) и обеспечение целостности данных в реляционной базе данных

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

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

Отношение считается нормализованным, или приведенным к первой нормальной форме, если все его атрибуты (свойства объектов, описываемые в полях записей) простые, т.е. далее неделимы. Отношение Организации (см. подраздел 9.1) можно считать приведенным к первой нормальной форме. Единственный его атрибут, который теоретически еще можно разделить на части, - это Адрес. Но практически этот атрибут уже не делим, так как улица и дом, где расположена каждая организация, нам не могут потребоваться в отдельности. А такие атрибуты, как Город, уже отделены от адреса. Так что, если нам потребуется какая-нибудь сводка по организациям-подрядчикам, расположенным в определенном городе, то мы легко сможем отобрать соответствующие записи.

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

117

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

Понятие третьей нормальной формы основывается на понятии нетранзитивной зависимости [4]. Транзитивная зависимость наблюдается, если один из атрибутов зависит от ключа, а другой – от этого атрибута. Например, если в таблицу Затраты включить не только код организации, но и город, в котором она расположена, то получится, что атрибут Код орг функционально зависит от ключа Код затр , а атрибут Город зависит, в свою очередь, от атрибута Код орг и, следовательно, транзитивно зависит от ключа.

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

Приведенный пример показывает, что казалось бы теоретическое понятие нормализации отношений играет важную практическую роль, позволяя устранить дублирование данных, облегчить их ввод и корректировку в базе данных. Другое важное понятие – обеспечение целостности данных в базе данных. Этот термин подразумевает, что в СУБД должны иметься средства, не позволяющие нарушать корректность и полноту хранимой информации. Например, СУБД обычно содержат средства поддержания ссылочной целостности. Так, если мы попытаемся в запись таблицы Затраты ввести код объекта 777, а в таблице Объекты еще нет объекта с кодом 777, то СУБД должна воспрепятствовать нашему намерению, если, конечно, мы выбрали соответствующий режим ее работы. Кроме того, когда мы вводим новую запись, СУБД проверяет уникальность ее ключа, обеспечивая целостность таблицы. Наконец, СУБД проверяет целостность домена. Домен – это множество допустимых значений столбца. Так в столбец Код орг могут входить только целые числа. Если при вводе записи введем в поле Код орг хотя бы одну букву или действительное число, запись не будет включена в таблицу.

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

118

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

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

9.3. Последовательность действий при создании и использовании базы данных

9.3.1. Создание базы данных

Сначала создадим пустую базу данных “Затраты”. Для этого откроем приложение Access, выберем пункт меню Файл/Создать, в открывшемся диалоговом окне подтвердим желание создать новую БД нажатием кнопки Ok. После этого откроется стандартное диалоговое окно Сохранить как. В нем надо выбрать каталог для размещения новой базы данных и дать имя файлу, например, Затраты.mdb. Этот файл будет содержать описание структуры таблиц, сами таблицы, формы, запросы и отчеты, которые будут созданы в рамках базы данных “Затраты”. На рис. 9.1 показано окно приложения Access. В этом окне после создания пустой базы данных “Затраты” появится окно базы данных с заголовком “Затраты: база данных”, только в этом окне еще не будет перечня таблиц и, конечно, в окне приложения Access еще не будут открыты окна таблиц для просмотра и корректировки наших четырех таблиц (см. подраздел 9.1). На рисунке эти таблицы показаны заранее, чтобы читатель яснее представлял то, что еще предстоит создать.

9.3.2. Создание таблиц базы данных, ввод данных во вспомогательные таблицы

Теперь, когда пустая база данных существует, создадим пустые таблицы, т.е. пока только определим их структуру – опишем каждое поле записи. Начинать надо со вспомогательных таблиц Объекты, Работы и Организации.

Для создания таблицы Объекты в окне базы данных выберем тип объектов, с которыми собираемся работать, а именно – Таблицы. Теперь нажмем кнопку Создание таблицы в режиме конструктора. В открывшемся диалого-

вом окне (Рис. 9.2) сначала создадим таблицу Объекты (на рисунке – слева, внизу). В графе Имя поля введем Код об, а в поле со списком Тип данных выберем Числовой. После этого в поле со списком Размер поля выберем Целое. Затем, нажав на панели инструментов кнопку с изображением ключа, сделаем поле Код об ключевым. Теперь определим второе поле – поле Объект. В графу Имя поля введем его название, а в поле со списком Тип данных выберем Текстовый. Длина текстового поля по умолчанию равна 50 байтам, и это нас

119

устраивает. После этого окно, в котором мы определяли поля таблицы Объекты, можно закрыть с помощью кнопки системного меню (в строке заголовка окна, справа). При закрытии этого окна появится диалоговое окно, в котором надо задать имя таблицы – “Объекты”. Теперь таблица создана, ее можно открыть с помощью кнопки Открыть в окне базы данных и ввести в нее записи (см. рис. 9.1). Сразу после создания можно ввести большую часть записей во вспомогательные таблицы. Основная таблица Затраты будет пополняться очень долго.

Рис. 9.1. Рабочее окно СУБД Access с открытыми таблицами БД «Затраты»

Для ввода данных в таблицу надо “встать” в нужное поле с помощью щелчка мыши или с помощью клавиш перемещения курсора и вводить данные в это поле. После ввода значения нажимают клавишу <Enter> – этим завершается ввод данных в ячейку таблицы, и курсор перемещается в следующее поле записи или в первое поле очередной записи. Для перемещения курсора также можно пользоваться клавишами <Tab> и <Shift>+<Tab>. Кроме того, переме-

120