
- •Isbn © СибАгс, 2009
- •Тема 1. Роль и место баз данных в автоматизированных информационных системах 6
- •Тема 2. Модели бд 18
- •Тема 3. Реляционная модель бд 27
- •Предисловие
- •Тема 1. Роль и место баз данных в автоматизированных информационных системах
- •Технология субд
- •Размещение и архитектура субд
- •Функции субд
- •Тема 2. Модели бд
- •Модели организации данных Иерархическая модель хранения данных
- •Сетевая модель данных
- •Типы связей в модели
- •Тема 3. Реляционная модель бд
- •Структура реляционной базы данных
- •Типы данных
- •Ограничения целостности бд
- •Аномалии вставки (insert)
- •Аномалии обновления (update)
- •Аномалии удаления (delete)
- •Тема 4. Проектирование бд
- •Проектирование по методу erd-модели
- •Инфологическое проектирование баз данных
- •Структура бд
- •Количество таблиц и их имена
- •Типы данных и типы полей
- •Тема 5. Работа в субд Access
- •Мастера Access
- •Нормализация
- •Создание таблиц
- •Определение связей и обеспечение целостности данных
- •Создание форм для ввода данных
- •Создание запросов
- •Создание отчетов
- •Варианты заданий для лабораторной работы
- •Заключение
- •Литература Основная литература
- •3.3.2. Дополнительная литература
- •Глоссарий
Создание таблиц
В Microsoft Access существует два способа создания таблицы.
создать пустую таблицу для ввода собственных данных;
создать таблицу, используя уже существующие данные из другого источника.
Создание новой пустой таблицы
В Microsoft Access существует четыре способа создания пустой таблицы.
использование мастера баз данных для создания всей базы данных, содержащей все требуемые отчеты, таблицы и формы, за одну операцию. Мастера баз данных создает новую базу данных, его нельзя использовать для добавления новых таблиц, форм, отчетов в уже существующую базу данных;
мастер таблиц позволяет выбрать поля для данной таблицы из множества определенных ранее таблиц;
ввод данных непосредственно в пустую таблицу в режиме таблицы;
определение всех параметров макета таблицы в режиме конструктора.
Независимо от метода, примененного для создания таблицы, всегда имеется возможность использовать режим конструктора для дальнейшего изменения макета таблицы, например, для добавления новых полей, установки значений по умолчанию или для создания масок ввода.
Для создания новой таблицы можно воспользоваться любым из описанных способов. Обычно создание таблиц путем ввода данных используют тогда, когда структура таблицы очень проста, например справочник. Тогда Access сама догадывается о том, как установить свойства полей. Потом можно переключить таблицу в режим Конструктора и посмотреть, как эти свойства будут установлены. Использование Мастера таблиц оправдано, если нужно создать какую-то типовую таблицу, пользуясь шаблонами, которые он предложит. Наиболее часто применяется режим Конструктора, который может также потребоваться для просмотра структуры таблицы или для изменения данной структуры.
Создание новой таблицы с использованием существующих данных
В Microsoft Access существует два способа для создания таблиц на основе уже существующих данных.
данные можно связать или импортировать из другой базы данных Microsoft Access или из множества форматов файлов других программ.
создать таблицу, основанную на данных текущей таблицы, можно при помощи запроса на создание таблицы. Например, запросы на создание таблиц можно использовать для архивации старых записей, копирования таблиц, выбора групп записей для экспорта в другую базу данных или для использования в качестве основы для отчетов, отражающих данные в определенный момент времени.
Пример 9: Создать таблицы для базы, созданной из примера 8.
Таблица Договор.
Создадим таблицу, используя способ ввода данных непосредственно в пустую таблицу в режиме таблицы.
Для этого необходимо:
Открыть окно новой или существующей базы данных и в нем открыть объекты Таблицы.
Выделить в списке таблиц ярлык Создание таблицы путем ввода данных и дважды щелкнуть по нему левой кнопкой мыши. Появится пустая таблица со стандартными названиями столбцов: Поле1, Поле2 и т. д. По умолчанию для создания таблицы предоставляется десять полей.
Ввести свои собственные заголовки столбцов (№Договора, Дата договора, Сумма договора, НименованиеКлиента, Фамилия_Агента) для чего щелкнуть правой кнопкой мыши по заголовку столбца и выбрать из контекстного меню команду Переименовать столбец. Лишние поля удалить.
По окончании ввода нажать кнопку Закрыть (в верхнем правом углу окна таблицы).
В ответ на вопрос Сохранить изменения макета или структуры таблицы ‘Таблица 1’? нажать кнопку Да.
В окне Сохранение в поле Имя таблицы ввести имя таблицы (Договор) и нажать кнопку ОК
Microsoft Access выдаст сообщение Ключевые поля не заданы и вопрос Создать ключевое поле сейчас?. Нажать кнопку Нет, если одно или несколько полей в таблице могут однозначно идентифицировать записи в таблице и служить первичным ключом, или кнопку Да, и тогда Access создаст дополнительное поле, которое сделает ключевым. К определению ключевого поля таблицы мы еще вернемся.
В списке таблиц появится новая таблица. Таблица при этом создается автоматически. Поля ее будут иметь либо стандартные названия, либо те, которые были введены, а их типы будут определяться по введенным данным. В случае, если в один столбец будут введены данные разных типов, например числа, даты и текст, тип поля определяется как Текстовый.
Корректировку заголовков и типов полей на стадии создания таблицы можно осуществить в режиме конструктора. Из Режим таблица в режим Конструктор достаточно просто переключиться с помощью кнопки Вид на панели инструментов или с помощью команды Режим таблицы из меню Вид.
Поле №Договора определим как ключевое, воспользовавшись кнопкой панели инструментов Ключевое поле
Примечание:
Создание и изменение ключевых полей
Откройте таблицу в режиме конструктора.
Выделите одно или несколько полей, которые необходимо определить как ключевые.
Для выделения одного поля выберите область выделения строки нужного поля.
Для выделения нескольких полей нажмите и удерживайте клавишу CTRL и выберите область выделения для каждого поля.
Нажмите кнопку Ключевое поле на панели инструментов.
Допускается назначение ключевым полем поля, содержащего данные, однако, если в этом поле имеются повторяющиеся или пустые значения, будет выведено сообщение об ошибке. Получивший такое сообщение пользователь имеет три возможности: выполнить запрос на поиск повторяющихся записей для поиска записей, содержащих повторяющиеся или пустые значения в поле, и изменить эти значения; выбрать другое поле или добавить поле счетчика и определить его как ключевое.
Для составного ключа существенным может оказаться порядок образующих ключ полей. Сортировка записей осуществляется в соответствии с порядком ключевых полей в бланке в режиме конструктора таблицы.
Удаление ключевых полей
Если ключевое поле связано, то до удаления ключа необходимо удалить данную связь.
Откройте таблицу в режиме конструктора.
Выберите область выделения строки для текущего ключевого поля и нажмите кнопку Ключевое поле на панели инструментов.
При удалении поле или поля, обозначенные как ключевые, физически не удаляются, но они перестают быть ключевыми. В некоторых ситуациях может понадобиться временно удалить ключ. Например, импортированные в таблицу записи могут оказаться повторяющимися. До тех пор пока повторения не будут устранены, ключи должны быть удалены.
Для поля Дата договора установим тип поля Дата/время и маску ввода. В нижней части окна Конструктора таблиц на вкладке Общие в поле Маска ввода кнопкой
вызвать окно диалога Создание масок ввода, выбрать маску Краткий формат даты и нажать кнопку Далее для перехода к следующему окну.
В следующем окне можно изменить маску и заполнитель, а можно оставить установленные по умолчанию и нажать кнопку Готово для завершения создания маски.
Для поля Сумма договора установим тип поля Денежный и на вкладке Общие в поле Формат поля выберем из списка формат Денежный - щелкните левой кнопкой мыши по кнопке со стрелкой, чтобы раскрыть список, и выберите в нем нужный элемент
Таблица Клиенты.
Создадим таблицу, с помощью Мастера таблицы.
Для этого необходимо:
Дважды щелкнуть левой кнопкой мыши на ярлыке Создание таблицы с помощью мастера.
В диалоговом окне Создание таблиц выбрать назначение таблицы: Деловые.
В поле Образцы таблиц выбрать подходящую таблицу — Клиенты.
Переместить нужные поля из списка Образцы полей в список Поля новой таблицы. Для этого следует воспользоваться кнопками со стрелками: > — переместить одно поле, >> — переместить все поля.
При необходимости переименовать какое-либо поле, нужно выделить его в списке Поля новой таблицы и нажать кнопку Переименовать поле, затем ввести в диалоговом окне Переименование поля новое имя поля и нажать кнопку ОК. Нажать кнопку Далее.
В следующем диалоговом окне в поле Задайте имя для новой таблицы можно изменить первоначально выбранное имя таблицы.
Выбрать способ определения ключа Пользователь определяет ключ самостоятельно (имеется альтернатива Microsoft Access автоматически определяет ключ. Тогда в таблицу будет добавлено поле автоматической нумерации). Нажать кнопку Далее.
В поле со списком Выберите поле с уникальными для каждой записи данными необходимо выбрать имя поля (Наименование клиента), которое станет ключевым. Затем нужно определить тип данных, которые будут содержаться в ключевом поле. Мастер предлагает выбрать один из трех вариантов:
Последовательные числа, автоматически присваиваемые каждой новой записи;
Числа, вводимые пользователем при добавлении новых записей;
Сочетание чисел и символов, вводимое пользователем при добавлении новой записи.
В нашем случае необходимо выбрать третий вариант и нажать кнопку Далее.
В следующем окне Мастер таблиц предлагает установить связи между существующими таблицами и создаваемой таблицей. Он пытается сам создать связи между таблицами и предоставляет информацию о создаваемых связях пользователю в виде списка. При необходимости исправить связи нужно выбрать соответствующую строку списка и нажать кнопку Связи. Выбираем в списке строку не связана с "Договор" и нажимаем кнопку Связи.
В окне Связи нужно выбрать тип связи с данной таблицей. Выберите переключатель Одной записи в таблице "Клиенты" будет соответствовать много записей таблицы "Договор". Нажать кнопку ОК.
В диалоговом окне Мастера таблиц нажать кнопку Далее.
Открыв последнее диалоговое окно, можно решить, что вы будете делать с таблицей дальше. Выберите переключатель Изменить структуру таблицы, чтобы перейти в режим Конструктора таблиц, и нажмите на кнопку Готово. Откроется окно Конструктора таблиц. Структура таблицы будет выглядеть так
Проведем корректировку типов полей: ПочтовыйИндекс, №Дома, №Комнаты и НомерСчетаКлиента изменим с текстового на числовой.
Таблица Агенты.
Создадим таблицу с помощью режима Конструктор. В режиме Конструктора таблицы создаются путем задания имен полей, их типов и свойств. Чтобы создать таблицу в режиме Конструктора, необходимо:
Дважды щелкнуть левой кнопкой мыши на ярлыке Создание таблицы с помощью конструктора или нажать на кнопку Создать в верхней части окна базы данных, выбрать из списка в окне Новая таблица элемент Конструктор и нажать кнопку ОК. В том и в другом случае откроется пустое окно Конструктора таблиц
В окне Конструктора таблиц в столбец Имя поля ввести имена полей создаваемой таблицы.
В столбце Тип данных для каждого поля таблицы выбрать из раскрывающегося списка тип данных, которые будут содержаться в этом поле.
В столбце Описание можно ввести описание данного поля (не обязательно).
Примечание:
Хотя Access не требует, чтобы для поля вводилось описание, рекомендуем не экономить время и описать большинство полей в таблицах. При выборе поля в форме или таблице это описание выводится в строке состояния окна приложения. Поэтому оно может служить справкой для пользователя.
В нижней части окна Конструктора таблиц на вкладках Общие и Подстановка ввести свойства каждого поля или оставить значения свойств, установленные по умолчанию.
Поле ФамилияАгента определить как ключевое воспользовавшись кнопкой панели инструментов Ключевое поле
После описания всех полей будущей таблицы нажать кнопку Закрыть (в верхнем правом углу окна таблицы).
На вопрос Сохранить изменения макета или структуры таблицы 'Таблица1’?, нажать кнопку Да.
В окне Сохранить как в поле Имя таблицы ввести имя создаваемой таблицы (Агенты) и нажать кнопку ОК.
После указанных действий в списке таблиц в окне базы данных появятся имя и значок новой таблицы. Ввести данные в созданную таблицу можно, открыв таблицу в режиме Таблицы.
Существуют также и другие варианты, создания таблиц. Можно, например, создать таблицу с помощью запроса на создание таблицы. Можно создавать таблицы путем импорта из других баз данных или создавая связи с такими внешними таблицами
Создание новой таблицы с использованием существующих данных. Импорт таблиц из внешних источников
Access позволяет импортировать файлы многих известных форматов, включая dBASE, FoxPro, Excel, SQL Server, Oracle, Btrieve, многие текстовые форматы ASCII (в том числе с фиксированной длиной строки или заданным ограничителем), а также данные в формате HTML. В результате импортирования создается таблица Access.
Cсоздадим таблицу Офисы путем импорта ранее созданной в программе Excel.
Для этого необходимо выполнить:
Выберите команду Файл, Внешние данные, Импорт или одноименную команду контекстного меню.
В появившемся диалоговом окне Импорт раскройте папку, в которой находится файл, содержащий нужную таблицу. В раскрывающемся списке Тип файла выберите Microsoft Excel (*.xls). Выделите файл Офисы1 и нажмите кнопку Импорт. Появится диалоговое окно Импорт электронной таблицы.
В диалоговом окне Импорт электронной таблицы все зависит от того, сколько в книге файла Офисы1 листов. Каждый лист будет отдельной таблицей. Если в таблице есть именованные диапазоны, то они тоже будут восприняты как отдельные таблицы. Файл Офисы1 содержит таблицу на одном листе, которая и представлена в окне Образцы данных для листа «Лист1». Нажмите кнопку Далее. Появится новое диалоговое окно.
В появившемся окне необходимо указать, откуда берутся имена полей - будут ли они созданы автоматически или взяты из таблицы. Устанавливаем флажок Первая строка содержит заголовки столбцов и нажимаем кнопку Далее.
В появившемся окне необходимо указать, место сохранения данных (в новой таблице или в существующей). Выберите в новой таблице и нажмите кнопку Далее.
В появившемся окне предоставляется возможность изменить сведения в области Описание поля и, при необходимости, отказаться от импорта какого-нибудь поля. Оставляем все без изменений и нажимаем кнопку Далее.
В появившемся окне определяем ключевое поле – № офиса и нажимаем кнопку Далее.
В появившемся окне задаем имя импортированной таблицы Офисы1. Нажимаем кнопку Готово, таблица импортирована.
Примечание:
Если присоединяемые таблицы являются связанными в своей базе данных, то эта связь между ними сохраняется и в той базе данных, к которой они были присоединены. Однако изменить свойства этой связи или удалить ее можно только в "родной" базе данных.
Примечание:
При задании имен таблиц и полей в таблицах необходимо придерживаться ряда правил.
Имена полей в таблице не должны повторяться, т. е. должны быть уникальными.
Имена полей могут содержать не более 64 символов, включая пробелы.
Желательно избегать употребления имен полей, совпадающих с именами встроенных функций или свойств Microsoft Access (например, Name — имя).
Имя поля не должно начинаться с пробела или управляющего символа (коды ASCII 00-31).
Имена полей могут содержать любые символы, включая буквы, цифры, пробелы, специальные символы, за исключением точки (.), восклицательного знака (!), апострофа (') и квадратных скобок ([), (]).
Эти же правила действительны и для имен таблиц, а также других объектов Microsoft Access.
Рекомендуется не использовать очень длинные имена, т. к. они плохо запоминаются, и не включать в имена большое количество пробелов, особенно если с именами предполагается работать с помощью процедур Visual Basic for Application. Чтобы следовать этой рекомендации и при этом получать понятные имена, можно либо использовать вместо пробелов между словами знак подчеркивания (_), либо писать все слова слитно, но каждое начинать с заглавной буквы.
Важно четко представлять предметную сторону задачи, чтобы не делать ошибок, применяя типы данных «Текстовый», «Числовой», «Денежный», «Дата/время», «Логический», назначение которых, по-видимому, ясно.
Тип данных "Счетчик" применяется в Microsoft Access для создания полей, в которые при добавлении записи автоматически вводится число. В поле счетчика могут быть использованы три типа чисел:
последовательно возрастающие на один;
случайные числа;
коды репликации (также называемые GUID—глобальные уникальные идентификаторы).
Наиболее часто используется счетчик последовательно возрастающих чисел. Такой тип счетчика удобно использовать как ключевое поле таблицы (см. ниже). Счетчик случайных чисел создает уникальный номер для каждой записи в таблице. Код репликации используется при репликации базы данных для создания уникальных идентификаторов, обеспечивающих синхронизацию реплик. (Пояснение к механизму репликации есть в приложении.)
Данные типа "Мемо" (примечание) используются для размещения символьных данных большой (свыше максимальной длины текстовых строк) и переменной длины, когда нельзя заранее предугадать длину поля. В БД "Студенты" тип мемо можно применить к полям "Предыдущее место учебы" или "Хобби", объем размещаемой информации в которых варьируется от нескольких строк (для очень деятельной и разносторонней личности) до нуля (скрытный человек).
Данные типов "Гиперссылка" и "Объект" в нашем примере не используются и их свойства не обсуждаются. Краткие пояснения к данным этих типов даны в приложении.
С типом данных связан тип поля. Различие между типом поля и типом данных достаточно неуловимо. Следует заметить, что тип данных отражает не только тип данных, хранящихся в нем, но и способ формирования этих данных. Есть типы данных, однозначно совпадающие с типом полей, а есть такие, которые указывают на группу типов полей, из которой надо выбрать конкретный тип для создаваемого поля. Каждый тип поля однозначно определяет его длину, чего нельзя сказать о типе данных (см. Тема 4).
После ввода имени поля необходимо задать тип данных, которые будут находиться в этом поле. Наиболее удобным способом является выбор типа из списка, но наименование типа можно ввести и вручную. Обычно при ручном вводе Конструктор автоматически предлагает закончить вводимое название типа. В Microsoft Access имеются следующие типы данных:
Текстовый — символьные или числовые данные, не требующие вычислений. Поле данного типа может содержать до 255 символов. Размер текстового поля задается с помощью свойства Размер поля, в котором указывается максимальное количество символов, которые могут быть введены в данное поле. При необходимости ввести строку большего размера, чем указано в данном свойстве, надо значение свойства изменить, т. к. место под дополнительные символы не резервируется. Независимо от длины текстового поля оно хранится в базе данных Access в записи переменной длины. Access не занимает память под неиспользуемую часть текстового поля в записи, что уменьшает общий размер базы данных.
Поле MEMO — поле MEMO предназначено для ввода текстовой информации, по объему превышающей 255 символов. Такое поле может содержать до 65 535 символов. Этот тип данных отличается от типа Текстовый тем, что в таблице хранятся не сами данные, а ссылки на блоки данных, хранящиеся отдельно. За счет этого ускоряется обработка таблиц (сортировка, поиск и т. п.). Поле типа MEMO не может быть ключевым или проиндексированным.
Примечание:
Не используйте поле типа MEMO, если нужно будет сортировать записи таблицы по данному полю — это невозможно. Если 255 символов не достаточно для хранения всех данных, придется разбить его на два или три текстовых поля.
Числовой — числовой тип применяется для хранения числовых данных, используемых в математических расчетах. Имеет много подтипов. От выбора подтипа (размера) данных числового типа зависит точность вычислений. Для установки подтипа числовых данных служит свойство Размер поля. Данные этого типа могут содержаться в 1, 2, 4, 8 или 16 байтах. Обычно по умолчанию используется подтип Длинное целое, который занимает 4 байта и представляет собой число в пределах от -2 147 483 648 до +2 147 483 647. Но, кроме этого типа, можно указать Байт — 1 байт, — 2 байта, Одинарное с плавающей точкой — 4 байта, Двойное с плавающей точкой — 8 байтов, Десятичное — 12 байтов, Код репликации — 16 байтов.
Дата/Время — тип для представления даты и времени. Позволяет вводить даты с 100 по 9999 год. Размер поля — 8 байтов. Даты и время хранятся в специальном фиксированном числовом формате. Дата является целой частью значения поля типа Дата/Время, а время — его дробной частью. Access предоставляет большой выбор форматов отображения даты и времени.
Денежный — тип данных, предназначенный для хранения данных, точность представления которых колеблется от 1 до 4 десятичных знаков. Целая часть данного типа может содержать до 15 десятичных знаков.
Счетчик — поле содержит 4-байтный уникальный номер, определяемый Microsoft Access автоматически для каждой новой записи либо случайным образом, либо путем увеличения предыдущего значения на 1. Значения полей типа счетчика обновлять нельзя. Максимальное число записей в таблице с полем счетчика не должно превышать двух миллиардов.
Логический — логическое поле, которое может содержать только два значения, интерпретируемых как Да/Нет, Истина/Ложь, Включено/Выключено. Поля логического типа не могут быть ключевыми, но их можно индексировать.
Примечание:
Access использует величину -1 для представления значения Истина и величину 0 — для значения Ложь.
Поле объекта OLE — содержит ссылку на OLE-объект (лист Microsoft Excel, документ Microsoft Word, звук, рисунок и т. п.). Объем объекта ограничивается имеющимся в наличии дисковым пространством. Тип объекта OLE не указывается в свойствах поля объекта OLE. Он зависит от приложения, использованного для создания объектов OLE, которые хранятся в этом поле. Упаковщик объектов позволяет внедрять файлы, созданные приложениями, которые не являются серверами объектов OLE. Например, он позволяет внедрить текстовые файлы в качестве объектов в таблицы Access 2002. В поле объекта OLE могут храниться произвольные данные, в том числе и данные нескольких типов. Это позволяет обойти основное ограничение реляционных баз данных, которое требует, чтобы в каждом поле хранились данные только одного типа.
Гиперссылка — дает позможность хранить в поле ссылку, с помощью которой можно ссылаться на произвольный фрагмент данных внутри файла или Web-страницы на том же компьютере, в интранет или в Интернет. Гиперссылка состоит из четырех частей: отображаемый текст, адрес (путь к файлу или странице), дополнительный адрес (положение внутри файла или страницы) и текст всплывающей подсказки. Каждая часть гиперссылки может содержать до 2048 символов. Поле типа Гиперссылка не может быть ключевым или индексированным.
В поле типа можно также выбрать значение Мастер подстановок, который запускает Мастера подстановок, создающего поле подстановок. Поле подстановок позволяет выбирать значение поля из списка, содержащего набор постоянных значений или значений из другой таблицы.
Задание для самостоятельной работы
Создать для базы данных (Товар-Накладная) рассмотренной в главе Нормализация таблицы любым из рассмотренных способов (лучше использовать разные способы).