к 4GL - визуальному программированию   Kylix   RUNTU   ОС  

Основы баз данных Kylix

Основные понятия
Архитектура баз данных
Таблицы баз данных
Средства для работы с базами данных

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

Основные понятия
База данных - это хранилище для большого количества определенных данных, с которыми можно производить некоторые действия (добавление, удаление, изменение, копирование, упорядочивание и т. д.).
Для обеспечения вышеописанных действий с данными необходимы специальные программы.
Приложения баз данных - это программы, которые позволяют пользователям работать с данными, хранящимися в базах данных.
Отметим, что все базы данных условно делятся на три основных типа.
Иерархические - построенные в виде иерархического дерева. Все данные в базе данных такого типа делятся на главные и подчиненные. Таким образом, данные, которые находятся на самом высоком уровне иерархии, являются главными. В свою очередь данные, находящиеся на более низких ступенях иерархии, называются подчиненными. Этот тип баз данных практически не применяется в настоящее время из-за того, что работает только с данными, которые иерархически упорядочены.
Сетевые - построены таким образом, что данные расположены произвольно. То есть любые данные могут быть и главными и подчиненными. В такой базе данных достаточно сложно организовать поиск нужных данных.
Реляционные - организованы в виде одной или нескольких прямоугольных таблиц, в которые занесены данные.
Bce эти типы данных представлены на рис. 15.1.

Рис. 15.1. Основные типы баз данных

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

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

Рис. 15.2. Схема приложения базы данных

Рассмотрим все четыре части приложения баз данных:
интерфейс пользователя - предназначен для взаимодействия вашего приложения с пользователем. На схеме интерфейс пользователя отделен от всех других частей приложения. Отделение его от других частей имеет некоторые преимущества. Таким образом вы делаете свое приложение более гибким, т. к. изменения в данной части не повлекут за собой изменений в модуле данных, и наоборот. В дополнение к вышеописанному, изоляция части пользовательского интерфейса позволит вам использовать формы интерфейса пользователя в похожих приложениях;
источник данных - обеспечивает канал связи между пользовательским интерфейсом и набором данных. Многие компоненты, предназначенные для отображения данных, могут использовать один и тот же источник данных. В этом случае при перемещении по записям базы данных в каждом из таких компонентов синхронно будут отображаться одинаковые данные;
набор данных - это сердце вашего приложения базы данных. Этот компонент представляет набор записей из одной или нескольких таблиц базы данных;
соединение с данными - зависит от используемого набора данных, Среда Kylix обеспечивает поддержку двух типов наборов данных:
клиентский набор данных - хранит данные в памяти, благодаря чему перемещение по данным осуществляется просто и эффективно. Клиентский набор данных обеспечивает простой метод фильтрации записей и объединения данных. Так как данные кэшируются в памяти, этот набор данных может содержать ограниченное число записей. Имеется два типа клиентских наборов данных: общий клиентский набор данных и клиентский набор данных, использующий SQL. Первый обеспечивает доступ к данным, работая напрямую с файлами, расположенными на локальных дисках, соединяясь с другими наборами данных в одном и том же модуле данных или соединяясь с сервером баз данных. Второй может или использовать файлы, расположенные на локальных дисках, или соединяться с сервером базы данных;
однонаправленный набор данных - может читать данные, описанные в запросе SQL или возвращаемые хранимой на сервере процедурой. Этот вид набора данных не хранит данные в памяти и является менее гибким в использовании по сравнению с клиентским набором данных. Единственным направлением перемещения по записям в однонаправленном наборе данных является направление, указанное в SQL-запросе команды ORDER BY. Вы не можете использовать однонаправленный набор данных для обновления данных. Однако этот вид набора данных обеспечивает быстрый доступ к информации, хранящейся на сервере базы данных, и может предоставлять значительно больший объем информации по сравнению с клиентским набором данных.
В дополнение к вышеописанным наборам данных вы можете создать собственный набор данных. Для этого вам придется использовать класс в качестве предка.

Таблицы баз данных
В реляционной базе данных, как уже отмечалось выше, для хранения данных используются взаимосвязанные таблицы. Эти таблицы обычно находятся в одном каталоге на диске. Этот каталог представляет собой базу данных, а файлы - таблицы. Таблицы баз данных очень похожи на электронные таблицы. Каждая таблица обычно состоит из нескольких файлов. Эти файлы содержат данные, индексы и др. Имя файла, содержащего данные, является именем таблицы. Остальные файлы таблицы имеют такое же имя, отличаясь только расширениями.
Рассмотрим структуру таблицы (рис. 15.3).

Рис. 15.3. Структура таблицы базы данных

Любая таблица реляционной базы данных состоит из столбцов (полей) строк (записей). Каждое поле таблицы должно иметь свое уникальное имя.

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

Таблица может содержать разнотипные данные. Например, пусть таблица состоит из четырех полей: Number, Year, Name и Surname. Эти поля будут обозначать: порядковый номер записи, год рождения, имя и фамилию людей, занесенных в нашу таблицу. Таким образом, первое и второе поле будут числовыми, а третье и четвертое - символьными. Заполняя данными эти поля, мы будем заносить записи в таблицу базы данных.
В таблицах могут использоваться ключи и индексы.
Ключ - это одно или несколько полей, содержащих уникальные для каждой шеи данные.
Ключевое поле - это поле, которое определяет ключ.
Таким образом, по известным данным ключевого поля можно найти единственную запись в таблице, содержащую эти данные.
Ключи можно поделить на простые и составные:
простой ключ состоит из одного поля;
составной ключ состоит из нескольких полей таблицы, и значения отдельных его полей (но не всех одновременно) могут повторяться.
Индекс - это поля, предназначенные для сортировки таблицы. Индекс - это своеобразное оглавление таблицы.
Обычно ключевые поля в большинстве баз данных автоматически индексируются.
Kylix поддерживает таблицы баз данных InterBase, Oracle, DB2 и MySQL. Если вы хотите использовать таблицы других типов, вам придется написать собственный драйвер для работы с ними либо преобразовать эти блицы в поддерживаемые средой Kylix.

Средства для работы c базами данных
Среда Kylix предоставляет набор драйверов, необходимых для работы с базами данных, которые описаны выше. Кроме того, Kylix предоставляет программисту несколько компонентов, обеспечивающих работу с базами данных. Мы их кратко рассматривали в восьмой главе книги. Попробуем рассмотреть методику использования этих средств для создания простого приложения. Для этого воспользуемся файлом примера, который поставляется вместе со средой Kylix. Его можно найти в каталоге /kylix/demos/db/fishfact/.
Итак, запустим Kylix и откроем проект Fishfact.dpr. Данный проект представляет собой простой просмотрщик содержимого базы данных. Как вы можете видеть, он написан практически без использования кода. Есть лишь одна команда, которая активизируется при показе главной формы приложения. В листинге 15.1 представлен код главного модуля Ffaсtlin этого приложения.

Листинг 15.1. Модуль Ffactlin
unit Ffactlin;

interface

uses
SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QExtCtrls, QDBCtrls, QStdCtrls, DB, DBClient, QGrids, QDBGrids, QButtons;

type
TForm1 = class(TForm)
Panel1: ТPanel;:
DBImage1: TDBImage;
DBText1: TDBText;
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
Panel2: TPanel;
Label1: TLabel;
DBText2: TDBText;
Panel3: TPanel;
Panel4: TPanel;
DBGrid1: TDBGrid;
BitBtn1: TBitBtn;
DBMemo1: TDBMemo;
procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var
Form1: TForm1;

lementation
{$R *.xfm}

procedure TForm1.FormCreate(Sender: TObject),
begin
// Указываем файл таблицы базы данных ClientDataSetl.LoadFromFile('biolife.cds');
end;

end.

Внешний вид формы представлен на рис. 15.4.

Рис. 15.4. Форма приложения базы данных

Мы не будем вдаваться в подробности пользовательского интерфейса этого приложения. Рассмотрим лишь те особенности, которые относятся к работе стаблицей базы данных.
Итак, на форме располагаются компоненты Datasource1 и ClientDataset1. Первый компонент обеспечивает взаимосвязь между компонентом ClientDataset1 и компонентами, отображающими данные. Компонент ClientDataset1 нужен для указания имени файла таблицы, из которой будут браться записи. Для отображения данных, находящихся в таблице, применяются компоненты DBImagel, DBTextl, DBText2, DBMemo1 и DBGrid1.
Компонент DBimage1 будет отображать картинки, содержащиеся в таблице. Для этого в его свойство DataField помещено значение Graphic, обозначающее, что будет отображаться содержимое поля с именем Graphic. Компоненты DBText1 и DBText2 служат для отображения текста (длиной не более одной строки). В их свойства DataField помещено значение commonName, также обозначающее название поля таблицы, значение которого будет отображать компоненты. Компонент DBMemo1 предназначен для отображения нескольких строк текста и может содержать горизонтальные и вертикальные полосы прокрутки. Данные берутся из поля Notes таблицы, т. к. именно это значение указано в свойстве DataField этого компонента. Наконец, компонент DBGrid1 - самый важный компонент в данном приложении. Он отображает полную запись таблицы и с помощью него происходит перемещение по записям. Запустим приложение. В результате появится форма с заполненными компонентами (рис. 15.5).

Рис. 15.5. Приложение в работе

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

к 4GL - визуальному программированию   Kylix   RUNTU   ОС  

Знаете ли Вы, что такое мысленный эксперимент, gedanken experiment?
Это несуществующая практика, потусторонний опыт, воображение того, чего нет на самом деле. Мысленные эксперименты подобны снам наяву. Они рождают чудовищ. В отличие от физического эксперимента, который является опытной проверкой гипотез, "мысленный эксперимент" фокуснически подменяет экспериментальную проверку желаемыми, не проверенными на практике выводами, манипулируя логикообразными построениями, реально нарушающими саму логику путем использования недоказанных посылок в качестве доказанных, то есть путем подмены. Таким образом, основной задачей заявителей "мысленных экспериментов" является обман слушателя или читателя путем замены настоящего физического эксперимента его "куклой" - фиктивными рассуждениями под честное слово без самой физической проверки.
Заполнение физики воображаемыми, "мысленными экспериментами" привело к возникновению абсурдной сюрреалистической, спутанно-запутанной картины мира. Настоящий исследователь должен отличать такие "фантики" от настоящих ценностей.

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

Это мы видим на примере СТО и ОТО, превратившихся в своеобразный вид религии, управляющей наукой и общественным мнением. Никакое количество фактов, противоречащих им, не может преодолеть формулу Эйнштейна: "Если факт не соответствует теории - измените факт" (В другом варианте " - Факт не соответствует теории? - Тем хуже для факта").

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

Эксперимент на то и эксперимент, что он есть не изощрение мысли, а проверка мысли. Непротиворечивая внутри себя мысль не может сама себя проверить. Это доказано Куртом Гёделем.

Понятие "мысленный эксперимент" придумано специально спекулянтами - релятивистами для шулерской подмены реальной проверки мысли на практике (эксперимента) своим "честным словом". Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution