Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Различные способы представления данных в информационных системах (Понятие представления данных)

Содержание:

Введение

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

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

Объектом исследования в данной работе являются общие понятия представления данных, предметом – представление данных в различных сферах.

Задачами данной работы являются:

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

В основу данной работы легли книги таких авторов, как Грэхем и Семакин.

1. Общие понятия представления данных

1.1. Понятие представления данных

Согласно ГОСТу 20886-85 представление данных является характеристикой, которая выражает правила кодирования элементов и образования конструкций данных на конкретном уровне рассмотрения в вычислительной системе[1] [1].

1.2. Обработка информации с изменением формы: систематизация, сортировка, поиск и кодирование

К обработке информации с изменением формы представления без изменения содержания информации относятся:

  • систематизация;
  • сортировка;
  • поиск;
  • кодирование.

Систематизация – это деление на группы по каким-либо признакам. Информацию систематизируется, например, по способу восприятия человеком[2].

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

  • наблюдение;
  • общение;
  • чтение соответствующей литературы;
  • просмотр телепередач;
  • работа в библиотеках;
  • другие методы[3].

Для облегчения поиска внутри блока информации сортируется. Сортировка – размещение информации в определенном порядке (упорядочивание). Сортировка может быть:

  • по алфавиту (в порядке следования букв алфавита);
  • по номерам (в порядке возрастания или убывания чисел);
  • в хронологической последовательности (по дате или времени).

К процессу обработки информации с изменением формы представления без изменения содержания относится кодирование[4] [4, 8].

1.3. Кодирование информации

Кодирование – переход от одной формы представления информации к другой, более удобной для восприятия, обработки, хранения или передачи в зависимости от цели. Обязательным условием кодирования является изменение формы представления без изменения содержания[5].

Способы кодирования бывают:

  • графический – с помощью рисунков и знаков;
  • числовой – с помощью чисел;
  • символьный – с помощью символов алфавита;
  • звуковой – с помощью звуков[6] [1, 4].

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

2. Представление данных в различных средах

2.1. Представление данных в памяти ЭВМ

Для представления как числовой так и не числовой информации в памяти ЭВМ используется двоичный способ кодирования.

Элементарная ячейка памяти ЭВМ имеет длину 8 бит (1 байт). Каждый байт имеет свой номер (его называют адресом). Наибольшую последовательность бит, которую ЭВМ может обрабатывать как единое целое, называют машинным словом. Длина машинного слова зависит от разрядности процессора и может быть равной 16, 32 битам и т.д.

Для кодирования символов достаточно одного байта. При этом можно представить 256 символов (с десятичными кодами от 0 до 255). Набор символов персональных компьютеров чаще всего является расширением кода ASCII (American Standart Code of Information Interchange - стандартный американский код для обмена информацией)[7].

В некоторых случаях при представлении в памяти ЭВМ чисел используется смешанная двоично-десятичная система счисления, где для хранения каждого десятичного знак нужен полубайт (4 бита) и десятичные цифры от 0 до 9 представляются соответствующими двоичными числами от 0000 до 1001. Например, упакованный десятичный формат, предназначенный для хранения целых чисел с 18-ю значащими цифрами и занимающий в памяти 10 байт (старший из которых знаковый), использует именно этот вариант[8].

Другой способ представления целых чисел - дополнительный код. Диапазон значений величин зависит от количества бит памяти отведенных для их хранения. Например, величины типа Integer лежат в диапазоне от -32768 (-215) до 32677 (215-1) и для их хранения отводится 2 байта: типа LongInt - в диапазоне от -231 до 231-1 и размещаются в 4 байтах: типа Word - в диапазоне от 0 до 65535 (216-1) используется 2 байта и т.д.[9].

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

Вообще, разряды нумеруются справа налево, начиная с нуля.

Дополнительный код положительного числа совпадает с его прямым кодом. Прямой код целого числа может быть представлен следующим образом: число переводиться в двоичную систему счисления, а затем его двоичную запись слева дополняют таким количеством незначащих нулей, сколько требует тип данных, к которому принадлежит число. Например, если число 37(10) = 100101(2) объявлено величиной типа Integer, то его прямым кодом будет 0000000000100101, а если величиной типа LongInt, то его прямой код будет 00000000000000000000000000100101. Для более компактной записи чаще используют шестнадцатеричный код. Полученные коды можно переписать соответственно как 0025(16) и 00000025(16)[10].

Дополнительный код целого отрицательного числа может быть получен по следующему алгоритму:

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

Например, запишем дополнительный код числа -37, интерпретируя его как величину типа LongInt:

  • прямой код числа 37 есть 000000000000000000000000000100101;
  • инверсный код 11111111111111111111111111011010;
  • дополнительный код 11111111111111111111111111011011 или FFFFFFDB(16)[11].

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

  • вычесть из кода 1;
  • инвертировать код;
  • перевести в десятичную систему счисления. Полученное число записать со знаком минус[12].

Несколько иной способ применяется для представления в памяти персонального компьютера действительных чисел. Рассмотрим представление величин с плавающей точкой.

Любое действительное число можно записать в стандартном виде M*10p, где 1 ≤ M < 10, р- целое число. Например, 120100000 = 1,201*108. Поскольку каждая позиция десятичного числа отличается от соседней на степень числа 10, умножение на 10 эквивалентно сдвигу десятичной запятой на 1 позицию вправо. Аналогично деление на 10 сдвигает десятичную запятую на позицию влево. Поэтому приведенный выше пример можно продолжить: 120100000 = 1,201*108 = 0,1201*109 = 12,01*107... Десятичная запятая плавает в числе и больше не помечает абсолютное место между целой и дробной частями[13].

В приведённой выше записи М называют мантиссой числа, а р - его порядком. Для того чтобы сохранить максимальную точность, вычислительные машины почти всегда хранят мантиссу в нормализованном виде, что означает, что мантисса в данном случае есть число, лежащее между 1(10) и 2(10) (1 ≤ М < 2). Основные системы счисления здесь, как уже отмечалось выше,- 2. Способ хранения мантиссы с плавающей точкой подразумевает, что двоичная запятая находится на фиксированном месте. Фактически подразумевается, что двоичная запятая следует после первой двоичной цифры, т.е. нормализация мантиссы делает единичным первый бит, помещая тем самым значение между единицей и двойкой. Место, отводимое для числа с плавающей точкой, делится на два поля. Одно поле содержит знак и значение мантиссы, а другое содержит знак и значение порядка[14].

Персональный компьютер IBM PC с математическим сопроцессором 8087 позволяет работать со следующими действительными типами (диапазон значений указан по абсолютной величине):

Тип Диапазон Мантисса Байты

Real 2,9*10-39..1,7*1038 11-12 6

Single 1,5*10-45..3,4*1038 7-8 4

Double 5,0*10-324..1,7*10308 15-16 8

Extended 3,4*10-4932..1,1*104932 19-20 10

Покажем преобразование действительного числа для представления его в памяти ЭВМ на примере величины типа Double[15].

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

S Смещенный порядок Мантисса

63 52 0

Можно заметить, что старший бит, отведенный под мантиссу, имеет номер 51, т.е. мантисса занимает младшие 52 бита. Черта указывает здесь на положение двоичной запятой. Перед запятой должен стоять бит целой части мантиссы, но поскольку она всегда равна единице, здесь данный бит не требуется и соответствующий разряд отсутствует в памяти (но он подразумевается). Значение порядка храниться здесь не как целое число, представленное в дополнительном коде. Для упрощения вычислений и сравнения действительных чисел значение порядка в ЭВМ хранится в виде смещенного числа, т.е. к настоящему значению порядка, перед записью его в память, прибавляется смещение. Смещение выбирается так, чтобы минимальному значению порядка соответствовал нуль. Например, для типа Double порядок занимает 11 бит и имеет диапазон от 2-10^23 до 210^23, поэтому смещение равно 1023(10) = 1111111111(2). Наконец, бит с номером 63 указывает на знак числа[16].

Таким образом, из вышесказанного вытекает следующий алгоритм для получения представления действительного числа в памяти ЭВМ:

  • перевести модуль данного числа в двоичную систему счисления;
  • нормализовать двоичное число, т.е. записать в виде М*2p, где М - мантисса (ее целая часть равна 1(2)) и р - порядок, записанный в десятичной системе счисления;
  • прибавить к порядку смещение и перевести смещенный порядок в двоичную систему счисления;
  • учитывая знак заданного числа (0 - положительное; 1 - отрицательное), выписать его представление в памяти ЭВМ[17] [2,3, 5, 7].

2.2. Представление данных в математике

Любое десятичное число можно представить в любой позиционной системе счисления, для целых чисел это можно сделать единственным способом. На основании этого можно утверждать, что любое число может быть записано в виде суммы степеней числа P, где Р – натуральное число больше 1. В качестве базиса позиционной системы берется возрастающая последовательность степеней числа Р и тем самым однозначно определяется Р-ичная система счисления. Разложение числа по степеням Р является представлением данного числа в Р-ичной системе счисления. Представление числа в Р-ичной системе счисления называется развернутой формой записи числа. Другим способом записи является последовательное перечисление значащих цифр, начиная со старшей[18].

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

В Р-ичной системе счисления таблица сложения представляет собой результаты сложения каждой цифры алфавита Р-ичной системы с любой другой цифрой этой же системы. Если результат сложения двух цифр в Р-ичной системе больше Р – 1, то к следующему разряду добавляется 1[19].

Вычитание из большего числа меньшего в Р-ичной системе счисления можно производить столбиком аналогично вычитанию в десятичной системе. Для выполнения этой операции используется та же таблица сложения, что и в операции сложения Р-ичной системы счисления. Если вычитаемое число больше уменьшаемого, то из старшего разряда вычитается 1.

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

При делении столбиком в Р-ичной системе счисления приходится в качестве промежуточных вычислений выполнять действия умножения и вычитания, следовательно, использовать таблицы умножения и сложения. Тем не менее, результат деления не всегда является конечной Р-ичной дробью (или целым числом). Тогда при осуществлении операции деления обычно выделяют непериодическую часть дроби и ее период[21].

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

  1. Каждая цифра Р-ичного числа переводится в десятичную систему счисления.
  2. Полученные числа нумеруются справа налево, начиная с нуля.
  3. Число Р переводится в десятичную систему.
  4. Десятичное число, соответствующее каждой Р-ичной цифре умножается на Pk, где k – номер этого числа.
  5. Результаты складываются в десятичной системе[22].

Для того, чтобы перевести число из двоичной системы счисления в десятичную, надо в десятичной системе счисления сложить все степени двоек, которые соответствуют единицам в записи исходного двоичного числа. Нумерация степеней ведется справа налево, начиная с нулевой[23] [1, 4, 8].

2.3. Представление в базах данных

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

В отличие от обычных таблиц реляционных баз данных, представление не является самостоятельной частью набора данных, хранящегося в базе. Содержимое представления динамически вычисляется на основании данных, находящихся в реальных таблицах. Изменение данных в реальной таблице базы данных немедленно отражается в содержимом всех представлений, построенных на основании этой таблицы[24].

Типичным способом создания представлений для СУБД, поддерживающих язык запросов SQL, является связывание представления с определённым SQL-запросом. Соответственно, содержимое представления — это результат выполнения этого запроса, а возможности построения представления ограничиваются только степенью сложности диалекта SQL, поддерживаемого конкретной СУБД. Так, для типичных СУБД, таких как PostgreSQL, Interbase, Firebird, Microsoft SQL Server, Oracle, представление может содержать:

  • подмножество записей из таблицы БД, отвечающее определённым условиям (например, при наличии одной таблицы «Люди» можно создать два представления «Мужчины» и «Женщины», в каждом из которых будут записи только о людях соответствующего пола);
  • подмножество столбцов таблицы БД, требуемое программой (например, из реальной таблицы «Сотрудники» представление может содержать по каждому сотруднику только ФИО и табельный номер);
  • результат обработки данных таблицы определёнными операциями (например, представление может содержать все данные реальной таблицы, но с приведением строк в верхний регистр и обрезанными начальными и концевыми пробелами);
  • результат объединения (join) нескольких таблиц (например, при наличии таблиц «Люди», «Адреса», «Улицы», «Фирмы и организации» возможно построение представления, которое будет выглядеть как таблица, для каждого человека содержащее его личные данные, адрес места жительства, название организации, где он работает, и адрес этой организации);
  • результат слияния нескольких таблиц с одинаковыми именами и типами полей, когда в представлении попадают все записи каждой из сливаемых таблиц (возможно, с исключением дублирования);
  • результат группировки записей в таблице (например, при наличии таблицы «расходы» с записями по каждому платежу можно построить представление, содержащее средства, израсходованные на каждую отдельную статью расходов);
  • практически любую комбинацию вышеперечисленных возможностей[25].

Представления используются в запросах к БД тем же образом, как и обычные таблицы. В случае SQL-СУБД имя представления может находиться в SQL-запросе на месте имени таблицы (в предложении FROM). Запрос из представления обрабатывается СУБД точно так же, как запрос, в котором на месте имени представления находится подзапрос, определяющий это представление. При этом СУБД с развитыми возможностями оптимизации запросов перед выполнением запроса из представления могут проводить совместную оптимизацию запроса верхнего уровня и запроса, определяющего представление, с целью минимизации затрат на выборку данных[26].

Использование представлений не даёт каких-то совершенно новых возможностей в работе с БД, но может быть очень удобно.

Представления скрывают от прикладной программы сложность запросов и саму структуру таблиц БД. Когда прикладной программе требуется таблица с определённым набором данных, она делает простейший запрос из подготовленного представления. При этом даже если для получения этих данных требуется чрезвычайно сложный запрос, сама программа этого запроса не содержит[27].

Использование представлений позволяет отделить прикладную схему представления данных от схемы хранения. С точки зрения прикладной программы структура данных соответствует тем представлениям, из которых программа эти данные извлекает. В действительности данные могут храниться совершенно иным образом, достаточно лишь создать представления, отвечающие потребностям программы. Разделение позволяет независимо модифицировать прикладную программу и схему хранения данных: как при изменении структуры физических таблиц, так и при изменении программы достаточно изменить представления соответствующим образом. Изменение программы не затрагивает физические таблицы, а изменение физической структуры таблиц не требует корректировки программы[28].

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

Поскольку SQL-запрос, выбирающий данные представления, зафиксирован на момент его создания, СУБД получает возможность применить к этому запросу оптимизацию или предварительную компиляцию, что положительно сказывается на скорости обращения к представлению, по сравнению с прямым выполнением того же запроса из прикладной программы[29].

Некоторые СУБД имеют расширенные представления для данных, доступных только для чтения. Так, СУБД Oracle реализует концепцию «материализованных представлений» — представлений, содержащих предварительно выбранные невиртуальные наборы данных, совместно используемых в распределённых БД. Эти данные извлекаются из различных удалённых источников (с разных серверов распределённой СУБД). Целостность данных в материализованных представлениях поддерживается за счёт периодических синхронизаций или с использованием триггеров. Аналогичный механизм предусмотрен в Microsoft SQL Server версии 2000[30].

По самой сути представления могут быть доступны только для чтения. Тем не менее, в некоторых СУБД (например, в Oracle) представления могут быть редактируемыми, как и обычные физические таблицы. Редактирование может допускаться для представлений, выбранных из единственной физической таблицы таким образом, чтобы каждой записи в представлении соответствовала строго одна запись в таблице-источнике, а в числе полей представления был первичный ключ физической таблицы. При выполнении команд редактирования, добавления или удаления для такого представления сервер СУБД преобразует эти команды в соответствующие команды для физической таблицы-источника. Разумеется, если в представлении используется группировка записей или преобразование значений в полях, редактирование такого представления невозможно даже теоретически. Но и такие представления могут, тем не менее, редактироваться, посредством написания соответствующих триггеров (хотя осмысленность подобных операций целиком останется на совести программиста). Впрочем, редактируемые представления, как и возможность создания триггеров для представлений, поддерживают лишь немногие СУБД[31] [3, 5, 8].

По итогам данной главы можно сделать вывод, что представление данных зависит от сферы применения. Представление чаще всего является переформированным видом определенной информации.

Заключение

В рамках данной работы было рассмотрено представление данных. Было рассмотрено представление данных согласно ГОСТу 20886-85, по которому оно является характеристикой, которая выражает правила кодирования элементов и образования конструкций данных на конкретном уровне рассмотрения в вычислительной системе. Были рассмотрены обработки информации, к которым относятся:

  • систематизация;
  • сортировка;
  • поиск;
  • кодирование.

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Андреева Е. В. Математические основы информатики: математическое пособие / Е. В. Андреева, Л. Л. Босова, И. Н. Фалина. – М.: Бином. Лаборатория знаний, 2011. – 312 с.
  2. Глик Д. Информация. История. Теория. Поток / Д. Глик. — М.: CORPUS, 2013. — 576 с.
  3. Годин В. Базы данных. Проектирование. Учебник / В. Годин. – М.: Юрайт, 2016. – 478 с.
  4. Грэхем Р. Конкретная математика. Математические основы информатики / Р. Грэхем, Д. Э. Кнут, О. Паташник. – М.: Вильямс, 2010. – 784 с.
  5. Гудсон Д. Практическое руководство по доступу к данным / Д. Гудсон, Р. Стюард. – СПб.: БХВ-Петербург, 2013. – 304 с.
  6. Илюшечкин В.М. Основы использования и проектирования баз данных / В. М. Илюшечкин. – М.: Юрайт, 2011. – 224 с.
  7. Исаев Г. Проектирование информационных систем / Г. Исаев. – М.: Омега-Л, 2012. – 432 с.
  8. Семакин И. Г. Энциклопедия школьной информатики / И. Г. Семакин, Е. В. Андреева, А. А. Дуванова, Е. А. Еремин, И. А. Калинин. – М.: Бином. Лаборатория знаний, 2011. – 400 с.
  1. Андреева Е. В. Математические основы информатики: математическое пособие / Е. В. Андреева, Л. Л. Босова, И. Н. Фалина. – М.: Бином. Лаборатория знаний, 2011. – С. 246.

  2. Грэхем Р. Конкретная математика. Математические основы информатики / Р. Грэхем, Д. Э. Кнут, О. Паташник. – М.: Вильямс, 2010. – С. 642.

  3. Семакин И. Г. Энциклопедия школьной информатики / И. Г. Семакин, Е. В. Андреева, А. А. Дуванова, Е. А. Еремин, И. А. Калинин. – М.: Бином. Лаборатория знаний, 2011. – C. 253.

  4. Грэхем Р. Конкретная математика. Математические основы информатики / Р. Грэхем, Д. Э. Кнут, О. Паташник. – М.: Вильямс, 2010. – С. 353.

  5. Андреева Е. В. Математические основы информатики: математическое пособие / Е. В. Андреева, Л. Л. Босова, И. Н. Фалина. – М.: Бином. Лаборатория знаний, 2011. – С. 152.

  6. Грэхем Р. Конкретная математика. Математические основы информатики / Р. Грэхем, Д. Э. Кнут, О. Паташник. – М.: Вильямс, 2010. – С. 235.

  7. Глик Д. Информация. История. Теория. Поток / Д. Глик. — М.: CORPUS, 2013. — С. 352.

  8. Годин В. Базы данных. Проектирование. Учебник / В. Годин. – М.: Юрайт, 2016. – С. 252.

  9. Исаев Г. Проектирование информационных систем / Г. Исаев. – М.: Омега-Л, 2012. – С. 52.

  10. Гудсон Д. Практическое руководство по доступу к данным / Д. Гудсон, Р. Стюард. – СПб.: БХВ-Петербург, 2013. – С. 124.

  11. Гудсон Д. Практическое руководство по доступу к данным / Д. Гудсон, Р. Стюард. – СПб.: БХВ-Петербург, 2013. – С. 125.

  12. Годин В. Базы данных. Проектирование. Учебник / В. Годин. – М.: Юрайт, 2016. – С. 235.

  13. Глик Д. Информация. История. Теория. Поток / Д. Глик. — М.: CORPUS, 2013. — С. 253.

  14. Гудсон Д. Практическое руководство по доступу к данным / Д. Гудсон, Р. Стюард. – СПб.: БХВ-Петербург, 2013. – С. 253.

  15. Годин В. Базы данных. Проектирование. Учебник / В. Годин. – М.: Юрайт, 2016. – С. 342.

  16. Исаев Г. Проектирование информационных систем / Г. Исаев. – М.: Омега-Л, 2012. – С. 235.

  17. Гудсон Д. Практическое руководство по доступу к данным / Д. Гудсон, Р. Стюард. – СПб.: БХВ-Петербург, 2013. – С. 125.

  18. Грэхем Р. Конкретная математика. Математические основы информатики / Р. Грэхем, Д. Э. Кнут, О. Паташник. – М.: Вильямс, 2010. – С. 235.

  19. Семакин И. Г. Энциклопедия школьной информатики / И. Г. Семакин, Е. В. Андреева, А. А. Дуванова, Е. А. Еремин, И. А. Калинин. – М.: Бином. Лаборатория знаний, 2011. – C. 162.

  20. Андреева Е. В. Математические основы информатики: математическое пособие / Е. В. Андреева, Л. Л. Босова, И. Н. Фалина. – М.: Бином. Лаборатория знаний, 2011. – С. 300.

  21. Грэхем Р. Конкретная математика. Математические основы информатики / Р. Грэхем, Д. Э. Кнут, О. Паташник. – М.: Вильямс, 2010. – С. 556.

  22. Грэхем Р. Конкретная математика. Математические основы информатики / Р. Грэхем, Д. Э. Кнут, О. Паташник. – М.: Вильямс, 2010. – С. 226.

  23. Семакин И. Г. Энциклопедия школьной информатики / И. Г. Семакин, Е. В. Андреева, А. А. Дуванова, Е. А. Еремин, И. А. Калинин. – М.: Бином. Лаборатория знаний, 2011. – C. 146.

  24. Илюшечкин В.М. Основы использования и проектирования баз данных / В. М. Илюшечкин. – М.:Юрайт, 2011. – С. 163.

  25. Гудсон Д. Практическое руководство по доступу к данным / Д. Гудсон, Р. Стюард. – СПб.: БХВ-Петербург, 2013. – С. 133.

  26. Илюшечкин В.М. Основы использования и проектирования баз данных / В. М. Илюшечкин. – М.:Юрайт, 2011. – С. 211.

  27. Гудсон Д. Практическое руководство по доступу к данным / Д. Гудсон, Р. Стюард. – СПб.: БХВ-Петербург, 2013. – С. 122.

  28. Илюшечкин В.М. Основы использования и проектирования баз данных / В. М. Илюшечкин. – М.:Юрайт, 2011. – С. 153.

  29. Гудсон Д. Практическое руководство по доступу к данным / Д. Гудсон, Р. Стюард. – СПб.: БХВ-Петербург, 2013. – С. 125.

  30. Семакин И. Г. Энциклопедия школьной информатики / И. Г. Семакин, Е. В. Андреева, А. А. Дуванова, Е. А. Еремин, И. А. Калинин. – М.: Бином. Лаборатория знаний, 2011. – C. 151.

  31. Гудсон Д. Практическое руководство по доступу к данным / Д. Гудсон, Р. Стюард. – СПб.: БХВ-Петербург, 2013. – С. 135.