Введение в базы данных. Общая характеристика основных понятий
В алгоритмическом языке Паскаль вводится такой вид данных, как запись (RECORD) – сложная переменная с несколькими компонентами, которые могут иметь разные типы. Кроме того, доступ к компонентам записи (полям) осуществляется не по индексу, а по имени. При программировании задачи 1 на языке Паскаль логическая запись НАЧИСЛЕНИЕ представляется видом данных RECORD, набор экземпляров логических записей сотрудников (логический файл) представляется "физическим" файлом, формируемым средствами языка Паскаль и операционной системы.
Salary = RECORD
FIO: string;
O: real;
Ko: real;
S: real;
END;Отметим важную специфику таких невычислительных задач. Для этих задач характерны большие объемы данных (большое количество сотрудников, большое количество производимых изделий и т. п.). Указанные данные, как правило, используются для решения задачи многократно (зарплата начисляется постоянно каждый месяц), поэтому данные должны достаточно долго храниться в памяти ЭВМ. Для длительного хранения всегда используется внешняя память.
В связи с этим решение задачи 1 состоит из двух этапов.
1. Ввод исходных данных и занесение их во внешнюю память.
type
Salary = RECORD
FIO: string;
O: real;
Ko: real;
S: real;
END;
FSalary = File of Salary;
var
F: FSalary;
...
{ Ввод исходных данных }
repeat
write('Введите количество сотрудников (не более',
MaxN,' ): ');
readln(N);
until (N>0) AND (N<=MaxN);
For I := 1 to N do
Begin
Write('Введите фамилию сотрудника с номером ',I,': ');
ReadLn(Sotr[i].FIO);
Write('Введите оклад сотрудника с номером ', I, ': ');
ReadLn(Sotr[i].O);
Write('Введите кол-во отработанных дней сотрудника с
номером ', I, ': ');
ReadLn(Sotr[i].Ko);
End;
{ Занесение данных во внешнюю память }
Assign(F, 'MyFile.fsf');
Rewrite(F);
For I := 1 to N do
Write(F, Sotr[i]);
Close(F);
...2. Чтение исходных данных из внешней памяти, расчет начисленных сумм и вывод на печать.
...
{ Чтение данных из внешней памяти }
Assign(F, 'MyFile.fsf');
Reset(F);
For I := 1 to N do
Read(F, Sotr[i]);
Close(F);
{ Расчет и печать начисленных сумм }
For I := 1 to N do
Begin
Sotr[i].S := Sotr[i].O * Sotr[i].Ko / Kr;
WriteLn(Sotr[i].FIO, ': ', Sotr[i].S);
End;
...Представленные программы решают поставленную задачу при сделанных предположениях. Необходимые для этого данные хранятся в файле MyFile.fsf, предназначенном только для решения этой задачи. Отметим, что в этом случае описание данных включено в прикладную программу. При изменении формата записей файла необходимо изменение прикладной программы. Таким образом, программная система, решающая поставленную задачу, определяет свои собственные данные и управляет ими. Такие программные системы называются файловыми системами [ [ 1.2 ] ], [ [ 1.3 ] ].
Задача 2. Учет кадрового состава.
Здесь обрабатываются сведения о сотруднике, представленные в карточке СОТРУДНИК:
Решение задачи состоит из следующих этапов:
Ввод исходных данных и занесение их во внешнюю память.
Чтение исходных данных из внешней памяти с целью удаления, корректировки или добавления записи.
...
{ Чтение данных из внешней памяти }
Assign(F, 'MyFile.fsf');
Reset(F);
IsFound := False;
For I := 1 to N do
Begin
Read(F, Sotr);
If Sotr.FIO = KeyFio Then
Begin
IsFound := True;
Sotr.D := 'Начальник отдела';
Seek(F, FilePos(F)-1);
Write(F, Sotr);
Break;
End;
If IsFound Then
WriteLn('Корректировка успешно произведена')
Else WriteLn('Сотрудника ', KeyFio, 'не обнаружено');
Close(F);
...В рассматриваемом случае задача 2 решается независимо от задачи 1.