Базы данных. (5-й семестр вмк)


Скачать 0.73 Mb.
Название Базы данных. (5-й семестр вмк)
страница 3/6
Тип Документы
rykovodstvo.ru > Руководство эксплуатация > Документы
1   2   3   4   5   6
INSERT (вставка).

  • DELETE (удаление).

  • UPDATE (обновление).


    1. Record-ориентированные средства обработки БД. Средства обработки баз данных в Delphi.

    Delphi - инструментальная среда разработки Object Pascal - программ. Delphi предоставляет программистам-разработчикам:

    • набор объектно-ориентированных библиотек, поэтому программирование в Delphi это, во многом существенном, сборка программ из готовых компонентов;

    • визуальные средства сборки программ.

    VCL (Visual Component Library) – основной комплекс объектно-ориентированных библиотек Delphi. Предназначенные для работы с базами данных Delphi-средства во многом основаны на представлении данных, принятом в процессоре баз данных BDE(*).

    Класс TDatabase. Объект этого типа обеспечивает соединение с (одной) базой данных.

    • property AliasName: String;

    Задает внешний псевдоним, под которым база данных зарегистрирована в администраторе BDE. Использование псевдонимов позволяет обеспечить независимость Delphi-приложения от физического места хранения БД.

    • property DatabaseName: string;

    Задает внутренний псевдоним, под которым БД будет известна только Delphi-приложению в периоде его выполнения. См. свойство Params.

    • property Params: TStrings;

    Развитые СУДБ имеют средства контроля прав доступа к БД (DCL), SQL-сервер InterBase при соединении с БД запрашивает «Имя пользователя» и «Пароль». Свойство Params позволяет «привязать» эту информацию к внутреннему псевдониму БД. Если Delphi-приложение ссылается на БД по внутреннему псевдониму, то запрос прав доступа можно «скрыть».

    • property LoginPrompt: Boolean;

    Если LoginPrompt= TRUE, то SQL-сервер запрашивает (повторное) подтверждение прав доступа.

    • property Connected: Boolean;

    Это свойство позволяет включить-отключить-проверить соединение с БД.

    Класс TTable. Объект этого типа обеспечивает связь и выполнение операций с таблицей. Важнейшие свойства, методы и события этого класса унаследованы им от своего предка - класса TDataSet («абстрактная таблица»).

    • Параметры связи с таблицей.

    • property DatabaseName: String;

    Указывает (внутренний) псевдоним базы данных.

    • property TableName: TFileName;

    Указывает имя таблицы в этой базе данных.

    • Средства работы с таблицей на уровне записей (строк).

    Как отмечалось выше - BDE является ядром СУБД, поэтому предоставляет типовой набор средств обработки таблиц в клиентском приложении (т.е. не SQL-сервером, а «на стороне клиента», на рабочей станции).

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

    • property Active: Boolean;

    procedure Open; procedure Close;

    Свойство Active позволяет открыть и закрыть таблицу или проверить, открыта ли она. Открыть и закрыть можно также с помощью методов Open и Close.

    • procedure First; procedure Last;

    procedure Next; procedure Prior;

    Эти методы позволяют перемещать маркер текущей строки – на первую, последнюю, следующую и предшествующую строки.

    • property Eof: Boolean; property Bof: Boolean;

    Eof – известная по языку Паскаль функция, Bof – аналогичная: принимает значение TRUE, когда маркер текущей строки перемещен в другой конец за пределы таблицы.

    • property RecNo: Integer; {номер текущей строки}

    property RecordCount: Longint; {количество строк}

    • procedure Append; {добавить пустую строку в конец}

    procedure Delete; {удалить текущую строку}

    • Доступ к полям текущей строки таблицы.

    function FieldByName(const FieldName:string):TField;

    Этот метод по имени поля «FieldName» возвращает значение класса TField, который мы рассмотрим далее.

    Отметим важное обстоятельство: в приложении может быть несколько одновременно активных объектов типа TTable, связанных с одной и той же таблицей БД. Возникает впечатление, что «объект работает с собственной копией таблицы», однако это не совсем так. Каждый объект имеет действительно «собственный» маркер текущей строки, который только он может перемещать по строкам таблицы, реальная таблица у таких объектов общая, поэтому операции вставки-удаления-изменения, выполненные одним объектом, «видны» всем другим.

    • Средства локального управления доступом к данным.

    • procedure Post; override;

    procedure Cancel;

    Изменения, проведенные в текущей строке таблицы, фактически хранятся в буфере. Только после подтверждения (Post) строка в таблице реально обновляется (для чего, в случае SQL-серверной базы данных, Post пошлет соответствующий запрос). Cancel позволяет «откатить» изменения в текущей строке (еще до запроса к SQL-серверу). Post (а в некоторых ситуациях, наоборот - Cancel) неявно отрабатывает в каждом действии, «покидающем» измененную текущую строку (потому что «заложен» в реализующей процедуре) (*).

    • procedure Refresh;

    Конкретный объект 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:

    • создают и используют индексные файлы для внутренних целей, в частности для объявленных ключей – уникальных (UNIQUE), первичных (PRIMARY KEY), дочерних (FOREIGN KEY);

    • позволяют явно создавать индексные файлы

    CREATE [UNIQUE] [ASC | DESC] INDEX ИмяИндексФайла

    ON ИмяТаблицыДанных (ИмяКолонки,...)

    • поддерживают индексные файлы – обеспечивают их соответствующую корректировку при внесении изменений в данные таблиц;

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

    Использование индексных файлов в Delphi. Свойства и методы объекта типа TTable позволяют:

    • Установить логический порядок строк в таблице.

    • property IndexName: String;

    Устанавливает логический порядок, соответствующий указанному имени индексного файла.

    • property DefaultIndex: Boolean;

    Устанавливает логический порядок по умолчанию, действующий только при пустом IndexName. Если DefaultIndex=TRUE и таблица имеет первичный ключ, то он и определяет логический порядок, иначе используется физический порядок.

    Отметим, что ранее рассмотренные First, Next, Eof... выполняются в соответствии с текущим установленным логическим порядком.

    • Выполнить поиск по ключу.

    function FindKey

    (const KeyValues: array of const): Boolean;

    FindKey выполняет поиск строки по ее ключу, заданное значение ключа (значение KeyValues) должно соответствовать текущему логическому порядку. Если строка была найдена, то она становится текущей и FindKey возвращает TRUE.

    • Установить операционную связь (Master-Detal).

    В операционной связи участвуют две таблицы Ведущая (Master) и Ведомая (Detal), любое перемещение маркера текущей строки в ведущей таблице вызывает перемещение в ведомой на соответствующую строку. Операционная связь определяется (и реализуется) с помощью двух ключей:

    • Для Detal-таблицы (ведомой) надо установить логический порядок (индексный файл), его ключ упорядочения используется в качестве Detal-ключа.

    • Для Master-таблицы (ведущей) надо указать Master-ключ (список полей Master-таблицы).

    • В операционной связи Detal-таблица автоматически позиционируется на строке, у которой Detal-ключ равен Master-ключу текущей строки Master-таблицы.

    Для установления связей с объектами – источниками данных в Delphi используются объекты специального класса TDataSource. Мы рассмотрим только одно свойство объектов этого класса property DataSet: TDataSet. Оно позволяет указать на объект типа TTable – источник данных.

    Операционная связь устанавливается в объекте типа TTable, управляющем Detal-таблицей:

    • property IndexFieldNames: String;

    Этому свойству надо присвоить значение - список полей Detal-ключа, неявно при этом устанавливается соответствующий логический порядок (индексный файл с соответствующим ключом должен существовать, обычно это индекс первичного ключа).

    • property MasterSource: TDataSource;

    Эта ссылка на объект типа TDataSource, у которого свойство DataSet ссылается на объект типа TDataSet, приводит к Master-таблице.

    • property MasterFields: string;

    Этому свойству надо присвоить значение - список полей 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


    1. Теоретические основы реляционной модели баз данных.

    1. Перечислимые отношения и способы их задания: алгоритмический, алгебраический и логический подходы.

    = {0,1,2...} натуральный ряд. - множество всех векторов длины k с элементами из N. Отношение R, R: FILE OF RECORD x1,x2,... xk: Natural END

    В теории рассматриваются в том числе и бесконечные отношения-файлы. Дело в том что задачи «Вычислить y=f(x)» и «Перечислить отношение {(x,y)/y=f(x)}» сводимы друг к другу (по крайней мере для xN).

    Алгоритмический подход.

    Перечислимое отношение - имеется программа, формирующая соответствующий файл:

    • ничего не вводит, только выводит;

    • в случае бесконечного отношения R: выводит только вектора из R и для  вектора  R  t такое что этот вектор будет выведен через  t шагов работы.

    R перечислимо относительно R1,...Rк – имеется аналогичная программа, но с входными файлами R1,...Rк и на языке, расширенном логическими выражениями вида rR1,... rRk. Отметим, что в случае бесконечных R1,...Rк наличие возможности «запросто» получить ответ на вопрос вида «IF rR1 THEN ... ELSE ...» не просто облегчает задачу перечисления, а открывает возможность перечислять неперечислимое без такого использования R1,...Rк.

    Алгебраический подход.

    Общая схема:

    • Фиксируется конечный набор базовых отношений.

    • Фиксируется конечный набор операций над отношениями O: R1,...Rк  R.

    • Перечислимое отношение - имеется (константное) выражение, построенное из базовых отношений с помощью набора заданных операций такое, что это отношение является значением этого выражения.

    • R перечислимо относительно R1,...Rк – имеется аналогичное выражение, в котором дополнительно к базовым можно использовать отношения R1,...Rк.

    Один из вариантов такой алгебраической системы:

    • Базовые отношения:

    • Sum: (x,y,z)Sum  x+y=z

    • Mult: (x,y,z)Mult  x*y=z

    • Набор операций.

    • Группа теоретико-множественных операций: ,  и – (дополнение).

    • Группа операций явного преобразования.

    Пусть R, I1,...Ik  {1,2,...n}{#d/ dN}.

    {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}

    • Цилиндрификация – декартово умножение на N.

    {9:1,...8}(R)=

    {(A1,...A8,A9)/(A1,...A8)R, A9N}

    • Ограниченная (,) квантификация.

    {xi  y}(R)= {(d1,...,di,...dk) /

    для каждого dN такого, что (d  di), имеет место (d1,...,d,...dk)R}

    {xi  y}(R)= {(d1,...,di,...dk) /

    имеется dN такое, что (d  di) и (d1,...,d,...dk)R}

    Конструктивно определимое отношение - имеется (константное) выражение, построенное из базовых отношений (Sum, Mult) с помощью набора вышеприведенных операций такое, что это отношение является значением этого выражения.

    • Проекция (-квантификация неограниченная).

    {xi}(R)= {(d1,...,,...dk) /

    имеется dN такое, что

    (d1,...,,...dk)R}

    Перечислимое отношение – можно получить проекциями из подходящего конструктивно определимого отношения.

    Логический подход.

    ...

      1. Реляционная алгебра.

      Ниже используются обозначения:

      • A,B,C... (возможно с индексами) - имена полей (атрибуты), причем считается, что для каждого имени однозначно определен тип данных (домен) и этот тип неструктурный;

      • r,s,t... (возможно с индексами) - переменные типа запись (кортеж), причем считается, что порядок полей в записи не существенен, т.е. записи с одинаковым множеством полей (и их значениями) одинаковы;

      • R,S,T... (возможно с индексами) - переменные типа файл (таблица, отношение), причем считается, что порядок записей в файле не существенен и одинаковых записей в файле не может быть, т.е. файлы с одинаковым множеством записей одинаковы.

      Базовый набор файлов: файлы, содержащие одну запись; базовые файлы определяются с помощью операции - (имя_поля: значение_поля, ...)

      Базовый набор операций над файлами.

      • Теоретико-множественные:
      1   2   3   4   5   6

      Похожие:

      Базы данных. (5-й семестр вмк) icon Аис поз
      Установка. Обновление версии. Резервное копирование базы данных. Восстановление базы данных. 5
      Базы данных. (5-й семестр вмк) icon Windows Банк Клиент Инструкция по переходу на версию 1
      Для перехода на версию 1 с предыдущих версий системы Банк-Клиент нужно сначала выполнить установку новой версии с созданием пустой...
      Базы данных. (5-й семестр вмк) icon Финансовая разведка
      Тем не менее, криминальный рынок полон объявлений, предлагающих приобрести по сходной цене базы данных мвд, гибдд, сотовых операторов,...
      Базы данных. (5-й семестр вмк) icon Инструкция по обновлению фк цз
      Фк цз в администрирование, в авторизации набрать admin, пароль hcadmin. В главном меню выбрать «Операции» – «Резервное копирование...
      Базы данных. (5-й семестр вмк) icon Инструкция по обновлению фк рир
      Фк рир в администрирование, в авторизации набрать admin, пароль hcadmin. В главном меню выбрать «Операции» – «Резервное копирование...
      Базы данных. (5-й семестр вмк) icon Пояснительная записка Студент
      Организация данных. Sql дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между...
      Базы данных. (5-й семестр вмк) icon Пояснительная записка Студент
      Организация данных. Sql дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между...
      Базы данных. (5-й семестр вмк) icon Методические указания к курсовой работе по дисциплине Базы данных...
      Дисциплина «Базы данных» для направления 230700. 62 «Прикладная информатика» подготовки бакалавра
      Базы данных. (5-й семестр вмк) icon Методические указания к практическим работам по дисциплине «Базы данных»
      Методические указания предназначены для проведения практических занятий по дисциплине «Базы данных», для специальности ксиК
      Базы данных. (5-й семестр вмк) icon Пер с англ. — М. Издательский
      Архитектура системы баз данных 65 Глава Введение в реляционные базы данных 92
      Базы данных. (5-й семестр вмк) icon Инструкция по установке и работе с программой заполнение базы данных
      В настоящем документе представлена краткая инструкция пользователю по установке и работе с программой Заполнение базы данных студентов...
      Базы данных. (5-й семестр вмк) icon Лекция Язык sql 46 вставка одного запроса внутрь другого 68 как работает...
      Эти базы данных создаются и функционируют под управлением специальных программных комплексов, называемых системами управления базами...
      Базы данных. (5-й семестр вмк) icon Методические указания для выполнения лабораторных работ и «Базы данных»
      Лабораторная работа №1 «Организация хранения данных в субд ms access»
      Базы данных. (5-й семестр вмк) icon 3. Заполнение базы данных, модификация данных На предыдущем этапе...
      ...
      Базы данных. (5-й семестр вмк) icon Лабораторная работа №1: Создание баз данных
      В этой утилите можно выполнить типовые задачи обслуживания баз данных, такие как резервирование и восстановление. Здесь можно настраивать...
      Базы данных. (5-й семестр вмк) icon Программа дисциплины «Информатика»
      Е дисциплины «Информатика» учебным планом отводится 200 часов, в том числе лекционные занятия – 34 часов, лабораторные работы – 72...

      Руководство, инструкция по применению




      При копировании материала укажите ссылку © 2024
      контакты
      rykovodstvo.ru
      Поиск