Скачать 0.73 Mb.
|
INSERT (вставка).
Delphi - инструментальная среда разработки Object Pascal - программ. Delphi предоставляет программистам-разработчикам:
VCL (Visual Component Library) – основной комплекс объектно-ориентированных библиотек Delphi. Предназначенные для работы с базами данных Delphi-средства во многом основаны на представлении данных, принятом в процессоре баз данных BDE(*). Класс TDatabase. Объект этого типа обеспечивает соединение с (одной) базой данных.
Задает внешний псевдоним, под которым база данных зарегистрирована в администраторе BDE. Использование псевдонимов позволяет обеспечить независимость Delphi-приложения от физического места хранения БД.
Задает внутренний псевдоним, под которым БД будет известна только Delphi-приложению в периоде его выполнения. См. свойство Params.
Развитые СУДБ имеют средства контроля прав доступа к БД (DCL), SQL-сервер InterBase при соединении с БД запрашивает «Имя пользователя» и «Пароль». Свойство Params позволяет «привязать» эту информацию к внутреннему псевдониму БД. Если Delphi-приложение ссылается на БД по внутреннему псевдониму, то запрос прав доступа можно «скрыть».
Если LoginPrompt= TRUE, то SQL-сервер запрашивает (повторное) подтверждение прав доступа.
Это свойство позволяет включить-отключить-проверить соединение с БД. Класс TTable. Объект этого типа обеспечивает связь и выполнение операций с таблицей. Важнейшие свойства, методы и события этого класса унаследованы им от своего предка - класса TDataSet («абстрактная таблица»).
Указывает (внутренний) псевдоним базы данных.
Указывает имя таблицы в этой базе данных.
Как отмечалось выше - BDE является ядром СУБД, поэтому предоставляет типовой набор средств обработки таблиц в клиентском приложении (т.е. не SQL-сервером, а «на стороне клиента», на рабочей станции). Эти средства обеспечивают построчный доступ к данным таблицы, и в этом они аналогичны стандартным средствам языка Паскаль.
procedure Open; procedure Close; Свойство Active позволяет открыть и закрыть таблицу или проверить, открыта ли она. Открыть и закрыть можно также с помощью методов Open и Close.
procedure Next; procedure Prior; Эти методы позволяют перемещать маркер текущей строки – на первую, последнюю, следующую и предшествующую строки.
Eof – известная по языку Паскаль функция, Bof – аналогичная: принимает значение TRUE, когда маркер текущей строки перемещен в другой конец за пределы таблицы.
property RecordCount: Longint; {количество строк}
procedure Delete; {удалить текущую строку}
function FieldByName(const FieldName:string):TField; Этот метод по имени поля «FieldName» возвращает значение класса TField, который мы рассмотрим далее. Отметим важное обстоятельство: в приложении может быть несколько одновременно активных объектов типа TTable, связанных с одной и той же таблицей БД. Возникает впечатление, что «объект работает с собственной копией таблицы», однако это не совсем так. Каждый объект имеет действительно «собственный» маркер текущей строки, который только он может перемещать по строкам таблицы, реальная таблица у таких объектов общая, поэтому операции вставки-удаления-изменения, выполненные одним объектом, «видны» всем другим.
procedure Cancel; Изменения, проведенные в текущей строке таблицы, фактически хранятся в буфере. Только после подтверждения (Post) строка в таблице реально обновляется (для чего, в случае SQL-серверной базы данных, Post пошлет соответствующий запрос). Cancel позволяет «откатить» изменения в текущей строке (еще до запроса к SQL-серверу). Post (а в некоторых ситуациях, наоборот - Cancel) неявно отрабатывает в каждом действии, «покидающем» измененную текущую строку (потому что «заложен» в реализующей процедуре) (*).
Конкретный объект TTable может «не заметить» изменений в таблице, проведенных «помимо него окольным путем». Метод Refresh позволяет «освежить» его сведения о реальном хранилище данных. Класс TField. Объекты этого типа обеспечивают работу с полями «абстрактной таблицы» TDataSet. Поля не создаются отдельно, они входят в состав TDataSet (TTable или TQuery)(**). В программе доступ к полям «абстрактной таблицы» можно получить, используя метод FieldByName класса TDataSet. Свойства класса TField для присваивания-извлечения значения поля и приведения его к подходящему типу: property Value:Variant; property AsString:string; {и другие As...} Индексные файлы и их использование. Программистам хорошо известно, что упорядоченность является мощным инструментом эффективной обработки данных. В условиях многоцелевого использования данных возникает естественная потребность иметь для одной таблицы несколько видов ее упорядоченного представления. Хранить несколько копий таблицы, по-разному упорядоченных, и поддерживать их адекватность – не самый лучший вариант решения этой проблемы. Типовой метод – использование индексных файлов. Индексный файл – создается для фиксированной пары: таблица данных, ключ упорядочения. Ключ упорядочения обычно задается списком полей таблицы и определяет порядок – по неубыванию ключа. ИндексныйФайл: FILE OF RECORD НомерСтрокиТаблицыДанных:T1; ЗначениеКлючаУпорядоченияДляЭтойстроки:T2 END
Индексный файл обеспечивает эффективный доступ к строке таблицы данных по заданному ее ключу (упорядочения):
Реальное представление индексного файла может быть и другим. Сегодня чаще всего используются В-деревья сортировки. Кроме того, ускорение поиска достигается за счет предпочтительной буферизации индексного файла в основной памяти. Индексный файл не обязательно представляется в виде отдельного физического файла. В современных СУБД индексные файлы широко используются, как для внутренних целей, так и в качестве инструмента, предоставляемого программистам напрямую. SQL-ориентированные СУБД, в частности InterBase:
CREATE [UNIQUE] [ASC | DESC] INDEX ИмяИндексФайла ON ИмяТаблицыДанных (ИмяКолонки,...)
Использование индексных файлов в Delphi. Свойства и методы объекта типа TTable позволяют:
Устанавливает логический порядок, соответствующий указанному имени индексного файла.
Устанавливает логический порядок по умолчанию, действующий только при пустом IndexName. Если DefaultIndex=TRUE и таблица имеет первичный ключ, то он и определяет логический порядок, иначе используется физический порядок. Отметим, что ранее рассмотренные First, Next, Eof... выполняются в соответствии с текущим установленным логическим порядком.
function FindKey (const KeyValues: array of const): Boolean; FindKey выполняет поиск строки по ее ключу, заданное значение ключа (значение KeyValues) должно соответствовать текущему логическому порядку. Если строка была найдена, то она становится текущей и FindKey возвращает TRUE.
В операционной связи участвуют две таблицы Ведущая (Master) и Ведомая (Detal), любое перемещение маркера текущей строки в ведущей таблице вызывает перемещение в ведомой на соответствующую строку. Операционная связь определяется (и реализуется) с помощью двух ключей:
Для установления связей с объектами – источниками данных в Delphi используются объекты специального класса TDataSource. Мы рассмотрим только одно свойство объектов этого класса property DataSet: TDataSet. Оно позволяет указать на объект типа TTable – источник данных. Операционная связь устанавливается в объекте типа TTable, управляющем Detal-таблицей:
Этому свойству надо присвоить значение - список полей Detal-ключа, неявно при этом устанавливается соответствующий логический порядок (индексный файл с соответствующим ключом должен существовать, обычно это индекс первичного ключа).
Эта ссылка на объект типа TDataSource, у которого свойство DataSet ссылается на объект типа TDataSet, приводит к Master-таблице.
Этому свойству надо присвоить значение - список полей Master-ключа. ПРИМЕР. Решение задачи «о крупных поставках». DBLEC\PRG01\Project1.dpr DBLEC\Prg01C++\Project1.bpr СХЕМА СВЯЗЕЙ ОБЪЕКТОВ type TForm1 = class(TForm) Database1: TDatabase; PstsTable: TTable; {Объект доступа к таблице Psts} DetTable: TTable; {... Det} DogTable: TTable; {... Dog} PstTable: TTable; {... Pst} NewTable: TTable; {... New – рабочая таблица для хранения результата решения задачи} DataSource1: TDataSource; {Объект, обеспечивающий связь PstTable(Master) <- PstsTable(Detal)} procedure N2Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure N4Click(Sender: TObject); end; var Form1: TForm1; procedure TForm1.N2Click(Sender: TObject); {Решение 1. Используются средства работы с таблицами на уровне записей ~ традиционные средства программирования.} begin NewTable.Close; NewTable.EmptyTable; NewTable.Open; PstsTable.Open; PstTable.Open; PstTable.First; WHILE NOT PstTable.EOF DO begin IF (PstTable.FieldByName('KDet').Value=1010) AND (PstTable.FieldByName('Kol').Value>1000) THEN begin PstsTable.First; WHILE NOT PstsTable.EOF AND (PstsTable.FieldByName('KPst').Value<> PstTable.FieldByName('KPst').Value) DO PstsTable.Next; NewTable.Append; NewTable.FieldByName('ImPst').Value:= PstsTable.FieldByName('ImPst').Value; NewTable.FieldByName('Kol').Value:= PstTable.FieldByName('Kol').Value; NewTable.Post; end; PstTable.Next; end; NewTable.Close; NewTable.Open; {Unit2.Form2.QuickRep1.DataSet:=Form1.NewTable;} Unit2.Form2.QuickRep1.Preview end; procedure TForm1.N3Click(Sender: TObject); {Решение 2. Используется FindKey - поиск по индексу} begin NewTable.Close; NewTable.EmptyTable; NewTable.Open; PstsTable.Open; PstTable.Open; PstTable.First; WHILE NOT PstTable.EOF DO begin IF (PstTable.FieldByName('KDet').Value=1010) AND (PstTable.FieldByName('Kol').Value>1000) THEN begin {bb:=}PstsTable.FindKey ([PstTable.FieldByName('KPst').Value]); {Да!!!??? В ObjectPascal2 это действительно так... функцию можно вызвать как процедуру, по крайней мере иногда.} NewTable.Append; NewTable.FieldByName('ImPst').Value:= PstsTable.FieldByName('ImPst').Value; NewTable.FieldByName('Kol').Value:= PstTable.FieldByName('Kol').Value; NewTable.Post; end; PstTable.Next; end; NewTable.Close; NewTable.Open; Unit2.Form2.QuickRep1.Preview end; procedure TForm1.N4Click(Sender: TObject); {Решение 3. Используется реляционная связь Master-Detal} begin NewTable.Close; NewTable.EmptyTable; NewTable.Open; PstsTable.Close; DataSource1.DataSet:=PstTable; PstsTable.MasterSource:=DataSource1; PstsTable.MasterFields:='KPst'; PstsTable.Open; PstTable.Open; PstTable.First; WHILE NOT PstTable.EOF DO begin IF (PstTable.FieldByName('KDet').Value=1010) AND (PstTable.FieldByName('Kol').Value>1000) THEN begin NewTable.Append; NewTable.FieldByName('ImPst').Value:= PstsTable.FieldByName('ImPst').Value; NewTable.FieldByName('Kol').Value:= PstTable.FieldByName('Kol').Value; NewTable.Post; end; PstTable.Next; end; NewTable.Close; PstsTable.Close; PstsTable.MasterSource:=NIL; PstsTable.MasterFields:=''; DataSource1.DataSet:=NIL; PstsTable.Open; NewTable.Open; Unit2.Form2.QuickRep1.Preview end; Средства обработки БД в СУБД FoxPro. DBL(FOX).doc
= {0,1,2...} натуральный ряд. - множество всех векторов длины k с элементами из N. Отношение R, R: FILE OF RECORD x1,x2,... xk: Natural END В теории рассматриваются в том числе и бесконечные отношения-файлы. Дело в том что задачи «Вычислить y=f(x)» и «Перечислить отношение {(x,y)/y=f(x)}» сводимы друг к другу (по крайней мере для xN). Алгоритмический подход. Перечислимое отношение - имеется программа, формирующая соответствующий файл:
R перечислимо относительно R1,...Rк – имеется аналогичная программа, но с входными файлами R1,...Rк и на языке, расширенном логическими выражениями вида rR1,... rRk. Отметим, что в случае бесконечных R1,...Rк наличие возможности «запросто» получить ответ на вопрос вида «IF rR1 THEN ... ELSE ...» не просто облегчает задачу перечисления, а открывает возможность перечислять неперечислимое без такого использования R1,...Rк. Алгебраический подход. Общая схема:
Один из вариантов такой алгебраической системы:
Пусть R, I1,...Ik {1,2,...n}{#d/ dN}. {n:I1,...Ik}(R) = {(A1,...An) / (B1,...Bk)R, где Bj = IF Ij{1,2,...n} THEN ELSE d (где Ij=#d)} Примеры важных (для последующего материала) операций. Пусть k=8.
{7:#d,1,...7}(R)= {(A1,...A7)/(d,A1,...A7)R}
{7:1,1,...7}(R)= {(A1,...A7)/(A1,A1,A2,...A7)R}
{8:2,1,3,...8}(R)= {(A1,A2,A3,...A8)/(A2,A1,A3,...A8)R}
{9:1,...8}(R)= {(A1,...A8,A9)/(A1,...A8)R, A9N}
{xi y}(R)= {(d1,...,di,...dk) / для каждого dN такого, что (d di), имеет место (d1,...,d,...dk)R} {xi y}(R)= {(d1,...,di,...dk) / имеется dN такое, что (d di) и (d1,...,d,...dk)R} Конструктивно определимое отношение - имеется (константное) выражение, построенное из базовых отношений (Sum, Mult) с помощью набора вышеприведенных операций такое, что это отношение является значением этого выражения.
{xi}(R)= {(d1,...,,...dk) / имеется dN такое, что (d1,...,,...dk)R} Перечислимое отношение – можно получить проекциями из подходящего конструктивно определимого отношения. Логический подход. ...
Ниже используются обозначения:
Базовый набор файлов: файлы, содержащие одну запись; базовые файлы определяются с помощью операции - (имя_поля: значение_поля, ...) Базовый набор операций над файлами.
|
Аис поз Установка. Обновление версии. Резервное копирование базы данных. Восстановление базы данных. 5 |
Windows Банк Клиент Инструкция по переходу на версию 1 Для перехода на версию 1 с предыдущих версий системы Банк-Клиент нужно сначала выполнить установку новой версии с созданием пустой... |
||
Финансовая разведка Тем не менее, криминальный рынок полон объявлений, предлагающих приобрести по сходной цене базы данных мвд, гибдд, сотовых операторов,... |
Инструкция по обновлению фк цз Фк цз в администрирование, в авторизации набрать admin, пароль hcadmin. В главном меню выбрать «Операции» – «Резервное копирование... |
||
Инструкция по обновлению фк рир Фк рир в администрирование, в авторизации набрать admin, пароль hcadmin. В главном меню выбрать «Операции» – «Резервное копирование... |
Пояснительная записка Студент Организация данных. Sql дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между... |
||
Пояснительная записка Студент Организация данных. Sql дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между... |
Методические указания к курсовой работе по дисциплине Базы данных... Дисциплина «Базы данных» для направления 230700. 62 «Прикладная информатика» подготовки бакалавра |
||
Методические указания к практическим работам по дисциплине «Базы данных» Методические указания предназначены для проведения практических занятий по дисциплине «Базы данных», для специальности ксиК |
Пер с англ. — М. Издательский Архитектура системы баз данных 65 Глава Введение в реляционные базы данных 92 |
||
Инструкция по установке и работе с программой заполнение базы данных В настоящем документе представлена краткая инструкция пользователю по установке и работе с программой Заполнение базы данных студентов... |
Лекция Язык sql 46 вставка одного запроса внутрь другого 68 как работает... Эти базы данных создаются и функционируют под управлением специальных программных комплексов, называемых системами управления базами... |
||
Методические указания для выполнения лабораторных работ и «Базы данных» Лабораторная работа №1 «Организация хранения данных в субд ms access» |
3. Заполнение базы данных, модификация данных На предыдущем этапе... ... |
||
Лабораторная работа №1: Создание баз данных В этой утилите можно выполнить типовые задачи обслуживания баз данных, такие как резервирование и восстановление. Здесь можно настраивать... |
Программа дисциплины «Информатика» Е дисциплины «Информатика» учебным планом отводится 200 часов, в том числе лекционные занятия – 34 часов, лабораторные работы – 72... |
Поиск |