Опубликован: 07.04.2008 | Уровень: специалист | Доступ: свободно
Лекция 29:

Введение в базы данных

< Лекция 28 || Лекция 29: 123 || Лекция 30 >
Аннотация: В этой лекции мы познакомимся с разработкой Баз Данных и изучим многие компоненты, обеспечивающие эту работу. Мы создадим приложение, отображающее данные из демонстрационной базы данных, научимся перемещаться по этой таблице, отображать большие строки и графику.

Базы Данных

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

Представьте себе, например, библиотеку. В любой библиотеке ведется учет книг. Они регистрируются по автору, по содержанию, по издательству, по регистрационному номеру и так далее. Теперь представьте, что библиотекарю требуется создать отчет по количеству книг какого-то конкретного автора. Если вся регистрация хранится только в виде бумажных карточек, то перед библиотекарем стоит довольно непростая задача. Этот автор мог написать не одну книгу, а десяток, каждая книга в библиотеке может быть представлена в 5-10 экземплярах, и еще не факт, что все карточки лежат по порядку. Следовательно, библиотекарю придется перебрать все карточки, чтобы быть уверенным, что отчет правильный. А если этих карточек в библиотеке несколько миллионов?!

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

В старых языках программирования и СУБД (Систем Управления Базами Данных) под термином База Данных понимался файл, в котором данные хранятся в табличном представлении. Такими СУБД, например, являются dBase, Clipper, FoxPro и т.п.

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

Базы Данных могут быть трех различных типов:

Локальные БД. Это приложения, использующие механизм работы с БД, которые находятся на этом же компьютере и не используемые другими компьютерами.

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

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

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

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

Однако для начала разберемся с терминологией.

Поле. Это столбец таблицы, общий для всех записей. Например, поле "Фамилия".

Запись. Строка таблицы, описывающая какой то объект. Например, какой то автор, у которого в поле "Фамилия" записано "Иванов", а в других полях – другая информация, относящаяся к этому автору.

Таблица. Набор записей в Базе Данных.

База Данных. Одна или несколько таблиц, связанных друг с другом.

Теперь представим себе саму таблицу.

Таблица 29.1. Пример таблицы авторов
Фамилия Имя Отчество Год рождения
1 Лермонтов Михаил Юрьевич 1814
2 Пушкин Александр Сергеевич 1799
3 Толстой Алексей Константинович 1817
4 Толстой Лев Николаевич 1828

Здесь столбцы "№", "Фамилия" и так далее являются полями таблицы. Строки – "1", "2" и так далее – записями таблицы. Каждая запись соответствует информации об авторе. Причем обратите внимание, что строки под номером 3 и 4 имеют в поле "Фамилия" одинаковые данные, хотя они относятся к разным авторам. Для этого и было введено поле "№", чтобы однозначно идентифицировать автора. Такое поле называется первичным ключом, или просто ключевым, и именно по нему будет производится выборка данных. Таким образом, книги Л.Н. Толстого никогда не попадут в каталог автора А.К. Толстого.

Первичным ключом называется поле, которое позволяет однозначно идентифицировать запись.

Теперь представьте себе другую таблицу – каталог книг.

Таблица 29.2. Пример каталога книг
Автор Наименование Кол-во экз.
1 4 Детство, Отрочество, Юность 20
2 4 Война и мир 15
3 4 Два гусара 14
4 3 Сборник стихотворений 5

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

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

< Лекция 28 || Лекция 29: 123 || Лекция 30 >
Виктор Пелих
Виктор Пелих

Здравствуйте.
Прохожу курс "Введение в программирование на Delphi"
Добрался до Лекции 29: Введение в базы данных.

Установлена RAD Studio 11.3, у которой отсутствует вкладка BDE и, соответственно, компонент Table,  который обеспечивает доступ к таблице средствами механизма BDE.
Поиск в интернете подсказал 
BDE Installer for RAD Studio, Delphi, C++Builder 10.3 Rio
Подскажите, имеется ли ещё возможность использовать механизм BDE в Delphi11 и если такая возможность есть, как подключить BDE к Delphi11?
С уважением...

 

Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?