Навігація
Головна
 
Головна arrow Інформатика arrow Бази даних
< Попередня   ЗМІСТ   Наступна >

Алгоритм перетворення

У його побудові беруть участь:

  • • збережені процедури;
  • • види серверної частини;
  • • форми, пов'язані з клієнтською частиною.

Збережені процедури дозволяють значною мірою знизити обсяги інформації, що передаються по мережі (трафік). До них у БД відноситься Grup_Sum, яка здійснює підрахунок числа "платних", "частково платних" і "безкоштовних" студентів, що навчаються у кожній конкретній групі, а також здійснює підрахунок числа юнаків і дівчат у групі.

Створення видів (View) таблиць служить для підвищення швидкодії системи запитів. Наведемо команди по створенню образу EKZAMVIEW з РБД "Навчальний процес":

Г View: EKZAMVIEW, Owner: SYSDBA * /

CREATE VIEW EKZAMVIEW (NZK, OTCHET, SEMESTR, SH_SPEC, POSL_SES, FIO, KURS) AS

SELECT

uspevaem.nzk, otchet, uspevaem.semestr, gruppa.sh_spec, posl_ses, student.fio,

gruppa.kurs

from uspevaem, gruppa, student

where uspevaem.ng = gruppa.ng and

uspevaem.nzk = student.nzk and semestr <> 12

group uspevaem.nzk, otchet, uspevaem.semestr, sh_spec, posl_ses, student.fio, gruppa.kurs by having otchet-'екз ';

Як видно з прикладу, вибірку даних можна здійснювати одночасно з необмеженого числа зв'язаних таблиць. Так, даний вид здійснює вибірку записів з трьох зв'язаних таблиць, після чого групує отриману інформацію по полях nzk, otchet, semestr, sh spec, posl_ses, fio, kurs. Цей вид використовується при генерації звіту по успішності студентів у поточному семестрі. Інформація, отримана з цього виду, надалі переробляється інтерфейсної частиною і використовується для генерації звітів типу:

  • • студенти, які не склали .сессію;
  • • студенти, котрі складали сесію на всі п'ятірки;
  • • студенти, котрі складали сесію на п'ятірки і одну четвірку;
  • • студенти, котрі складали сесію на п'ятірки і дві четвірки.

У програмі є наступні види, які використовуються:

  • • EkzamView - для генерації звітів про здачу студентами сесії;
  • • GruppaView - для прискорення доступу до пов'язаних полях;
  • • StudentView - для прискорення доступу до пов'язаних полях;
  • • ZadolgView - для генерації звітів про здачу студентами сесії.

Програма містить велику кількість алгоритмів, необхідних для обробки тих чи інших дій користувача, генерації складних звітів, взаємодії з РБД і переробки інформації. Багато хто з цих алгоритмів було практично неможливо реалізувати, використовуючи лише стандартні конструкції Object Pascal, тому в них поряд з Pascal використовувався також і мова SQL. Такий симбіоз мов дозволяє значною мірою прискорити виконання даних алгоритмів. Як приклад програмного коду, що містить як Pascal, так і SQL, наведемо фрагмент процедури генеруючої "залікову (екзаменаційну) відомість".

procedure TForml 1 .Button5Click (Sender: TObject);

var

t1: string [10];

begin

t1: = datamodule2.izuchenie.fieldbyname ('otchet'). asstring;

Завантаження в змінну tl поточного значення колонки otchet таблиці izuchenie

if t1 = 'зач' then form) 2.QRLabel1 .сарбоп: = 'Залікова відомість';

Якщо tl = зач, то вивести в звіт 'Залікова відомість'

if t1 = 'аттес' then form12.QRLabel1.caption: = 'Атестаційна відомість';

if t1 = 'прим' then form12.QRLabel1.caption: = 'Екзаменаційна відомість';

if t1 = 'K / np' then form12.QRLabel1, сарбоп: = 'Курсовий проект';

if t1 = "then exit;

datamodule2.queryrep1 .sql.clear;

Скидання поточних SQL-команд, завантажених в запит Qucryrep1

datamodule2.queryrep1 .sql.add ('select * from predmet');

Додавання SQL команди 'select * from predmet' r запит Qucryrep1

datamodule2.queryrep1, sql.add ('where kpred =' +

datamodule2.izuchenie.fieldbyname ('kpred'). asstring);

datamodule2.queryrep1 .open;

Здійснення запиту

form12.QRLabel11 .caption: =

datamodule2.queryrep1.fieldbyname ('predm'). value;

Виводить в звіт назву предмета

datamodule2.queryrep1 .close;

Закриття запиту queryrep)

datamodule2.queryrep1.sql.clear;

datamodute2.queryrep1.sql.add ('select * from prepod');

datamodule2.queryrep1, sql.add ('where kprep =' +

datamodule2.izuchenie.fieldbyname ('kprep'). asstring);

datamodule2.queryrep1 .open;

form12.QRLabel13.caption =

datamodule2.queryrep1.fieldbyname ('fioprep'). value;

Виводить в звіт ПІБ викладача

datamodule2.queryrep1 .close;

datamodule2.queryrep1 .sql.clear;

datamodule2.queryrep1, sql.add ('select ng, sh_specfrom gruppa');

datamodule2.queryrep1, sql.add ('where ng =' + "" +

datamodule2.izuchenie.fieldbyname ('ng'). asstring + "");

datamodule2.queryrep1 .open;

form12.QRLabel5.caption: =

datamodule2.queryrep1.fieldbyname ('sh_spec'). va! ue;

Виводить в звіт шифр спеціальності.

datamodule2.queryrep1 .close;

datamodule2.queryrep1 .sql.clear;

datamodule2.queryrep1 .sql.addf'select * from student ');

datamodule2.queryrep1 .sql.addfwhere student. ng = '+ "" +

datamodule2.izuchenie.fieldbyname ('ng'). asstring + "");

datamodule2.queryrep 1, sql.add ('order by nomer_stud');

datamodule2.queryrep1 .open;

Виводить в звіт список студентів обраної групи. form12.QRLabel7.caption: =

datamodule2.izuchenie.fieldbyname ('semestr'). asstring;

Виводить в звіт номер семестру

Блок-схема процедури, генеруючої

Рис. 14.20. Блок-схема процедури, генеруючої "залікову (екзаменаційну) відомість"

form12.QRLabel9.caption: =

datamodule2.izuchenie.fieldbyname ('ng'). asstring;

Виводить в звіт номер групи

form12.quickrep1 .Preview;

Виводить звіт на попередній перегляд

datamodule2.queryrep1 .close;

end;

Дану процедуру можна представити у вигляді блок-схеми, зображеної на рис. 14.20.

На цьому закінчимо опис розподіленої БД "Навчальний процес".

 
Якщо Ви помітили помилку в тексті позначте слово та натисніть Shift + Enter
< Попередня   ЗМІСТ   Наступна >
 
Дисципліни
Агропромисловість
Аудит та Бухоблік
Банківська справа
БЖД
Географія
Документознавство
Екологія
Економіка
Етика та Естетика
Журналістика
Інвестування
Інформатика
Історія
Культурологія
Література
Логіка
Логістика
Маркетинг
Медицина
Нерухомість
Менеджмент
Педагогіка
Політологія
Політекономія
Право
Природознавство
Психологія
Релігієзнавство
Риторика
Соціологія
Статистика
Техніка
Страхова справа
Товарознавство
Туризм
Філософія
Фінанси
Пошук