Введение в базы данных. Общая характеристика основных понятий
В алгоритмическом языке Паскаль вводится такой вид данных, как запись (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.