Структура данных

Структура данных (англ. data structure) — программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных в вычислительной технике. Для добавления, поиска, изменения и удаления данных структура данных предоставляет некоторый набор функций, составляющих её интерфейс.

Термин «структура данных» может  иметь несколько близких, но тем не менее различных значений:

  • Абстрактный тип данных;
  • Реализация какого-либо абстрактного типа данных;
  • Экземпляр типа данных, например, конкретный список;
  • В контексте функционального программирования — уникальная единица (англ. unique identity), сохранящаяся при изменениях. О ней неформально говорят как об одной структуре данных, несмотря на возможное наличие различных версий.

Структуры данных формируются с  помощью типов данных, ссылок и операций над ними в выбранном языке программирования.

Различные виды структур данных подходят для различных приложений; некоторые  из них имеют узкую специализацию  для определённых задач. Например, B-деревья обычно подходят для создания баз данных, в то время как хеш-таблицы используются повсеместно для создания различного рода словарей, например, для отображения доменных имён в интернет-адреса компьютеров.

При разработке программного обеспечения  сложность реализации и качество работы программ существенно зависит  от правильного выбора структур данных. Это понимание дало начало формальным методам разработки и языкам программирования, в которых именно структуры данных, а не алгоритмы, ставятся во главу архитектуры программного средства. Большая часть таких языков обладает определённым типом модульности, позволяющим структурам данных безопасно переиспользоваться в различных приложениях. Объектно-ориентированные языки, такие как Java являются примерами такого подхода.

Многие классические структуры  данных представлены в стандартных  библиотеках языков программирования или непосредственно встроены в  языки программирования. Например, структура данных хэш-таблица встроена в языки программирования Lua, Perl, Python, Ruby, Tcl и др. Широко используется стандартная библиотека шаблонов (STL) языка.

Фундаментальными строительными  блоками для большей части  структур данных являются массивы, записи (struct в Си и record в Паскале), размеченные объединения (union в Си) и ссылки. Например, двусвязный список может быть построен с помощью записей и ссылок, где каждая запись (узел) будет хранить данные и ссылки на «левый» и «правый» узлы.

Сравнение структур данных в функциональном и императивном программировани


Проектировать структуры данных для  функциональных языков более сложно, чем для императивных, как минимум  по двум причинам[1]:

  1. Почти все структуры данных интенсивно используют присваивание, которое в чисто функциональном стиле не используется;
  2. Функциональные структуры данных являются более гибкими, и поэтому там, где в императивном программировании старая версия теряется, просто заменяясь новой, в функциональном она автоматически продолжает существовать. Другими словами, в императивном программировании (если не принять особых мер, могущих серьёзно усложнить программу) структуры данных являются эфемерными (англ. ephemeral), а в функциональных программах они как правило постоянные (англ. Persistent)

 

 

ВВЕДЕНИЕ

 

Данная контрольная работа содержит задачи, которые встают перед  любым пользователем, особенно начинающим, при начале работы на РС и понимании  необходимости автоматизации своей  деятельности. Это в первую очередь  выбор пакетов прикладных программ, элементарные сведение о них, а также  навыки работы с ними. Анализу, оценке и выбору пользователем пакетов  прикладных программ посвящена вторая часть контрольной работы.

Представление и преобразование информации в ЭВМ описано в  первой части.

Особенно важна 3 часть  данной контрольной работы, потому что без использования современных  информационных систем, невозможна скоординированная  работа. Специалисты, которые используют систему КонсультантПлюс наряду с программным обеспечением Microsoft, могут быть уверены – система КонсультантПлюс работает стабильно и предоставляет современные возможности для надежной и эффективной работы с правовой информацией.

 
 

1. ПРЕДСТАВЛЕНИЕ  И ПРЕОБРАЗОВАНИЕ ИНФОРМАЦИИ  В ЭВМ

 

Системой счисления принято  называть совокупность приёмов наименования и обозначения чисел, т.е. способ записи чисел с помощью заданного  набора специальных знаков (цифр).

Существуют позиционные  и непозиционные системы счисления.

В непозиционных системах вес цифры (т.е. тот вклад, который  она вносит в значение числа) не зависит  от ее позиции в записи числа. Так, в римской системе счисления  в числе ХХХII (тридцать два) вес цифры Х в любой позиции равен просто десяти.

В позиционных системах счисления  вес каждой цифры изменяется в  зависимости от ее положения (позиции) в последовательности цифр, изображающих число. Например, в числе 757,7 первая семерка означает 7 сотен, вторая - 7 единиц, а третья - 7 десятых долей  единицы.

Любая позиционная система  счисления характеризуется своим  основанием. Основание позиционной  системы счисления - это количество различных знаков или символов, используемых для изображения цифр в данной системе.

При переводе чисел из десятичной системы счисления в систему  с основанием P > 1 обычно используют следующий алгоритм:

1) если переводится целая  часть числа, то она делится  на P, после чего запоминается  остаток от деления. Полученное  частное вновь делится на P, остаток  запоминается. Процедура продолжается  до тех пор, пока частное  не станет равным нулю. Остатки  от деления на P выписываются в  порядке, обратном их получению;

2) если переводится дробная  часть числа, то она умножается  на P, после чего целая часть  запоминается и отбрасывается.  Вновь полученная дробная часть  умножается на P и т.д. Процедура  продолжается до тех пор, пока  дробная часть не станет равной  нулю. Целые части выписываются  после двоичной запятой в порядке  их получения. Результатом может  быть либо конечная, либо периодическая  двоичная дробь. Поэтому, когда  дробь является периодической,  приходится обрывать умножение  на каком-либо шаге и довольствоваться  приближенной записью исходного  числа в системе с основанием P.

С развитием электронно-вычислительной техники большое применение получили двоичная, восьмеричная и шестнадцатеричная  системы счисления.

Несмотря на то, что десятичная СС имеет широкое распространение, ЭВМ строятся на двоичных (цифровых) элементах, так как реализовать  элементы с десятью четко различными состояниями сложно.

В двоичной системе счисления  используются только две цифры 0 и 1. И значит, имеется только два однозначных  числа.

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

1.   Для её реализации нужны технические устройства с двумя устойчивыми состояниями (есть ток - нет тока, намагничен - не намагничен и т.п.), а не с десятью, - как в десятичной;

2.   Представление информации посредством только двух состояний надёжно и помехоустойчиво;

3.   Возможно применение аппарата булевой алгебры для выполнения логических преобразований информации;

4.   Двоичная арифметика намного проще десятичной.

Недостаток двоичной системы - запись числа будет, как правило, длиннее, чем в десятичной.

Шестнадцатеричная и восьмеричная СС используются при составлении программ на языке машинных кодов для более короткой и удобной записи двоичных кодов - команд, данных, адресов и операндов.

Если необходимо перевести  число из двоичной системы счисления  в систему счисления, основанием которой является степень двойки, достаточно объединить цифры двоичного  числа в группы по столько цифр, каков показатель степени.

Задача перевода из одной  системы счисления в другую часто  встречается при программировании и особенно часто - при программировании на языке Ассемблера.

В ВТ, с целью упрощения реализации арифметических операций, применяют специальные коды. За счет этого облегчается определение знака результата операции, а операция вычитания чисел сводится к арифметическому сложению. В результате упрощаются устройства, выполняющие арифметические операции. В ВТ применяют прямой, обратный и дополнительный коды. Прямой двоичный код - это такое представление двоичного числа X, при котором знак "плюс" кодируется нулем в старшем разряде числа, а знак "минус" - единицей. При этом старший разряд называется знаковым.

Обратный код для положительных  чисел совпадает с прямым кодом. Чтобы представить отрицательное  двоичное число в обратном коде, нужно оставить в знаковом разряде 1, а во всех значащих разрядах заменить 1 на 0 и 0 на 1. Такая операция называется инвертированием и обозначается горизонтальной чертой над инвертируемым  выражением.

Дополнительный код положительного числа совпадает с прямым кодом, а для отрицательного числа получается инверсией всех значащих разрядов и  прибавлением единицы к младшему разряду результата. Дополнительный код отрицательного числа может  быть получен из обратного кода путем  прибавления 1 к младшему разряду  обратного кода с учетом переносов  между разрядами.

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

В ЭВМ применяются две  формы представления чисел: с  фиксированной (ффт) и плавающей (фпт) точкой. В случае ффт положение точки фиксируется в определенном месте относительно разрядов числа, как правило, перед старшим или после младшего; в первом случае представляются числа N<1, во втором - только целые числа.

По традиции нумерация  бинарных разрядов (битов) в ЭВМ общего назначения ведется слева направо. Знаковый разряд является, как правило, крайним слева. В случае использования  прямого кода диапазон представления  чисел составляет 1N 2 -1; дополнительный код позволяет использовать числа  в диапазоне -2 N2 -1, что при n=32 примерно соответствует диапазону десятичных целых чисел 1N 10. Для других рассмотренных  кодов установление диапазонов представимости чисел оставляем читателю. В настоящее время форма фиксации точки перед старшим разрядом используется для представления целых чисел с фиксацией точки после младшего разряда. Если точка фиксируется справа от младшего разряда, то регистром целых чисел со знаком можно представлять нуль, положительные и отрицательные целые бинарные числа. В зависимости от модели ЭВМ используются два формата ффт представления целых чисел: со знаком и без; в последнем случае все разряды регистра служат для представления модуля числа. Форматы чисел с ффт используются в качестве основных только в ограниченных по возможностям ЭВМ, ориентированных на работу в системах передачи данных, управлении технологическими процессами и работы в режиме реального времени. Остальные типы ЭВМ используют эти форматы, главным образом, для работы с целыми числами.

В ЭВМ общего (универсального) назначения основной является форма  представления чисел с плавающей  точкой (фпт), не требующая масштабирования данных. Но и в таких ЭВМ часто используется рассмотренная выше ффт, ибо операции с целыми числами в таких форматах выполняются быстрее; сюда же относятся и операции индексной арифметики над кодами адресов (обеспечение адресации). В общем случае представление N-числа в фпт имеет следующий вид: N=AM, где M - мантисса; А - основание характеристики и р - ее порядок. Как правило, величина Ар представляет целую степень двух. Мантисса (М; является дробью со знаком) и порядок (р; целое со знаком) представляются в А-с. с. в соответствующей бинарно-кодированной форме. Знак N-числа совпадает со знаком М-мантиссы; р-порядок определяет положение точки в представлении N-числа.

В таком формате, как правило, крайний левый бит определяет знак мантиссы, следующая за ним  группа битов - порядок со знаком и  остальные биты - модуль мантиссы. Действия над числами в фпт требуют выполнения операций как над мантиссой, так и над порядком (вычитание, сложение, сравнение и др). Для упрощения операций над порядками их представляют в смещенном коде, что позволяет работать с порядками, как с целыми без знака. Это достигается представлением р-порядка в виде р =р+2 , где к - число битов, отводимых под р; смещенный порядок (р всегда положителен).

Так как под мантиссу отводится  фиксированное число битов, то для  получения максимальной точности используются нормализованные числа, для которых  выполняется условие А М<1. В некоторых ЭВМ используется другое условие нормализации - 1М<A, т.е. старший бит мантиссы в А-с. с. отличен от нуля. Если в процессе вычислений получается ненормализованное число, оно, как правило, автоматически нормализуется: если d старших битов мантиссы нулевые, то производится ее сдвиг на d битов влево (младшие биты обнуляются) с одновременным уменьшением порядка числа на d единиц (при нулевой мантиссе нормализации не производится). В различных ЭВМ используются фпт при А=2 (m=1,3,4,...); при этом, р-порядок представляется целым числом, а М-мантисса - бинарным числом, состоящим из групп по m битов, изображающих цифры мантиссы в А-с. с. Наиболее распространенными являются основания A{2,8,16}. Использование небинарного А-основания несколько уменьшает точность вычислений, но позволяет увеличивать диапазон представимых чисел и скорость выполнения ряда операций, уменьшая вероятность появления ненормализованных чисел. Диапазон представимых чисел в фпт зависит от А-с. с. и числа битов, отведенных под р-порядок; тогда как точность вычислений определяется числом битов М-мантиссы. С увеличением разрядности мантиссы растет точность вычислений, но уменьшается скорость выполнения арифметических операций. Ввиду различных требований, предъявляемых к точности вычислений, многие ЭВМ используют несколько форматов для представления чисел в фпт (разные разрядности мантиссы). В первую очередь, это относится к сопроцессорам ПК и микро-ЭВМ. Такое архитектурное решение позволяет более гибко организовывать вычислительный ход.

Кодирование символьной информации осуществляется на основе двоичных кодов, первоначально для нужд телеграфной  связи. Этот двоичный код называется ASCII (American Standard Code for Information Interchange). Оба эти кода совпадают по первым 128 позициям. Это фактически есть неизменяемая часть любого кода для ЭВМ.

Коды от 128 до 255 - для национальных алфавитов и специальных символов. Поскольку между символьными  величинами и их двоичными кодами существует взаимнооднозначное соответствие, то над символьными величинами определены операции сравнения.

В настоящее время широко распространен BCD - Binary Coded Decimal - каждая десятичная цифра записывается четырехбитовым двоичным эквивалентом.

Теоретической базой обработки  логической информации является Булева алгебра логики. Эта двузначная алгебра  была разработана для формального  описания логических построений задолго  до появления первых ЭВМ. Элементы этой алгебры могут иметь одно из двух значений: истина и ложь. Распространенной формой задания логических функций  являются таблицы истинности. Базовыми функциями булевой алгебры являются отрицание, конъюнкция, дизъюнкция. Для  упрощения логических функций используются тождества алгебры логики.

В АЛУ ЭВМ имеется набор элементарных логических устройств, соответствующих основным логическим операциям. На входы логических устройств подаются двоичные коды, которые рассматриваются как логические переменные, а выход зависит от таблицы истинности. Логическому значению "истина" соответствует 1, а значению "ложь" - 0.

Для обработки текстовой  информации на компьютере необходимо представить ее в двоичной знаковой системе. Для кодирования каждого  знака требуется количество информации, равное 8 битам, т. е. длина двоичного  кода знака составляет восемь двоичных знаков. Каждому знаку необходимо поставить в соответствие уникальный двоичный код из интервала от 00000000 до 11111111 (в десятичном коде от 0 до 255).

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

 

Формы представления чисел в  ЭВМ


Машинным изображением числа называют его представление в разрядной  сетке ЭВМ. В вычислительных машинах  применяются две формы представления  чисел:

  • естественная форма или форма с фиксированной запятой (точкой);
  • нормальная форма или форма с плавающей запятой (точкой);

Пример:

(естественная форма) 452,34 = 452340*10-3 = 0,0045234*10= 0,45234*103(нормальная форма)

Всякое десятичное число, прежде чем  оно попадает в память компьютера, преобразуется по схеме:

X10 → X2 = M1 × [102]r


После этого осуществляется ещё  одна важная процедура:

  • мантисса с её знаком заменяется кодом мантиссы с её знаком;
  • порядок числа с его знаком заменяется кодом порядка с его знаком.

Указанные коды двоичных чисел - это  образы чисел, которые и воспринимают вычислительные устройства. Каждому  двоичному числу можно поставить  в соответствие несколько видов  кодов.

Существуют следующие коды двоичных чисел:

  • Прямой код;
  • Обратный код;
  • Дополнительный код.

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

 

Содержание 

[убрать]

  • 1 Естественная форма
  • 2 Нормальная форма
  • 3 Прямой код
  • 4 Обратный код
  • 5 Дополнительный код
  • 6 Литература

Естественная форма

В форме с фиксированной запятой  в разрядной сетке выделяется строго определенное число разрядов для целой и для дробной  частей числа. Левый (старший) разряд хранит признак знака (0 – "+", 1 – "-") и для записи числа не используется.

Сама запятая никак не изображается, но ее место строго фиксировано и  учитывается при выполнении всех операций с числами. Независимо от положения  запятой в машину можно вводить  любые числа, т.к.

A = [A] · KА,

где А – произвольное число, [A] – машинное изображение числа в разрядной сетке, KА - масштабный коэффициент.

Естественная форма числа в  неявном, условном виде реализуется  формулой:

т.е. число записывается только с  помощью набора значащих цифр xбез явного указания их весов и знаков сложения между ними. Отсчет ведется от точки, которая обычно фиксируется между целой и дробной частями числа.

С фиксированной запятой числа  изображаются в виде последовательности цифр с постоянным для всех чисел  положением запятой, отделяющей целую  часть от дробной(например, 32,54; 0,0036; –108,2). Форма представления чисел с фиксированной запятой упрощает аппаратную реализацию ЭВМ, уменьшает время выполнения машинных операций, однако при решении задач на машине необходимо постоянно следить за тем, чтобы все исходные данные, промежуточные и окончательные результаты находились в допустимом диапазоне представления. Если этого не соблюдать, то возможно переполнение разрядной сетки, и результат вычислений будет неверным. От этих недостатков в значительной степени свободны ЭВМ, использующие форму представления чисел с плавающей точкой, или нормальную форму. В современных компьютерах форма представления чисел с фиксированной запятой используется только для целых чисел.

Нормальная форма


С плавающей запятой (ПЛЗ) числа  изображаются в виде:

X = ± M×P ±r,

где M - мантисса числа (правильная дробь  в пределах 0,1 ≤ M < 1), r - порядок числа (целое), P - основание системы счисления. Например, приведенные выше числа с фиксированной запятой можно преобразовать в числа с плавающей запятой так: 0,3254×102, 0,36×10-2, –0,1082×103.

Нормализованная экспоненциальная запись числа - это запись вида a= m*Pq, где q - целое число (положительное, отрицательное или ноль), а m - P-ичная дробь, у которой целая часть состоит из одной цифры. При этом m - мантиссa числа, q - порядк числа.

Tо есть нормальная форма реализуется формулой: 

Нормальная форма представления  имеет огромный диапазон чисел и  является основной в современных  ЭВМ.

При представлении чисел с плавающей  запятой часть разрядов ячейки отводится  для записи порядка числа, остальные  разряды - для записи мантиссы. По одному разряду в каждой группе отводится  для изображения знака порядка  и знака мантиссы. Для того, чтобы не хранить знак порядка, используется так называемый смещённый порядок, который рассчитывается по формуле 2(a-1) + ИП, где a - количество разрядов, отводимых под порядок, ИП - истинный порядок.

В конкретной ЭВМ диапазон представления  чисел с плавающей запятой  зависит от основания системы  и числа разрядов для представления  порядка. При этом у одинаковых по длине форматов чисел с плавающей запятой с увеличением основания системы счисления существенно расширяется диапазон представляемых чисел. Точность вычислений при использовании формата с плавающей запятой определяется числом разрядов мантиссы. Она увеличивается с увеличением числа разрядов.

Алгоритм представления  числа с плавающей запятой:

  1. перевести число из p-ичной системы счисления в двоичную;
  2. представить двоичное число в нормализованной экспоненциальной форме;
  3. рассчитать смещённый порядок числа;
  4. разместить знак, порядок и мантиссу в соответствующие разряды сетки.

При представлении информации в  виде десятичных многоразрядных чисел  каждая десятичная цифра заменяется двоично-десятичным кодом. Для ускорения  обмена информацией, экономии памяти и  удобства операций над десятичными  числами предусматриваются специальные  форматы их представления: зонный (распакованный) и упакованный. Зонный формат используется в операциях ввода-операций. Для этого в ЭВМ имеются специальные команды упаковки и распаковки десятичных чисел.

Прямой код


Представление числа в привычной  форме "знак"-"величина", при которой старший разряд ячейки отводится под знак, а остальные - под запись числа в двоичной системе, называется прямым кодом двоичного числа. Например, прямой код двоичных чисел 1001 и -1001 для 8-разрядной ячейки равен 00001001 и 10001001 соответственно.

Положительные числа в ЭВМ всегда представляются с помощью прямого  кода. Прямой код числа полностью  совпадает с записью самого числа  в ячейке машины. Вообще, положительные  числа в прямом, обратном и дополнительном кодах изображаются одинаково  —  двоичными кодами с цифрой 0 в знаковом разряде.

Например,

Прямой код отрицательного числа  отличается от прямого кода соответствующего положительного числа лишь содержимым знакового разряда. Но отрицательные  целые числа не представляются в  ЭВМ с помощью прямого кода, для их представления используется так называемый дополнительный код.

Прямой код  двоичного числа(а это либо мантисса, либо порядок) образуется по такому алгоритму:

  1. Определить данное двоичное число - оно либо целое (порядок), либо правильная дробь (мантисса).
  2. Если это дробь, то цифры после запятой можно рассматривать как целое число.
  3. Если это целое и положительное двоичное число, то вместе с добавлением 0 в старший разряд число превращается в код. Для отрицательного двоичного числа перед ним ставится единица.

Например, 

Обратный код


Обратный код положительного двоичного  числа совпадает с прямым кодом.Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.

Например, 

Дополнительный код


Дополнительный код положительного числа равен прямому коду этого  числа. Дополнительный код отрицательного числа m равен 2- |m|, где k - количество разрядов в ячейке.Также дополнительный код отрицательного числа образуется путём прибавления 1 к обратному коду.

При представлении целых чисел  со знаком старший (левый) разряд отводится  под знак числа, и под собственно число остаётся на один разряд меньше.

Алгоритм получения  дополнительного кода отрицательного числа:

  1. модуль отрицательного числа представить прямым кодом в k двоичных разрядах;
  2. значение всех бит инвертировать:все нули заменить на единицы, а единицы на нули(таким образом, #получается k-разрядный обратный код исходного числа);
  3. к полученному обратному коду прибавить единицу.

Дополнительный код используется для упрощения выполнения арифметических операций. Если бы вычислительная машина работала с прямыми кодами положительных  и отрицательных чисел, то при  выполнении арифметических операций следовало  бы выполнять ряд дополнительных действий. Например, при сложении нужно  было бы проверять знаки обоих  операндов и определять знак результата. Если знаки одинаковые, то вычисляется  сумма операндов и ей присваивается  тот же знак. Если знаки разные, то из большего по абсолютной величине числа  вычитается меньшее и результату присваивается знак большего числа. То есть при таком представлении  чисел (в виде только прямого кода) операция сложения реализуется через достаточно сложный алгоритм. Если же отрицательные числа представлять в виде дополнительного кода, то операция сложения, в том числе и разного знака, сводится к из поразрядному сложению.

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

Например, 

 

ЧТО ТАКОЕ БАЗЫ ДАННЫХ?

В самом общем смысле база данных - это набор надписей и файлов, которые организованы специальным  образом. В своем компьютере вы, например, могли бы хранить фамилии и  адреса всех ваших друзей или клиентов. Может, вы храните все написанные вами письма, и они сгруппированы  по адресатам, а возможно, у вас  есть набор файлов с данными по финансовым делам: полученным или выставленным счетам, расходам по чековой книжке или балансам. Один из типов баз  данных - это документы, набранные  при помощи текстовых редакторов и сгруппированные по темам. Другой тип - это файлы с электронными таблицами, которые вы объединяете в группы по характеру их использования. Если вы очень организованный человек, то, используя специальную структуру каталогов и подкаталогов, вы, возможно, справитесь с несколькими сотнями электронных таблиц. В этом случае вы являетесь диспетчером базы данных. Но что делать, когда решаемая вами задача становится слишком большой? Как собрать информацию обо всех клиентах и их заказах, если эти данные разбросаны по отдельным текстовым файлам и электронным таблицам? Как сохранить связи между файлами при вводе новой информации? Как убедиться, что данные вводятся правильно? Что делать, если одна и та же информация может потребоваться нескольким пользователям, но при этом нельзя допустить, чтобы два человека в одно и то же время корректировали одни и те же данные? Когда вы оказываетесь перед подобными проблемами, вам нужна система управления базами данных (СУБД).

Реляционные базы данных

Структура данных