Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гайдамакин Н. А. Автоматизированные информационные системы, базы и банки данных. Вводный курс.doc
Скачиваний:
372
Добавлен:
02.05.2014
Размер:
4.3 Mб
Скачать

4.2. Ввод, загрузка и редактирование данных

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

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

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

• непосредственный ввод и редактирование данных в таб­личном режиме;

• ввод и редактирование данных через формы;*

• ввод, загрузка и редактирование данных через запросы на изменения;

• ввод данных через импортиз внешних источников.

*Если формы предназначены только для ввода, просмотра и изменения данных их еще называют входными (вводными) формами.

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

Отображать кортежи-записиможнодвумя способами, располагая поля записивертикальноилигоризонтально(см. рис. 4.4 и рис. 4.5).

Рис. 4.4. Вертикальный способ расположения полей записей

В первом случае пользователь «видит» и имеет доступ, как правило, сразу ко всем полям одной записи и его внимание со­средоточивается на одной записи как отдельном объекте. Запи­си располагаются друг за другом вертикально, и на экране ком­пьютера обеспечивается вертикальная прокрутка (скроллинг) записей.

Рис. 4.5. Горизонтальный способ расположения полей записей

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

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

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

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

Ввод новой записи осуществляется через активизацию в конце таблицы специальной «пустой» строки открытой табли­цы. В некоторых случаях таблицы могут открываться только для ввода новых данных—так называемый режим открытия на добавление.В этом случае в открытой таблице показывает­ся только одна «пустая» строка для ввода новых данных.

Вертикальный способ отображения полей записейв совре­менных СУБД вместе с идеями электронных бланков трансфор­мировался в технику форм.Естественным и интуитивно-понят­ным способом работы со структурированной информацией для большинства «обычных»* людей являются всевозможные блан­ки, анкеты и т.п. «бумажные» формы. Формы в СУБД как раз и выполняют функции предоставления пользователям привычно­го интерфейса при вводе структурированных данных с имита­цией «заполнения» бланков, анкет и т.п.

* То есть в данном контексте не являющихся профессиональными программистами.

Таким образом, формав СУБД представляет собойспеци­альный экранный объект, включающий поля для ввода данных одной записи базовой таблицы и другую поясняющую инфор­мацию.На рис. 4.6 приведен пример формы для ввода, про­смотра и изменения данных в таблице «Сотрудники» базы дан­ных известной организации.

Рис. 4.6. Пример формы для ввода/просмотра/изменения данных

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

Форма может отображать записи или предоставлять воз­можность для ввода новых записей одной (базовой)таблицы. Однако идея экранных форм в реляционных СУБД оказалась более плодотворной, чем просто предоставление удобств для ввода/просмотра сразу всех полей одной записи. В определен­ных случаях «бумажная» информационная технология, которую автоматизирует банк данных АИС, предусматривает накопле­ние и образование данных сразу в комплексе по ряду информа­ционных задач. К примеру, при ведении учета командировок сотрудников в бухгалтерии используются специальные блан­ки, в которых отображается информация по сотруднику (ФИО, Подразделение, Должность, Сл. тел.) и данные собственно по командировке (Дата начала. Дата окончания, Полученный аванс, Фактические расходы, Пункты назначения, Служебные зада­ния). При проектировании базы данных для автоматизации та­кого учета, исходя из требований нормализации таблиц, перечисленные выше в «бумажном» бланке данные распределяют­ся сразу по нескольким связанным таблицам «Сотрудник», «Командировка», «Пункты», «Служебные задания».

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

Рис. 4.7. Пример формы для ввода данных в таблицы, связанные отношением «Один-ко-многнм»

Зачастую при создании базы данных новой АИС часть дан­ных уже имеется в электронном виде в других, ранее создан­ных базах данных. Если это базы данных того же формата, т. е. созданные и функционирующие под управлением той же СУБД, или другой реляционной СУБД, поддерживающей основанный на языке SQLспециальный протокол обмена данными между реляционными СУБД — ODBC* (Open Database Connectivity), то имеется возможность вводить, или, как в этом случае гово­рят, загружать данные из таблиц, находящихся в файлах дру­гих (внешних) баз данных. Такая загрузка реализуется на осно­ве техники запросов на изменение данных, в качестве источни­ков которых указываются таблицы в других БД.**

* Стандартный протокол доступа к данным на серверах баз данных SQL...

** Запросы на изменения данных рассматриваются в п. 4.3.2.2.

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

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