Компьютеры        11.07.2023   

Запись базовой таблицы. Базы данных

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

База данных - это организованная структура, предназначенная для хранения информации.

СУБД - инструментальное программное обеспечение, предназначенное для организации ведения БД.

Основным элементом БД является таблица.

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

Основные свойства полей БД.

Имя поля - определяет как надо обращаться к данным поля (имена используются как заголовки таблиц).

Тип данных (Data Type). Тип данных определяется значениями, которые предполагается вводить в поле, и операциями, которые будут выполняется с этими значениями. В Access допускается использование девяти типов данных. Список возможных типов данных вызывается нажатием кнопки списка при выборе типа данных каждого поля:

    Текстовы й (Техt) - тип данных по умолчанию. Текст или цифры, не участвующие в расчетах. Число символов в поле не должно превышать 255.

    Поле МЕМО (Меmо). Длительный текст, например, некоторое описание или примечание. Максимальная длина 64 000 символов

    Числовой (Number). Числовые данные, используемые в математических вычислениях

    Денежный (Currency). Денежные значения и числовые данные, используемые в расчетах

    Дата/время (Data/Time). Значения даты или времени, относящиеся к годам с 100 по 9999 включительно. Длина поля 8 байт

    Счетчик (AutoNumber). Тип данных поля, в которое для каждой новой записи автоматически вводятся уникальные целые, последовательно возрастающие (на 1), или случайные числа.

    Логический (Yes/No). Логические данные, которые могут иметь одно из двух возможных значений Да/Нет

    Мастер подстановок.. .(Lookup Wizard...). Выбор этого типа данных запускает мастера подстановок. Мастер строит для поля список значений на основе полей из другой таблицы. Значения в такое поле будут вводиться из одного из полей списка. Соответственно, фактически тип данных поля определяется типом данных поля списка. Возможно также определение поля со списком постоянных значений. Общие свойства поля Общие свойства задаются для каждого поля на вкладке Общие (General) и зависят от выбранного типа данных. Для отображения свойств поля необходимо установить курсор на строке соответствующего поля:

Размер поля (FieldSize) задает максимальный размер данных, сохраняемых.

15. Типы таблиц и ключей в реляционных базах данных. Индексы. Взаимосвязи таблиц. Обеспечение целостности данных.

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

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

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

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

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

Индексы

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

Взаимосвязи таблиц

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

Виды связей

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

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

Обеспечение целостности данных

Для связей типа 1:1 и 1:М можно задать параметр обеспечения связной целостности данных, а также автоматическое каскадное обновление и удаление связанных записей. Обеспечение связной целостности данных означает, что Access при корректировке базы данных обеспечивает для связанных таблиц контроль за соблюдением следующих условий:

1. В подчиненную таблицу не может быть добавлена запись с несуществующим в главной таблице значением ключа связи;

2. В главной таблице нельзя удалить запись, если не удалены связанные с ней записи в подчиненной таблице;

3. Изменение значений ключа связи в записи главной таблицы невозможно, если в подчиненной таблице имеются связанные с ней записи.

При попытке пользователя нарушить эти условия в операциях добавления и удаления записей или обновления ключевых данных в связанных таблицах Access выводит соответствующее сообщение и не допускает выполнения операции.

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

Приобретение практических навыков работы с

Системой Управления Базами Данных Access для Windows

Цель работы

Практически научить студентов основным приемам работы с СУБД Access для Windows :

    создание базовых таблиц;

    создание межтабличных связей;

    создание запросов;

    создание составной формы, состоящей из основной и подчиненной форм;

    создание отчетов.

Краткие сведения

  1. Запуск Microsoft access для Windows

Рассмотрим один из способов запуска СУБД Microsoft Access .Нажав кнопку Пуск , получаем доступ к главному меню, которое тут же раскроется, а через это меню выполняем команду Программы и выбираем необходимую программу - Microsoft Access . Программа будет загружена, на панели задач появится новая кнопка, на экране будет открыто окно Microsoft Access .

  1. Основные понятия Microsoft Access

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

Реляционные БД – базы данных с табличной формой организации информации. Реляционная БД состоит из одной или нескольких взаимосвязанных двумерных таблиц.

СУБД (Система Управления Базами Данных) – программное обеспечение для работы с базами данных. Большинство современных СУБД предназначены для работы с реляционными базами данных.

Данные – это все, что вы хотите сохранить и к чему намерены обращаться неоднократно. В Microsoft Access данными могут быть тексты, числа, даты и картинки. Если, например, вы продаете книги, то можете хранить их названия, изображения обложек, координаты авторов, количество пачек на складе, цены на них, даты продаж.

Запись – строка таблицы. Одна запись содержит информацию об отдельном объекте, описываемом в БД.

Поле – столбец таблицы. Поле содержит определенное свойство объекта. Каждое поля имеет имя. Внутри имени поля нельзя использовать пробелы. Для связки между словами можно ставить знак подчеркивания.

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

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

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

  1. Свойства полей БД:

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

    тип поля – определяет тип данных, которые могут содержаться в данном поле;

    размер поля – определяет предельную длину (в символах) данных, которые могут размещаться в данном поле;

    формат поля – определяет способ форматирования данных в ячейках, принадлежащих полю;

    маска ввода – определяет форму, в которой вводятся данные в поле (средство автоматизации ввода данных);

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

    значение по умолчанию – то значение, которое вводится в ячейки поля автоматически;

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

    сообщение об ошибке – текстовое сообщение, которое выдается автоматически при попытке ввода в поле ошибочных данных;

    обязательное поле – свойство, определяющее обязательность заполнения данного поля при наполнении базы;

    пустые строки – свойство, разрешающее ввод пустых строковых данных (от свойства Обязательное поле отличается тем, что относится не ко всем типам данных, а лишь к некоторым, например, к текстовым);

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

  1. Заполнение и редактирование БД

После запуска СУБД Microsoft Access, появится окно, в котором необходимо отметить соответствующее действие: создать новую или открыть старую базу данных.

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

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

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

  1. Извлечение информации из БД

Запрос – это средство извлечения информации из базы данных, отвечающей некоторым условиям, задаваемым пользователем. Команды запроса справки могут формироваться пользователем двумя основными способами: 1) путем ввода команды; 2) с помощью специальных конструкторов формирования запросов.

Простое логическое выражение представляет собой либо операцию отношения , либо поле логического типа. Сложное логическое выражение содержит логические операции "И ", "ИЛИ ", "НЕ ".

Сортировка – процесс упорядочения записей в таблице.

Порядок сортировки – один из двух вариантов упорядочения записей: по возрастанию значений ключа или по убыванию значений ключа.

  1. Проектирование и нормализация БД

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

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

    каждая таблица имеет главный ключ;

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

    в таблицах отсутствуют группы повторяющихся значений.

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

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

  1. Пример создания базы данных "Результат сессии"

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

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

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

Вносить данные в таблицу можно в Режиме таблицы , выбрав команду Режим таблицы из пункта меню Вид . Также можно создать новую таблицу в Режиме конструктора , выбрав команду Режим конструктора из пункта меню Вид . Переключение между режимами осуществляется двумя кнопками на панели инструментов.

Р

ис. 1

При создании таблицы целесообразно задать ключевое поле. Это поможет впоследствии, при организации связей между таблицами. Для задания ключевого поля достаточно щелкнуть на его имени правой кнопкой мыши и в открывшемся динамическом меню выбрать пункт Ключевое поле . Microsoft Access вводит в таблицу в качестве ключевого поля то, в котором находится слово Счетчик (рис. 1). Нет нужды самостоятельно заполнять это поле - Microsoft Access автоматически присвоит номер каждой из ваших записей. Остальную информацию придется вводить с клавиатуры. Для перехода к следующей записи нажмите клавишу .

Присвоение имен полям и выбор типа данных

В столбце Тип данных таблицы, открытой в режиме конструктора, нужно определить необходимый тип данных и присвоить определенные имена полям (рис. 2).

Тип данных:

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

поле Memo – специальный тип данных для хранения больших объемов текста (до 65535 символов). Физически текст не хранится в поле. Он хранится в другом месте базы данных, а в поле хранится указатель на него, но для пользователя такое разделение заметно не всегда;

числовой – тип данных для хранения действительных чисел;

дата/время – тип данных для хранения календарных дат и текущего времени;

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



счетчик – специальный тип данных для уникальных (не повторяющихся в поле) натуральных чисел с автоматическим наращиванием. Естественное использование - для порядковой нумерации записей;

логический – тип для хранения логических данных (могут принимать только два значения, например, Да или Нет );

поле объекта OLE – специальный тип данных, предназначенный для хранения объектов OLE , например, мультимедийных. Реально такие объекты в таблице не хранятся, они хранятся в другом месте внутренней структуры файла базы данных, а в таблице хранятся только указатели на них;

гиперссылка – специальное поле для хранения адресов URL Web -объектов Интернета. При щелчке на ссылке автоматически происходит запуск броузера и воспроизведение объекта в его окне;

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

Каждый тип данных связан с вполне определенным набором свойств.

Установление связей между таблицами

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

В Microsoft Access можно создать два типа связей: отношение один-ко-многим (рис. 7) или отношение один-к-одному (рис. 6). В первом случае, более распространенном, одна запись таблицы связана с множеством записей другой таблицы.

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

Создание связи между двумя таблицами

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

Например, в двух таблицах студент и сессия (рис. 1 и рис. 3) количество записей одинаково, следовательно, здесь тип связи один – к –одному . Для осуществления связи необходимо предварительно в режиме Конструктора (таблицы студент и сессия) установить Ключевое поле с помощью динамического меню, нажав мышью напротив поля Номер. Установив Ключевое поле в двух таблицах, их можно связать.

Например, в двух других таблицах: сессия (рис. 3) и стипендия (рис.4) , количество записей разное, следовательно, здесь тип связи один – ко – многим . В этом случае необходимо выбрать из них базовую таблицу. Базовая таблица – эта та таблица, в которой нет совпадающих записей в одинаковых полях двух таблиц (совпадающие поля – Результат ). В данном примере базовой будет таблица стипендия и только в ней необходимо установить Ключевое поле напротив поля Результат . Установив Ключевое поле в таблице стипендия , можно установить тип связи один – ко - многим .

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

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

В данном примере в окне Схема данных показана взаимосвязь между таблицами базы данных sess .dmb (рис. 5). Дополнительные две таблицы: сессия и стипендия показаны на рис. 3 и рис. 4 соответственно.

студент и таблицей сессия необходимо:

    Перетащите мышью поле Номер из списка полей студенты в поле Номер из списка полей сессия Связи (рис.6).

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

    Нажмите на кнопку Создать , теперь таблица студент связана с таблицей сессия . Видно линию, которая соединяет два совпадающих поля в этих таблицах (рис. 5). Взаимосвязь будет сохраняться до тех пор, пока ее не удалите. Два раза щелкнув по данной связи, можно ее изменить.

    Закройте данное окно, при этом система спросит, сохранить ли изменения макета Схема данных . Заметим, что от вашего решения зависит лишь графическое представление окна. Установленные же связи останутся в вашей базе данных. Нажмите на кнопку Да , чтобы сохранить представление окна взаимосвязей.

Открыв в следующий раз окно Схема данных , увидите его таким, каким только что сохранили.

Для установления связи между таблицей стипендия и таблицей сессия необходимо:

    Перетащите мышью поле Результат из списка полей стипендия в поле Результат из списка полей сессия . Отпустив клавишу мыши, появится диалоговое окно Связи (рис.7).

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

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

Работа с запросами

Эти объекты служат для извлечения данных из таблиц и предоставления их пользователю в удобном виде. Запрос определяет группу записей, с которыми необходимо работать. Можно применить запрос для сортировки данных или для просмотра целого подмножества сведений из вашей базы данных. Например, вместо того, чтобы просматривать всю таблицу студент, можно просмотреть сведения только о студентах, получивших оценки хорошо или отлично (рис. 9) или о студентах, получивших также и удовлетворительные оценки (рис. 8).

Запросы лучше готовить вручную, с помощью Конструктора . Для этого необходимо из меню Вставка выбрать команду Запрос , при этом появится диалоговое окно Новый запрос , в котором необходимо выбрать режим Конструктор . Создание запроса в режиме Конструктор откроет специальный бланк, называемый бланком запроса по образцу (рис. 10, 11). Он состоит из двух областей. В верхней отображается структура таблиц, к которым запрос адресован, а нижняя область разбита на столбцы – по одному столбцу на каждое поле будущей результирующей таблицы.

С помощью команды Добавить таблицу из меню Запрос откроется диалоговое окно Добавление таблицы . Выбрав необходимые таблицы, в верхней области (рис. 10) откроются те таблицы, к которым обращен запрос. Между этими таблицами необходимо установить нужные связи для правильного запуска запроса. Затем из них переместите мышью те поля, которые должны войти в результирующую таблицу. При этом автоматически заполняются столбцы в нижней части бланка. Сформировав структуру запроса, его закрывают, дают ему имя и в дальнейшем запускают двойным щелчком на значке в окне База данных.

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

В нижней части бланка имеется специальная строка Условие отбора . Для каждого поля в этой строке можно задать индивидуальное условие, например, на рис. 10 введено условие 0 в столбце Процент ,на рис. 11 введено условие >0 .

Р

ис. 3

Р

ис. 4

Р

ис. 5



Р

ис. 7

Р

ис. 8



Р

ис. 10

Р

ис. 11

Другие виды запросов

Мы рассмотрели запросы на выборку. Это самые простые и, в то же время, наиболее распространенные виды запросов. Однако существуют и другие виды запросов. К ним относятся, прежде всего:

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

    повторяющиеся записи (рис. 13);

    записи без подчиненных (рис. 14).

Р
ис. 12

Р
ис. 13

Р
ис. 14

Работа с формами


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

Существует три вида автоформ (рис.15): в столбец , ленточная и табличная . Автоформа в столбец (рис. 16) отображает все поля одной записи – она удобна для ввода и редактирования данных. Ленточная автоформа (рис. 17) отображает одновременно группу записей – ее удобно использовать для оформления вывода данных. Табличная – похожа на таблицу, на которой она основана.

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

Р
ис. 16



Рис. 17

Структура формы

Форма имеет три основных раздела: область заголовка, область данных и область примечания. Линии, разделяющие разделы, перетаскиваются по вертикали с помощью мыши – это позволяет изменять размеры разделов так, как требуется. Элементы управления, которыми может пользоваться разработчик, представлены на Панели элементов . Ее можно открыть из меню Вид командой Панель элементов только в режиме Конструктора . Выбор элемента управления выполняется одним щелчком на его значке в Панели элементов , после чего следующим щелчком в поле формы вставляется место, куда он должен быть поставлен. Вместе с элементом в поле формы вставляется его присоединенная надпись. Редактированием свойства элемента управления можно дать элементу управления более содержательную подпись через контекстное меню.

Представление в форме связанных данных

У вас может возникнуть необходимость работать с формой, которая содержит информацию сразу из двух таблиц или из таблицы и запроса. В этом случае необходимо создать форму с подчиненной формой , которая представляет собой форму внутри другой формы. В большинстве случаев подчиненная форма связана с основной . Например, основная форма студент (рис. 19) базы данных sess . mdb , создается с помощью панели Формы , кнопки Создать и выбора Мастера форм (смотри пункт создание форм с помощью мастера). Форма, которая должна быть подчиненной, может иметь вид таблицы. При этом, форма создается с помощью панели Форма , кнопки Создать и выбора пункта Автоформа: табличная в появившемся окне. И в этом же окне выбрать нужную таблицу, в данном примере, таблицу сессия , а затем присвоить название данной форме подч1 .

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

Создание подчиненной формы

Выбрав кнопку Подчиненная форма , необходимо подвести мышь в область примечания и вы увидите, что ней появится крестик. Затем движением мыши установите границы внедренной области, состоящей из двух частей. В первой части необходимо изменить название подчиненной формы. Во второй – нажать правую кнопку и в появившемся динамическом меню выбрать пункт Свойства , появится окно Подчиненная форма / отчет . В данном окне выбрать панель Все , ввести имя Подчиненной формы и выбрать Объект-источник , в данном примере, объект-источник – подч1 (рис. 18). Затем нажать кнопку закрыть и данную область растянуть, чтобы все данные таблицы были видны. Затем сохранить полученную составную форму, которая уже состоит из двух форм: основной (в примере – студент ) и подчиненной (в примере – сессия ) и закрыть, т.е. вернетесь в окно Базы данных .

В итоге составная форма сост_подч представлена на рис. 19.

Р
ис. 18

Р

ис. 19

Создание форм с помощью мастера

Мастер форм – специальное программное средство, создающее структуру формы в режиме диалога с разработчиком. Мастер форм можно запустить из окна База данных , щелкнув на панель Формы , а затем на кнопку Создать и в появившемся окне Новая форма выбрать (рис. 15) пункт Мастер формы . Далее необходимо выполнить следующее:

    на первом этапе работы Мастера форм выбирают таблицы или запросы, которые войдут в будущую форму;

    на втором этапе - необходимые поля таблицы или запроса;

    на третьем этапе - внешний вид формы;

    на четвертом этапе – стиль оформления формы;

    на последнем этапе выполняется сохранение формы под заданным именем. Здесь можно включить переключатель Изменить макет формы , который открывает только что созданную форму в режиме Конструктора .

Создание отчетов

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

Данные станут более информативными, если их сгруппировать по определенным категориям. Группа представляет собой совокупность родственных записей. Когда, например, просматриваем данные об успеваемости студентов, то лучше получить сведения, сгруппированные по номерам групп (рис. 20).

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

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

Редактирование структуры отчета выполняют в режиме Конструктора .

Р

ис. 20

Задания и порядок выполнения

Варианты для заданий с № 1 по № 5 определяются преподавателем.

Задание № 1. Создание собственной базы данных и создание таблиц в ней (таблицы заполняются в Режиме таблиц)

Задание № 2. Установление связей между таблицами.

Самостоятельно определить базовую таблицу и тип связи между таблицами.

Задание № 3. Формирование запроса к многотабличным базам данных (с помощью Конструктора)

Замечание : При формировании запросов к многотабличным базам данных нужно указывать, к какой таблице относится то или иное поле. При определении условия поиска обычно название таблицы отделяется от названия поля точкой. Формирование запросов с использованием полей из различных БД имеет смысл только в том случае, если между этими таблицами установлены связи.

Задание № 4. Создание форм (с помощью Мастера форм) и составных форм (с помощью Конструктора)

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

Задание № 5. Создание отчетов (с помощью Мастера отчетов)

Задание № 6. Создание перекрестного запроса в новой базе данных new .mdb

    Создайте таблицу 1.

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

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

Т
аблица 1

Таблица 2



Контрольные вопросы

    Какие этапы создания БД известны?

    Как осуществить проектирование БД?

    Что означает нормализованная БД?

    Какие типы данных могут храниться в полях базы данных?

    Каковы требования к связывающим таблицам?

    Поясните, что означают связи: один к одному и один ко многим?

    Для чего необходимо использовать Схему данных ?

    Для чего необходим режим Конструктор ?

    Какие известны виды запросов?

    Из каких частей состоит составная форма?

Информатика. Базовый курс / Симонович С.В. и др. - СПб: Питер, 2001.

2.4. Работа с запросами. Запросы на выборку

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

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

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

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

Упорядочение записей в результирующей таблице. Если необходимо, чтобы дан­ные, отобранные в результате работы запроса, были упорядочены по какому-либо полю, применяют сортировку . В нижней части бланка имеется специ­альная строка Сортировка . При щелчке на этой строке появляется раскры­вающийся список, в котором можно выбрать метод сортировки: по возрастанию или по убыванию . В результирующей таблице данные будут отсортированы по тому полю, для которого задан порядок сортировки. На рисунке 32 задана сортировка по полю Фамилия .

Управление отображением данных в результирующей таблице. В нижней части бланка запроса по образцу имеется строка Вывод на экран . По умолчанию предпо­лагается, что все поля, включенные в запрос, должны выводиться на экран, но это не всегда целесообразно. Бывают случаи, когда некое поле необходимо включить в запрос, но нежелательно, чтобы пользователь базы видел его содержание. В таких случаях отображение содержимого на экране запрещают сбросом флажка Вывод на экран . На рисунке 32 поле Город в результирующей таблице не будет показываться, хотя оно содержится в таблице. Необходимость включения этого поля в запрос обусловлена тем, что по нему задано условие отбора данных.

Рис. 32. Задание условий сортировки записей и показа полей в результирующей таблице запроса.

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

Простые запросы на выборку

Такие запросы используются для отбора записей из одной или нескольких взаимосвязанных таблиц в соответствии с заданными критериями отбора . Критерии отбора записей записываются в виде условий отбора в строке Условие отбора бланка запроса по образцу и расположенных под ней строках. Условия отбора записываются по определенным правилам записи. В следующей таблице приведены примеры записи условий отбора.

Критерий отбора записей

Запись условия отбора

Значение в поле начинается с символа ";А";, остальные символы могут быть любыми

Значение в числовом поле  = 60

Значение в текстовом поле НЕ равно ";Ontario";

Значения в поле типа дата в диапазоне от 1.12.96 до 15.12.96

BETWEEN 1.12.96 AND 15.12.96

Значение в числовом поле в диапазоне от 10 до 100

BETWEEN 10 AND 100

Значение в текстовом поле равно ";инженер"; или ";бухгалтер";

";инженер"; OR ";бухгалтер";

Значение в поле логического типа равно TRUE (истина)

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

Например, в случае записи условий отбора так, как показано на рисунке 33, будут отбираться те записи из таблицы СОТРУДНИКИ, для которых значение в поле КодСотрудника больше 4 и при этом значение в поле Оклад меньше 3000.

Рис. 33. Пример записи условий отбора в запросе.

В случае записи условий отбора так, как показано на рисунке 34, будут отбираться записи из таблицы СОТРУДНИКИ, для которых значение в поле КодСотрудника больше 4, или записи, для которых значение в поле Оклад меньше 3000, а также записи, для которых справедливы оба условия отбора.

Рис. 34. Пример записи условий отбора в запросе.

Вычисления в запросах на выборку

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

Для создания такого поля вместо имени поля записывается формула в следующем формате:

Имя поля: выражение

где выражение – формула для вычисления нужного значения.

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

Действия могут быть:

    арифметические: + (сложение), - (вычитание), * (умножение), / (деление), ^ (возведение в степень)

    логические: And (логическое умножение), Or (логическое сложение), Not (логическое отрицание)

    сравнения: > (больше), >= (больше либо равно), (не равно)

    соединения текстовых цепочек: & (например: [Фамилия] & "; "; & [Имя] )

На рисунке 35 показан пример запроса с вычисляемым полем Налог . При конструировании запроса в заголовке поля записывается формула Налог: [Оклад]*0,13 .

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

Чтобы вводить формулу было удобнее, можно нажать на клавиатуре Shift + F2 . Открывается диалоговое окно Область ввода для ввода формулы (рис. 36).

Рис. 36. Диалоговое окно Область ввода .

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

Рис. 37. Окно Построитель выражений .

Запросы с параметром

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

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

Если качестве параметров отбора нужно в указать верхнюю и нижнюю границы какого-либо значения, то следует ввести условие отбора в виде:

BETWEEN [Введите нижнюю границу] AND [Введите верхнюю границу]

Например,

BETWEEN [Введите нижнюю дату] AND [Введите верхнюю дату]

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

2.5. Итоговые запросы и запросы на изменение данных

Итоговый запрос – это запрос, в котором выводятся результаты статистических расчетов по какой-либо группе записей из одной или нескольких таблиц. Можно находить сумму (функция Sum ), среднее значение (функция Avg ), наибольшее значение (функция Max ) или наименьшее значение (функция Min ), количество знаний в группе (функция Count ).

Процедура создания итогового запроса похожа на процедуру создания запроса на выборку. При выполнении такого запроса требуется группировать записи по совпадающим значениям в каком-либо поле таблицы. Для выполнения группировки записей нужно щелкнуть по кнопке Групповые операции
на панели инструментов. В бланке запроса по образцу появляется дополнительная строка Групповая операция . В тех полях, по которым проводится группировка, надо установить функцию Группировка . В тех полях, где проводится итоговые операции, нужно в строке Групповая операция раскрыть список и выбрать одну из функций (Sum , Avg , Max , Min , Count и т. д.)

Пример. Таблица содержит данные о должностях и размерах окладов (рис. 40):

Рис. 40. Таблица СОТРУДНИКИ.

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

Рис. 41. Создание итогового запроса.

Результатом выполнения запроса будет следующая таблица (рис. 42):

Рис. 42. Результат выполнения итогового запроса.

Запрос на изменение данных – это запрос, который за одну операцию вносит изменения в несколько записей таблицы. Существует четыре типа запросов на изменение данных: на удаление записей, на обновление записей, на добавление записей, на создании таблицы.

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

Создание запроса на удаление записей таблицы


Пример. Требуется удалить из таблицы СОТРУДНИКИ все записи о сотрудниках, принятых на работу после 01.01.2000.

При заполнении бланка запроса перетаскиваем символ « * » в строку Поле первого столбца, включаем в бланк также поле Дата назначения . Для поля Дата назначения в строке Условие отбора вводим условие: >01.01.2000 (рис. 43).

В результате выполнения этого запроса из таблицы СОТРУДНИКИ будут удалены те записи таблицы, для которых значение в поле Дата назначения больше 01.01.2000.

Рис. 43. Создание запроса на удаление записей из таблицы.

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

Создание запроса на обновление записей таблицы

Пример. Требуется создать запрос на обновление, после выполнения которого в таблице СОТРУДНИКИ будут увеличены на 20% оклады сотрудников, принятых на работу до 01.01.2000.

При заполнении бланка запроса включаем в него поля Оклад и Дата назначения из таблицы СОТРУДНИКИ.

Для поля Оклад в строке Обновление вводим правило обновления: [Оклад] * 1,2

Для поля Дата назначения в строке Условие отбора вводим условие: (рис. 44).

В результате выполнения этого запроса в таблице СОТРУДНИКИ будут изменены значения в поле Оклад в тех записях таблицы, для которых значение в поле Дата назначения меньше 01.01.2000.

Рис. 44. Создание запроса на обновление записей базовых таблиц.

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

    Создание таблицы для экспорта в другую базу данных Microsoft Access. Например, требуется создать таблицу, содержащую несколько полей из таблицы СОТРУДНИКИ, а затем экспортировать эту таблицу в базу данных, используемую отделом кадров.

    Создание резервной копии таблицы.

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

Создание запроса на создание новой таблицы

Пример. Требуется создать запрос на создание новой базовой таблицы АДРЕСА_СОТРУДНИКОВ, которая должна содержать поля Фамилия , Имя , Отчество из таблицы СОТРУДНИКИ и поля Адрес , Телефон из таблицы ЛИЧНЫЕ ДАННЫЕ.

При заполнении бланка запроса включаем в него требуемые поля из таблиц СОТРУДНИКИ и ЛИЧНЫЕ ДАННЫЕ (рис. 45). Нажав кнопку Тип запроса , выбираем Создание таблицы и вводим в диалоговом окне имя новой таблицы АДРЕСА_СОТРУДНИКОВ.

Выполнив запрос, переключаемся на вкладку Таблицы в окне База данных . Можем убедиться в том, что в списке таблиц базы данных появилась новая базовая таблица с именем АДРЕСА_СОТРУДНИКОВ.

Рис. 45. Создание запроса на создание новой базовой таблицы.

2.6. Работа с отчетами

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

Средства автоматического проектирования отчетов реализованы автоотчетами (База данных Создать Новый отчет Автоотчет в столбец ). Кроме автоотчетов «в столбец» существуют «ленточные» автоотчеты (рис. 46, 47). В режиме Автоотчет можно создать только такой отчет, в котором выводятся все поля и записи из базовой таблицы или запроса .

Рис. 46. Автоотчет «в столбец».

Рис. 47. Автоотчет «ленточный».

Средством автоматизированного создания отчетов является Мастер отчетов (запускается двойным щелчком на значке Создание отчета с помощью мастера в окне База данных .

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

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

Рис. 48. Вид отчёта в режиме Конструктор .

2.7. Вопросы для самоконтроля

    Какие объекты БД Microsoft Access используются для хранения данных?

    Какие объекты БД Microsoft Access используются для отбора данных из базовых таблиц в соответствии с какими-либо критериями отбора?

    Чем результирующая таблица запроса отличается от базовой таблицы БД Microsoft Access?

    Каково назначение экранных форм БД Microsoft Access?

    Какие объекты БД Microsoft Access используются для вывода данных из таблиц или запросов на печать?

    Каково назначение страниц доступа к данным?

    Для чего используются макросы и модули БД Microsoft Access?

    Укажите основные свойства полей таблицы реляционной БД.

    Какого типа данные может содержать таблица БД Microsoft Access? Охарактеризуйте основные типы данных: текстовый, числовой, дата/время, счетчик, логический, MEMO, OLE.

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

В этой статье

Обзор

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

    Запись. Содержит конкретные данные, например информацию об определенном работнике или продукте.

    Поле. Содержит данные об одном аспекте элемента таблицы, например имя или адрес электронной почты.

    Значение поля. Каждая запись содержит значение поля, например Contoso, Ltd. или [email protected] .

Свойства таблиц и полей

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


1. Свойства таблицы

2. Свойства поля

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

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

Типы данных

У каждого поля есть тип данных. Тип данных поля определяет данные, которые могут в нем храниться (например, большие объемы текста или вложенные файлы).

Тип данных является свойством поля, однако он отличается от других свойств:

    Тип данных поля задается на бланке таблицы, а не в области Свойства поля .

    Тип данных определяет, какие другие свойства есть у этого поля.

    Тип данных необходимо указывать при создании поля.

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

Примеры автоматического определения типа данных

Ниже показано, как выполняется автоматическое определение типа данных в режиме таблицы.

Вводимые данные

Тип данных для поля, назначаемый Access

http://www.contoso.com

Вы можете использовать любой допустимый префикс протокола IP. Например, являются допустимыми префиксы http://, https:// и mailto:.

Число, длинное целое

Число, длинное целое

Число, double

Число, double

Распознаваемые форматы даты и времени зависят от языкового стандарта.

Дата и время

Дата и время

Дата и время

Дата и время

Дата и время

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

Денежный

Число, double

Число, double

Число, double

Отношения между таблицами

Хотя в каждой из таблиц хранятся данные по отдельному объекту, в базе данных Access все они обычно связаны между собой. Ниже приведены примеры таблиц в базе данных.

    Таблица клиентов, содержащая сведения о клиентах компании и их адреса.

    Таблица продаваемых товаров, включающая цены и изображения каждого из них.

    Таблица заказов, служащая для отслеживания заказов клиентов.

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

Ключи

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

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

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


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

2. Внешний ключ (определяется по отсутствию значка ключа)

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

Преимущества использования связей

Раздельное хранение данных в связанных таблицах обеспечивает указанные ниже преимущества.

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

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

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

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

Мы уже видели, что из данного множества таблиц, таких как DEPT и EMP, реляци­онные выражения позволяют получить множество других, например путем соедине­ния двух таблиц. Пришло время ввести еще несколько новых терминов. Исходные (данные) таблицы называются базовыми таблицами; а таблицы, полученные из них путем выполнения каких-либо реляционных выражений, называются производными таблицами. Поэтому базовые таблицы существуют независимо, в то время как про­изводные таблицы зависят от базовых. Следовательно, если быть более точным, про­изводная таблица - это такая таблица, которая определяется в терминах других таб­лиц и, в конечном счете, в терминах базовых таблиц, а базовая таблица - это такая таблица, которая не является производной.

Реляционные системы, очевидно, должны предоставлять средства для создания в первую очередь базовых таблиц. В SQL, например, эта функция выполняется опера­тором CREATE TABLE (здесь TABLE используется в узком смысле, как базовая таб­лица). Базовые таблицы, конечно, должны быть именованными (т.е. их имена указы­ваются в операторах создания). Большинство производных таблиц, наоборот, неиме­нованные. Однако реляционные системы обычно поддерживают один определенный вид производных таблиц, называемый представлением, которое имеет имя. Таким образом, представление - это именованная таблица, которая, в отличие от базовой, не может существовать сама по себе, а определяется в терминах одной или несколь­ких именованных таблиц (базовых таблиц или других представлений).

Например, инструкцию

CREATE VIEW TOPEMPS AS (EMP WHERE SALARY > 33K) [ EMP#, ENAME, SALARY ] ;

можно использовать для определения представления TOPEMPS. Когда эта инструкция выполняется, выражение, следующее за ключевым словом as и фактически определяющее представление, не вычисляется, а просто "запоминается" системой (обычно путем сохра­нения в каталоге под указанным именем TOPEMPS). Однако для пользователя это теперь такая же реальная таблица базы данных с именем TOPEMPS, со строками и столбцами, как и показанная на рис. 3.5, но только в незатемненных участках. Иными словами, имя TOPEMPS обозначает виртуальную таблицу, т.е. таблицу, которая была бы результатом, если бы выражение, определяющее представление, было на самом деле вычислено.

Рис. 3.5. TOPEMPS как представление базовой таблицы EMP (незатемненные участки)

Однако будьте внимательны: отмечая, что имя TOPEMPS обозначает "таблицу, которая была бы результатом, если бы выражение, определяющее представление, бы­ло на самом деле вычислено", мы вовсе не хотим сказать, что она ссылается на от­дельную копию данных, т.е. мы не имеем в виду, что выражение, определяющее представление, на самом деле вычисляется. Наоборот, представление - это просто "окно" в основной таблице EMP. Более того, естественно, что любые изменения в ос­новной таблице будут автоматически и немедленно видны через такое "окно" (конечно, если эти изменения относятся к незатемненной части таблицы EMP); ана­логично, изменения в TOPEMPS будут автоматически и немедленно применены к ре­альной таблице EMP и, следовательно, будут видны через "окно".

Ниже показан пример запроса, использующего представление TOPEMPS:

(TOPEMPS WHERE SALARY < 42K) [ ЕМР#, SALARY ]

Результат будет выглядеть подобно следующему:

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

(TOPEMPS WHERE SALARY < 42K) [ ЕМР#, SALARY ]

модифицируется системой к виду

(((EMP WHERE SALARY > 33K) [ ЕМР#, ENAME, SALARY ])

WHERE SALARY < 42K) [ EMP#, SALARY ]

После определенного количества перегруппировок это выражение упрощается и при­нимает следующий вид:

(ЕМР WHERE SALARY > ЗЗК AND SALARY < 42К) [ ЕМР#, SALARY ]

А вычисление этого выражения приводит к результату, показанному ранее. Иными словами, первоначальная операция над представлением практически конвертируется в эквивалентную операцию над соответствующей базовой таблицей. Затем такой эк­вивалент операции выполняется обычным способом (точнее, оптимизируется и вы­полняется обычным способом).

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

CREATE VIEW JOINEXl AS (( ЕМР JOIN DEPT) WHERE BUDGET > 7M) [ EMP#, DEPT# ] ;

Мы еще вернемся к общему вопросу определения и обработки представлений в главе 17.

Между прочим, сейчас можно объяснить замечание в главе 2 относительно того, что термин "представление" ("view") имеет довольно специфическое значение в ре­ляционном контексте, не совпадающее со значением, приписанным ему в архитектуре ANSI/SPARC. На внешнем уровне этой архитектуры база данных воспринимается как "внешнее представление", определяемое внешней схемой (и разные пользователи мо­гут иметь разные внешние представления). В реляционных системах, наоборот, пред­ставление, как пояснялось выше, является специально именованной производной виртуальной таблицей. Поэтому реляционным аналогом "внешнего представления" ANSI/SPARC обычно служит множество из нескольких таблиц, каждая из которых является представлением в реляционном смысле. "Внешняя схема" состоит из опре­делений таких представлений.

Архитектура ANSI/SPARC является довольно общей и учитывает произвольные изменения между внешним и концептуальным уровнями. В принципе, даже типы структур данных, поддерживаемые на двух уровнях, могут быть разными: например, концептуальный уровень может быть основан на отношениях, в то время как пользо­ватель может иметь внешнее представление базы данных в виде иерархии. Однако на практике большинство систем использует одинаковые типы структур в качестве базо­вых на обоих уровнях, и реляционные продукты не являются исключением из этого общего правила - представление по-прежнему остается таблицей, как и базовая таб­лица. А поскольку одинаковые типы объектов поддерживаются на обоих уровнях, то на двух уровнях применяется один и тот же подъязык данных (обычно SQL). Дейст­вительно, тот факт, что представление - это тоже таблица, так же важен для реля­ционных систем, как для математики важен факт, что подмножество также является множеством.

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

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

Базовые таблицы "реально существуют" в том смысле, что они представляют дан­ные, которые действительно хранятся в базе данных;

Представления, наоборот, "реально не существуют", а просто предоставляют раз­личные способы просмотра "реальных" данных.

Однако такая характеристика, хотя это вряд ли имеет значение в неформальном смысле, неточно отражает истинное положение дел. Верно, что пользователи могут представлять таблицы как физически существующие; действительно, конечная цель реляционного подхода состоит в том, чтобы обеспечить представление пользователей о базовых таблицах, как о физически существующих, не заботясь о том, как эти таблицы физически представлены в памяти. Но (и это весьма существенное "но"!) - подобные рассуждения нельзя толковать так, что базовая таблица - это физически хранимая таб­лица (т.е. множество физически примыкающих, физически хранимых записей, каждая из которых состоит из прямой копии строки базовой таблицы). Как объяснялось выше, базовые таблицы лучше всего представлять как абстракцию некоторого множества хранимых данных, в которой скрыты все детали уровня хранения. В принципе, базовая таблица и ее хранимый дубликат могут отличатся в разной степени.

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