Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



Некоторые действия над проектом могут привести к потере данных, логическим ошибкам, сбоям Access, поэтому желательно перед изменениями базы сделать ее резервную копию. Можно сохранить последовательно все объекты базы, но наименее трудоемким является путь копирования всего проекта средствами Dos или Windows.

Access все проекты хранит в отдельных файлах с расширением *.MDB". В эти файлы входят описания всех структур, относящихся к одной базе: описания

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

Сделаем копию проекта STUD, переключившись средствами Windows в окно диспетчера программ ("Program Manager"); запустим диспетчер файлов двойным щелчком на иконке "File Manager" в группе "Main". В диспетчере файлов найдем хранящийся файл STUD.mdb, выделим его, щелкнув на нем мышкой. В меню "File" выполним команду "Copy to..", и в появившемся окне введем имя будущего файла STUD_1.MDB. После нажатия кнопки "Ок" мы получим копию базы STUD, с которой и будем производить дальнейшие действия.

2.1. Модификация таблиц базы данных.

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

Запустим MS Access и откроем базу STUD_1.

2.1.1. Добавление нового поля в таблицу.

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

Выделим строку таблицы "Должность". Для этого щелкнем по маркеру строки − серому прямоугольнику у левого края имени поля. Строка над которой будет вставлена новая выделится черным цветом Выполним команду Вставить строку("Insert row") в меню “Вставка” ("Edit"), или нажмем на клавиатуре клавишу "Ins". Над выделенной появится новая, пустая строка. Введем в ней:

Имя поля − "Стаж";

Тип данных − "Числовой";

Описание − "Стаж работы преподавателя на кафедре";

В области свойств поля введем для свойства “Размер поля” ("Field size") тип Байт ("Byte").

2.1.2. Копирование полей в таблице.

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

Создадим поля "Телефон_дом" и "Телефон_раб". Создаем поле "Телефон_дом" как было рассмотрено в ЛР1 с характеристиками:

Имя поля − "Телефон_дом";

Тип данных − Числовой;

Описание − "Домашний телефон".

В области свойств поля введем;

Размер поля − Целое;

Выделим эту строку целиком, щелкнув по области маркировки строки слева от ее названия. Скопируем эту строку в буфер обмена при помощи команды "Копировать" меню "Правка". Переместим курсор на строку, следующую за вставляемой (после "Телефон домашний"). Вставим пустую строку, выполнив команду "Вставить строку" меню "Вставка". Затем выделим созданную строку, щелкнув на области ее маркировки и выполним команду "Вставить" меню "Правка". Описание из буфера обмена будет вставлено в созданную строку.

Модифицируем название созданного поля на "Телефон_раб", щелкнув в данной строке на столбец "Поле" и введя в нем "Телефон _раб". Изменим также свойство "Описание" на "Телефон рабочий".

2.5. Создание масок ввода значений.

Для упрощения ввода форматированного текста может применяться маска ввода значений полей. Для задания номера рабочего телефона в формате:

[цифра][цифра]−[цифра][цифра]−[цифра][цифра]

для поля "Телефон_раб" свойство "Маска ввода" установим в 99-99-99

2.1.3. Удаление описания поля.

Для удаления из таблицы поля, выделим его рассмотренным выше способом, и в меню "Правка" выполним команду "Вырезать", или нажав кнопку "Del" на клавиатуре, или нажав кнопку “Вырезать” на панели инструментов. После предупреждения Access о том, что данные из этого поля могут быть потеряны, производит удаление.

После ошибочного удаления поля, строки или таблицы можно отменить удаление следующими способами:

−при появлении предупреждения о том, что данная строка, поле, таблица будет удалена, и хранимые данные могут быть потеряны − нажать кнопку "Cancel";

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

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

2.1.4. Модификация свойств данных.

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

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

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

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

Access позволяет изменять длину полей типа "Символьный" и "Числовой". Длину символьного поля можно менять в пределах от 1 до 255 символов (0 байт предназначен для индикации длинны строки, как в Паскале). При вводе данных попытки ввода символьных строк большего размера, чем зарезервировано под поле, приводит к предупреждению. Если мы урезаем существующее поле до меньшей длинны, часть данных может быть утеряна − текстовые значения будут усечены справа до нового размера поля.

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

Изменение размеров полей производится путем редактирования свойства "размер поля" для изменяемой строки.

Изменим тип данных и длину поля "Телефон_дом" и "Телефон_раб" на "Символьный" длинны 10 для более наглядного представления телефонных номеров, например "56-38-45" вместо "563845". Можно также еще увеличить число разрядов до 15 для хранения кода города (формат "(9999)99-99-99"). Введя маску ввода и представления строки можно уменьшить размер поля до 11 при той же информативности.

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

Access анализирует преобразования типов данных и длинны полей, и в случае потери или неправильной трактовки преобразуемых данных выдает описание ошибки и запрашивает свои дальнейшие действия. Выбор варианта "Ок" продолжит начатые преобразования (возможно, с неверным исходом) или же выбрав кнопку "Отменаl" можно отказаться от производимых изменений.

2.2. Модификация структуры базы данных.

Модификация самой структуры БД включает в себя возможности расщепления, объединения таблиц; изменения первичных ключей и структуры связей между таблицами.

2.2.1. Изменение первичных ключей базы данных.

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

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

Переопределение первичного ключа производится или сбросом определения ключа в описании индексов (команда "Индекс" меню "Вид" выводит список индексов БД, в ней активизируем строку "Первичный ключ" для поля, являющегося первичным ключом, и нажимаем кнопку "Del" клавиатуры); а затем установив новый первичный ключ (командой "определить ключ" меню "Правка"). Либо же активизацией поля будущего первичного ключа, и щелчком на кнопке "Первичный ключ" панели инструментов.

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

2.2.2. Модификация структуры связей базы данных.

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

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

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

2.2.3. Расщепление таблиц.

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

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

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

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

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

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

Создадим копию проекта базы данных, т.к. расщепление таблицы будет нести демонстрационный характер, и в следующих лабораторных работах мы будем пользоваться сохраненным вариантом. Для создания копии базы средствами Windows или Dos скопируем закрытый проект базы данных (файл STUD.mdb) в другой каталог.

Простейший метод расщепления таблицы - создание ее копии, удаление из обеих таблиц лишних полей; настройка связей − и занесение модифицированных таблиц обратно в проект.

Рассмотрим общий алгоритм расщепления таблиц:

1. Создаем 2 копии таблицы.

2. Обеим копиям таблиц даются уникальные имена.

3. Из обеих таблиц удаляются лишние поля.

4.В окне "Свойства таблиц" удаляются все условия на значение, содержащие в себе ссылки на удаленные поля.

5. В окне "Индексы" удаляются все индексы и ключи, построенные на удаленных полях.

6. При необходимости генерируются первичные ключи для созданных таблиц (возможно введение нового поля типа "Счетчик").

7. В окне "Схема данных" (команда "Схема данных" меню "Сервис"), выбирается режим "Все связи" нажатием соответствующей кнопки на панели инструментов.

8. Удаляются все связи между таблицей − оригиналом и другими таблицами (щелкая по линии связи таблиц для активизации связи и нажимается клавиша "Del" на клавиатуре).

9. В схему данных вводятся таблицы − копии (щелкнув на кнопке "Добавить таблицу" панели инструментов).

10. Устанавливаются связи таблиц − копий с другими таблицами.

11. Возможно, удаляется таблица − оригинал.

12. Сохраняется структура проекта БД.

Применительно к таблице "Преподаватели":

−создадим таблицы "Преподаватели_личное" с полями "Зарплата", "Адрес_дом", "Телефон_дом",”Номер_П”; и "Преподаватели_служебное", со всеми оставшимися полями плюс "Номер_П" для связи;

−удаляем индексы на таблице "Преподаватели" и описание первичного ключа по полю "Номер_П";

−В окне схемы данных устанавливаем связи: "Преподаватели_служ- ебное.Номер_П" с "Занятия.Номер_П" типа “один-ко-многим” и "Преподаватели_служебное.Номер_П" с "Преподаватели_личное.Номер_П" типа “один-к-одному”;

−удаляем таблицу "Преподаватели";

−сохраняем проект под именем STUD_2.mdb.

2.2.4. Объединение таблиц.

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

Объединение таблиц повышает производительность системы, когда:

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

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

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

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

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

1. В окне базы данных активизируется одна из таблиц, на которых будет построен запрос;

2. Открывается окно конструктора запросов.

3. Выполняем команду создания по результатам запроса новой таблицы (команда "Создание таблицы" меню "Запрос" выводит окно ввода имени создаваемой таблицы);

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

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

6. Выполняем команду "Выполнить" меню "Запрос";

7. Устанавливаем связи полученной таблицы с остальной базой;

8. Разрываем связи исходных таблиц и при необходимости их удаляем.





Дата публикования: 2014-11-18; Прочитано: 535 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.014 с)...