Создание баз данных. 2
СОДЕРЖАНИЕ
ВВЕДЕНИЕ |
3 | |
ГЛАВА I. ХАРАКТЕРИСТИКА КОМПОНЕНТОВ. ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС |
4 | |
1.1. Компоненты, использованные в базе данных «Каталог книг» |
4 | |
1.2. Характеристика компонентов
ввода и отображения текстовой |
4 | |
1.3. Кнопки |
6 | |
1.4. Характеристика компонента Timer |
8 | |
1.5. Компоненты меню |
9 | |
1.6. Компоненты, обеспечивающие доступ к базе данных |
11 | |
1.7. Просмотр базы данных |
15 | |
1.8. Пользовательский интерфейс |
21 | |
ГЛАВА II. СОЗДАНИЕ БАЗЫ ДАННЫХ «КАТАЛОГ КНИГ» |
22 | |
2.1. База данных |
22 | |
2.2. Классификация баз данных |
22 | |
2.3. Структура базы данных |
24 | |
2.4. Модель базы данных в Delphi |
25 | |
2.5. Псевдоним базы данных |
26 | |
2.6. Создание базы данных «Каталог книг» |
26 | |
2.7. Создание каталога |
27 | |
2.8. Создание псевдонима |
27 | |
2.9. Создание таблицы |
29 | |
Глава III. СОЗДАНИЕ СПРАВОЧНО-ИНФОРМАЦИОННОЙ СИСТЕМЫ |
36 | |
ЗАКЛЮЧЕНИЕ |
43 | |
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ |
44 | |
ПРИЛОЖЕНИЕ |
45 | |
ВВЕДЕНИЕ
В последнее время резко возрос интерес к программированию. Это связано с развитием и внедрением в повседневную жизнь информационно-коммуникационных технологий. Если человек имеет дело с компьютером, то рано или поздно у него возникает желание, а иногда и необходимость, программировать.
Среди пользователей персональных компьютеров в настоящее время наиболее популярно семейство операционных систем Windows и, естественно, что тот, кто собирается программировать, стремится писать программы, которые будут работать в этих системах.
Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую "быструю разработку", среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий. Производительность программиста при использовании RAD-систем – фантастическая!
Delphi — это среда быстрой
ГЛАВА I.ХАРАКТЕРИСТИКА КОМПОНЕНТОВ.
ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС
- Компоненты, использованные в базе данных «Каталог книг»
Разрабатывая Базу данных «Каталог книг», я включил в нее следующие компоненты: Label, StaticText, BitBtn, Timer, DBEdit, DBNavigator, MainMenu, Table, DataSource, DBGrid.
Эти компоненты служат для
отображения текстовой
1.2. Характеристика компонентов ввода и отображения текстовой информации
К компонентам ввода
и отображения текстовой
В библиотеке визуальных компонентов Delphi существует множество компонентов, позволяющих отображать, вводить, редактировать текстовую информацию. К таким компонентам относятся и компоненты Label и StaticText.
Компонент Label отображает текст, который не изменяется пользователем. Никакого оформления текста не предусмотрено, кроме цвета метки и текста. Основное свойство - Caption.
Компонент StaticText этот компонент подобен компоненту Label, но обеспечивает возможность задания стиля бордюра. Основное свойство - Caption.
Эти два компонента - метки, специально предназначенные для отображения текстов (см. рис. 1).
Рис.1. Компоненты Label и StaticText
В этих компонентах цвет фона определяется свойством Color, а цвет надписи - подсвойством Color свойства Font. Если цвет специально не задавать, то цвет фона обычно сливается с цветом контейнера, содержащего метку, так что фон просто не заметен.
Для метки Label цвет и шрифт - единственно доступные элементы оформления надписи. Компонент StaticText имеет, кроме того, свойство BorderStyle, определяющее рамку текста - бордюр. При стиле sbsNone метка StaticText по виду не отличается от метки Label. Вероятно, если уж использовать бордюр, то наиболее приятный стиль sbsSunken.
Размещение всех рассматриваемых компонентов на форме определяется, в частности, свойствами Top, Left, Height, Width, Aline, Anchors, Constraints, общими для всех оконных компонентов. Эти свойства, определяющие координаты компонента, его размеры и их изменение при изменении пользователем размеров родительского компонента. При изменении пользователем размеров окна приложения надо перерисовывать компоненты, отображающие текст. Иначе выравнивание текста может нарушаться. Чтобы этого не было, надо в обработку события формы OnResize вставить операторы, перерисовывающие компоненты методом Repaint:
StaticText1. Repaint;
Размер меток Label и StaticText определяется также свойством AutoSize. Если это свойство установлено в true, то вертикальный и горизонтальный размеры компонента определяются размером надписи. Если же AutoSize равно false, то выравнивание текста внутри компонента определяется свойством Alignment, которое позволяет выравнивать текст по левому краю, правому краю или центру клиентской области метки.
В метке Label имеется свойство WordWrap - допустимость переноса слов, длинной надписи, превышающей длину компонента, на новую строчку. Чтобы такой перенос мог, осуществляется, надо установить свойства WordWrap в true, свойство AutoSize в false (чтобы размер компонента не определялся размером надписи) и сделать высоту компонента такой, чтобы в нем могло поместиться несколько строк. Если WordWrap не установлено в true при AutoSize равном false, то длинный текст, не повещающийся в рамке метки, просто обрезается.
В метке StaticText перенос длинного текста осуществляется автоматически, если значение AutoSize установлено в false и размер компонента достаточен для размещения нескольких строк. Для того, чтобы в StaticText осуществлялся перенос при изменении пользователем размеров окна, надо осуществлять описанную выше перерисовку компонента методом Repaint в обработчике события формы OnResize.
1.3. Кнопки
В базе данных «Каталог книг» используется один из компонентов кнопок – это компонент BitBtn.
Он используется для создания кнопок, на которых располагается битовая графика.
Компонент BitBtn отличается от компонента Button тем, он обладает возможностью отобразить на его поверхности изображение. Вид компонента BitBtn показан на рисунке 2.
Рис. 2. Компонент BitBtn
Он обладает следующими свойствами:
Свойство Cancel, если его установить в true, определяет, что нажатие пользователем клавиши Esc будет эквивалентно нажатию на данную кнопку. Это свойство целесообразно задавать равным true для кнопок «Отменить» в различных диалоговых окнах, чтобы можно было выйти из диалога, нажав на эту кнопку или нажав клавишу Esc.
Свойство Default, если его установить в true, определяет, что нажатие пользователем клавиши ввода Enter будет эквивалентно нажатию на данную кнопку, даже если данная кнопка в этот момент не находится в фокусе. Правда, если в момент нажатия Enter в фокусе находится другая кнопка, то все-таки сработает именно кнопка в фокусе. Если у нескольких кнопок на форме свойство Default задано равным true, то при нажатии Enter сработает та из них, которая находится раньше в последовательности табуляции.
Расположение изображения и надписи на кнопке определяется свойствами Margin, Layout и Spacing. Если свойство Margin равно –1 (значение по умолчанию), то изображение и надпись размещаются в центре кнопки. При этом положение изображения по отношению к надписи определяется свойством Layout, которое может принимать значения: blGlyphLeft (слева, это значение принято по умолчанию), blGlyphRight (справа), blGlyphTop (вверху), blGlyphBottom (внизу). Если же Margin > 0, то в зависимости от значения Layout изображение и надпись смещаются к той или иной кромке кнопки, отступая от нее на число пикселей заданное значением Margin.
Свойство Spacing задает число пикселей, разделяющих изображение и надпись на поверности кнопки. По умолчанию Spacing = 4. Если задать Spacing = 0, изображение и надпись будут размещены вплотную друг к другу. Если задать Spacing = - 1, то текст появится посередине между изображением и краем кнопки.
Еще одно свойство BitBtn – свойство Kind определяет тип кнопки. По умолчанию значение этого свойства равно bkCustom – заказная. Но можно установить и множество других предопределенных типов: bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose, bkAbort, bkRetry, bkIgnore, bkAll. В этих типах уже сделаны соответствующие надписи, введены пиктограммы, заданы еще некоторые свойства. Обычно все-таки лучше ими не пользоваться. Во-первых, надписи все равно надо переводить на русский язык. Во-вторых, предопределенные рисунки обычно выбиваются из общего стиля конкретного приложения. И главное – предопределение некоторых свойств, не учтенных вами, может иногда приводить к странным результатам работы. Уж лучше использовать заказные кнопки и самому устанавливать в них все необходимые свойства.
1.4. Характеристика компонента Timer
В базе данных «Каталог книг» был использован один из управляющих элементов – это компонент Timer
Этот компонент позволяет задавать в приложении интервалы времени. Таймер находит многочисленные применения: синхронизация мультипликации, закрытие каких – то окон, с которыми пользователь долгое время не работает, включение хранителя экрана или закрытие связей с удаленным сервером при отсутствии действий пользователей, регулярный опрос каких – то источников информации, задание времени на ответ обучающих программах – все это множество задач, в которых требуется задавать интервалы времени, решается с помощью таймера.
Таймер – не визуальный компонент, который может размещаться в любом месте формы (см. рис. 3).
Рис. 3. Компонент Timer
Он имеет два свойства, позволяющие им управлять: Interval – интервал времени в миллисекундах и Enabled – доступность. Свойство Interval задает период срабатывания таймера, а свойство Enabled – доступность.
1.5. Компоненты меню
В базе данных «Каталог книг» был использован компонент MainMenu для создания меню.
Компонент MainMenu – это не визуальный компонент, то есть место его размещения на форме в процессе проектирования не имеет ни какого значения для пользователя – он все равно увидит не сам компонент, а только меню, сгенерированное им (см. рис. 4).
Рис. 4. Компонент MainMenu
Основное свойство компонента – Items. Его заполнение производится с помощью Конструктора Меню, вызываемого двойным щелчком на компоненте MainMenu или нажатием кнопки с многоточием рядом со свойством Items в окне Инспектора Объектов. В результате откроется окно, при работе в конструкторе меню новые разделы можно вводить, помещая курсор в рамку из точек, обозначающую место расположения нового раздела. Если при этом раздел ввелся не в нужном вам месте, вы можете отбуксировать его мышью туда, куда вам надо (см. рис. 5).
Рис. 5. Конструктор Меню
Свойство Name задает имя объекта соответствующего разделу меню.
Свойство Shortcut определяет клавиши быстрого доступа к разделу меню – «горячие» клавиши, с помощью которых пользователь, даже не заходя в меню, может в любой момент вызвать выполнение процедуры связанной с данным разделом. Чтобы определить клавиши быстрого доступа, надо открыть выпадающий список свойства Shortcut в окне Инспектора Объектов и выбрать из него нужную комбинацию клавиш. Эта комбинация появится в строке раздела меню.
Свойство Default определяет, является ли данный раздел разделом по умолчанию своего подменю, то есть разделом, выполняемым при двойном щелчке пользователя на родительском разделе. Подменю может содержать только один раздел по умолчанию, выделяемый жирным шрифтом.
Начиная с Delphi 4, предусмотрена возможность ввода в раздел меню изображений. За это ответственны свойства разделов Bitmap и ImageIndex. Первое из них позволяет непосредственно ввести изображение в раздел, выбрав его из указанного вами файла. Второе позволяет указать индекс изображения хранящегося во внешнем компоненте ImageList. Указание на этот компонент вы можете задать в свойстве Images компонента MainMenu. Индексы начинаются с 0. Если вы укажете индекс –1 (значение по умолчанию), изображения не будет.
1.6. Компоненты, обеспечивающие доступ к базе данных
Доступ к базе данных обеспечивают компоненты Database, Table, Query и DataSource, значки которых находятся на вкладках Data Access и BDE палитры компонентов (см. рис. 6).
DataSource
Table
Рис. 6. Компоненты вкладок Data Access и BDE обеспечивают
доступ к данным
В базе данных «Каталог книг» использовались только два из перечисленных компонентов – это компоненты: Table и DataSource.
Компонент Database представляет базу данных как единое целое, то есть совокупность таблиц, а компонент Table — одну из таблиц базы данных. Компонент DataSource (источник данных) обеспечивает связь компонента отображения-редактирования данных (например, компонента DBGrid) и источника данных, в качестве которого может выступать таблица (компонент Tаblе) или результат выполнения SQL-запроса к таблице (компонент SQL). Компонент DataSource позволяет оперативно выбирать источник данных, использовать один и тот же компонент, например, DBGrid для отображения данных из таблицы или результата выполнения SQL-запроса к этой таблице. Механизм взаимодействия компонентов отображения-редактирования данных с данными через компонент DataSource иллюстрирует рисунок 7
Рис. 7. Взаимодействие компонентов отображения
и доступа к данным
В простейшем случае, когда база данных представляет собой одну-единственную таблицу, приложение работы с базой данных должно содержать один компонент Table и один компонент DataSource.
В таблице 1 перечислены свойства компонента Table, а в таблице 2 — свойства компонента DataSource. Свойства перечислены в том порядке, в котором следует устанавливать их значения после добавления компонентов в форму приложения.
Таблица 1. Свойства компонента Table
Свойство |
Определяет |
Name Database |
Имя компонента. Используется
для доступа к свойствам |
NameTable |
Имя базы данных, частью
которой является таблица (файл данных),
для доступа к которой |
NameTable |
Имя файла данных (таблицы данных), для доступа к которому используется компонент |
Type |
Тип таблицы. Таблица может быть набором данных в формате Paradox («Paradox), dBase (ttDBase), FoxPro («FoxPro) или представлять собой форматированный текстовый файл (ttASCII). |
Active |
Признак активизации файла данных (таблицы). В результате присваивания свойству значения True происходит открытие файла таблицы |
Во время разработки формы приложения значения свойств DatabaseName и TableName задаются путем выбора из списков. В списке DatabaseName перечислены все зарегистрированные псевдонимы, а в списке TableName -имена файлов таблиц, которые находятся в соответствующем псевдониму каталоге.
Таблица 2. Свойства компонента DataSource
Свойство |
Определяет |
Name |
Имя компонента. Используется
для доступа к свойствам |
DataSet |
Имя компонента, представляющего собой входные данные |
Свойство DataSet обеспечивает связь между компонентом, представляющим собой таблицу или запрос, и компонентами, предназначенными для доступа к записям. Наличие этого свойства позволяет выбирать источник данных. Например, база данных может быть организована таким образом, что таблица, состоящая из большого числа записей, разделена на несколько подтаблиц, имеющих одинаковую структуру. В этом случае в приложении каждой подтаблице будет соответствовать свой компонент Table, а выбор конкретной подтаблицы можно осуществить установкой значения свойства DataSet.
1.7. Просмотр базы данных
Пользователь может просматривать базу данных в режиме формы или в режиме таблицы. В режиме формы можно видеть только одну запись, а в режиме таблицы – несколько записей одновременно. Довольно часто эти два режима комбинируют. Краткая информация (содержимое некоторых ключевых полей) выводится в табличной форме, а при необходимости видеть содержимое всех полей записи выполняется переключение в режим формы.
Компоненты, обеспечивающие просмотр и редактирование содержимого полей базы данных, находятся на вкладке Data Controls (см. рис. 8).
Рис. 8. Компоненты просмотра
и редактирования полей базы данных
Режим формы
Для того чтобы обеспечить просмотр базы данных в режиме формы, в форму приложения нужно добавить компоненты, обеспечивающие просмотр и, если нужно, редактирование содержимого полей записи, причем по одному компоненту для каждого поля.
Компонент DBText позволяет только просматривать содержимое поля, а компоненты DBEdit и DBMemo — просматривать и редактировать. В таблице 3 перечислены некоторые свойства этих компонентов. Свойства перечислены в том порядке, в котором следует устанавливать их значения после добавления в форму приложения.
Таблица 3. Свойства компонентов DBText, DBEdit и DBMemo
Свойство |
Определяет |
Name |
Имя компонента. Используется для доступа к свойствам компонента |
DataSource |
Компонент-источник данных |
DataField
|
Поле базы данных, для отображения или редактирования которого используется компонент |
Для того чтобы иметь возможность просматривать другие записи файла данных, в форму приложения нужно добавить компонент DBNavigator, значок которого находится на вкладке Data Controls (см. рис. 9). Компонент DBNavigator (см. рис. 10) представляет собой набор кнопок, при щелчках на которых во время работы программы происходит перемещение указателя текущей записи к следующей, предыдущей, первой или последней записи базы данных, а также добавление к файлу данных новой записи, удаление текущей записи.
Рис. 9. Значок компонента DBNavigator находится на вкладке Data Controls
Рис. 10. Компонент DBNavigator
Таблица 4 содержит описания действий, которые выполняются в результате щелчка на соответствующей кнопке компонента DBNavigator.
Свойства компонента DBNavigator перечислены в табл. 5.
Таблица 4. Кнопки компонента DBNavigator
Кнопка |
Обозначение |
Действие |
К первой |
nbFirst |
Указатель текущей записи перемещается к первой записи файла данных |
К предыдущей |
nbPrior |
Указатель текущей записи перемещается к предыдущей записи файла данных |
К следующей |
nbNext |
Указатель текущей записи перемещается к следующей записи файла данных |
К последней |
nbLast |
Указатель текущей записи перемещается к последней записи файла данных |
Добавить |
nblnsert |
В файл данных добавляется новая запись |
Удалить |
nbDelete |
Удаляется текущая запись файла данных |
Редактирование |
nbEdit |
Устанавливает режим редактирования текущей записи |
Сохранить |
nbPost |
Изменения, внесенные в текущую запись, записываются в файл данных |
Отменить |
Cancel |
Отменяет внесенные в текущую запись изменения |
Обновить |
nbRefresh |
Записывает внесенные изменения в файл |
Таблица 5. Свойства компонента DBNavigator
Свойство |
Определяет |
VisibleButton3 |
Видимые командные кнопки |
Name |
Имя компонента. Используется
для доступа к свойствам |
DataSource |
Имя компонента, являющегося источником данных. В качестве источника данных может выступать база данных (компонент Database), таблица (компонент Table) или результат выполнения запроса (компонент Query) |
Следует обратить внимание на свойство visibieButtons. Оно позволяет скрыть некоторые кнопки компонента DBNavigator и тем самым запретить выполнение соответствующих операций над файлом данных. Например, присвоив значение False свойству VisibleButtons.nbDelete можно скрыть кнопку nbDelete и тем самым запретить удаление записей.
Режим таблицы.
Если необходимо видеть
одновременно несколько записей
базы данных, то нужно обеспечить просмотр
данных в режиме таблицы.
Для обеспечения просмотра и редактирования данных в режиме таблицы в форму приложения надо добавить компонент DBGrid, значок которого находится на вкладке Data Controls (см. рис. 11).
Рис. 11. Значок компонента DBGrid
Компонент DBGrid обеспечивает представление базы данных в виде таблицы. Свойства компонента DBGrid определяют вид таблицы и действия, которые могут быть выполнены над данными во время работы программы. В таблице 6 перечислены некоторые свойства компонента DBGrid.
Таблица 6. Свойства компонента DBGrid
Свойство |
Определяет |
Name |
Имя компонента |
DataSource |
Источник отображаемых в таблице данных |
Columns |
Отображаемую в таблице информацию |
Options . dgTitles |
Разрешает вывод строки
заголовка столбцов |
Options . dgIndicator |
Разрешает вывод колонки индикатора. Во время работы с базой данных текущая запись помечается в колонке индикатора треугольником, новая запись — звездочкой, редактируемая — специальным значком |
Options . dgColumnResize |
Разрешает менять во время работы программы ширину колонок таблицы |
Options . dgColLines |
Разрешает выводить линии, разделяющие колонки таблицы |
Options . dgRowLines |
Разрешает выводить линии, разделяющие строки таблицы |
Для того чтобы задать, какая информация будет отображена в таблице во время работы программы, нужно сначала определить источник данных для таблицы (установить значения свойства DataSource), затем — установить значения уточняющих параметров свойства Columns. Значение свойства DataSource задается обычным образом, то есть в окне Object Inspector. Чтобы установить значение свойства Columns, надо в окне Object Inspector выбрать это свойство и щелкнуть на кнопке с тремя точками. В результате открывается окно редактора колонок.
Для того чтобы в компонент DBGrid добавить колонку, обеспечивающую просмотр содержимого поля записи файла данных, необходимо нажать кнопку Add New, находящуюся на панели инструментов в верхней части окна (это единственная доступная после запуска редактора кнопка), выделить добавленный элемент и, используя Object Inspector, установить значения свойств этой колонки. Свойство columns компонента DBGrid представляет собой массив компонентов типа TColumn. Каждой колонке соответствует элемент массива. Устанавливая значения свойств компонентов column, программист задает вид колонок компонента DBGrid, тем самым определяет вид всей таблицы.
Работа с базой данных, представленной в виде таблицы, во многом похожа на работу с электронной таблицей Microsoft Excel. Используя клавиши перемещения курсора вверх и вниз, а также клавиши листания текста страницами (<Page Up> и <Page Down>), можно, перемещаясь от строки к строке, просматривать записи базы данных. Нажав клавишу <Ins>, можно добавить запись, а, нажав клавишу <Del> — удалить запись. Для того чтобы внести изменения в поле записи, нужно, используя клавиши перемещения курсора влево и вправо, выбрать необходимое поле и нажать клавишу <F2>.
1.8. Пользовательский интерфейс
Приложение баз данных, как следует уже из его названия, предназначено для взаимодействия с некоторым источником данных — базой данных (БД). Взаимодействие подразумевает получение данных, их представление в определенном формате для просмотра пользователем, редактирование в соответствии с реализованными в программе бизнес – алгоритмами и возврат обработанных данных обратно в базу данных.
Как известно, базы данных
обслуживаются специальными программами
— системами управления базами данных
(СУБД), которые делятся на локальные,
преимущественно
Тем не менее, несмотря на разнообразие реализаций, общая архитектура приложения баз данных остается неизменной.
Само приложение включает механизм получения и отправки данных, механизм внутреннего представления данных в том или ином виде, пользовательский интерфейс для отображения и редактирования данных, бизнес-логику для обработки данных.
Пользовательский интерфейс
Источник данных представляет собой хранилище данных (саму базу данных) и СУБД, управляющую данными, обеспечивающую целостность и непротиворечивость данных.
ГЛАВА II. СОЗДАНИЕ БАЗЫ ДАННЫХ «КАТАЛОГ КНИГ»
2.1. База данных
С точки зрения пользователя, база данных — это программа, которая обеспечивает работу с информацией. При запуске такой программы на экране, как правило, появляется таблица, просматривая которую пользователь может найти интересующие его сведения. Если система позволяет, то он может внести изменения в базу данных: добавить новую информацию или удалить ненужную.