Как называется описание структуры данных
Основные структуры данных. Матчасть. Азы
Все чаще замечаю, что современным самоучкам очень не хватает матчасти. Все знают языки, но мало основы, такие как типы данных или алгоритмы. Немного про типы данных.
Еще в далеком 1976 швейцарский ученый Никлаус Вирт написал книгу Алгоритмы + структуры данных = программы.
40+ лет спустя это уравнение все еще верно. И если вы самоучка и надолго в программировании пробегитесь по статье, можно по диагонали. Можно код кофе.
В статье так же будут вопросы, которое вы можете услышать на интервью.
Что такое структура данных?
Структура данных — это контейнер, который хранит данные в определенном макете. Этот «макет» позволяет структуре данных быть эффективной в некоторых операциях и неэффективной в других.
Какие бывают?
Линейные, элементы образуют последовательность или линейный список, обход узлов линеен. Примеры: Массивы. Связанный список, стеки и очереди.
Нелинейные, если обход узлов нелинейный, а данные не последовательны. Пример: граф и деревья.
Основные структуры данных.
Массивы
Массив — это самая простая и широко используемая структура данных. Другие структуры данных, такие как стеки и очереди, являются производными от массивов.
Изображение простого массива размера 4, содержащего элементы (1, 2, 3 и 4).
Каждому элементу данных присваивается положительное числовое значение (индекс), который соответствует позиции элемента в массиве. Большинство языков определяют начальный индекс массива как 0.
Бывают
Одномерные, как показано выше.
Многомерные, массивы внутри массивов.
Основные операции
Вопросы
Стеки
Стек — абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (англ. last in — first out, «последним пришёл — первым вышел»).
Это не массивы. Это очередь. Придумал Алан Тюринг.
Примером стека может быть куча книг, расположенных в вертикальном порядке. Для того, чтобы получить книгу, которая где-то посередине, вам нужно будет удалить все книги, размещенные на ней. Так работает метод LIFO (Last In First Out). Функция «Отменить» в приложениях работает по LIFO.
Изображение стека, в три элемента (1, 2 и 3), где 3 находится наверху и будет удален первым.
Основные операции
Вопросы
Очереди
Подобно стекам, очередь — хранит элемент последовательным образом. Существенное отличие от стека – использование FIFO (First in First Out) вместо LIFO.
Пример очереди – очередь людей. Последний занял последним и будешь, а первый первым ее и покинет.
Изображение очереди, в четыре элемента (1, 2, 3 и 4), где 1 находится наверху и будет удален первым
Основные операции
Вопросы
Связанный список
Связанный список – массив где каждый элемент является отдельным объектом и состоит из двух элементов – данных и ссылки на следующий узел.
Принципиальным преимуществом перед массивом является структурная гибкость: порядок элементов связного списка может не совпадать с порядком расположения элементов данных в памяти компьютера, а порядок обхода списка всегда явно задаётся его внутренними связями.
Бывают
Однонаправленный, каждый узел хранит адрес или ссылку на следующий узел в списке и последний узел имеет следующий адрес или ссылку как NULL.
Двунаправленный, две ссылки, связанные с каждым узлом, одним из опорных пунктов на следующий узел и один к предыдущему узлу.
Круговой, все узлы соединяются, образуя круг. В конце нет NULL. Циклический связанный список может быть одно-или двукратным циклическим связанным списком.
Самое частое, линейный однонаправленный список. Пример – файловая система.
Основные операции
Вопросы
Графы
Граф-это набор узлов (вершин), которые соединены друг с другом в виде сети ребрами (дугами).
Бывают
Ориентированный, ребра являются направленными, т.е. существует только одно доступное направление между двумя связными вершинами.
Неориентированные, к каждому из ребер можно осуществлять переход в обоих направлениях.
Смешанные
Встречаются в таких формах как
Общие алгоритмы обхода графа
Вопросы
Деревья
Дерево-это иерархическая структура данных, состоящая из узлов (вершин) и ребер (дуг). Деревья по сути связанные графы без циклов.
Древовидные структуры везде и всюду. Дерево скилов в играх знают все.
«Бинарное дерево — это иерархическая структура данных, в которой каждый узел имеет значение (оно же является в данном случае и ключом) и ссылки на левого и правого потомка. » — Procs
Три способа обхода дерева
Вопросы
Trie ( префиксное деревое )
Разновидность дерева для строк, быстрый поиск. Словари. Т9.
Вот как такое дерево хранит слова «top», «thus» и «their».
Слова хранятся сверху вниз, зеленые цветные узлы «p», «s» и «r» указывают на конец «top», «thus « и «their» соответственно.
Вопросы
Хэш таблицы
Хэширование — это процесс, используемый для уникальной идентификации объектов и хранения каждого объекта в заранее рассчитанном уникальном индексе (ключе).
Объект хранится в виде пары «ключ-значение», а коллекция таких элементов называется «словарем». Каждый объект можно найти с помощью этого ключа.
По сути это массив, в котором ключ представлен в виде хеш-функции.
Эффективность хеширования зависит от
Вопросы
Список ресурсов
Вместо заключения
Матчасть так же интересна, как и сами языки. Возможно, кто-то увидит знакомые ему базовые структуры и заинтересуется.
Спасибо, что прочли. Надеюсь не зря потратили время =)
PS: Прошу извинить, как оказалось, перевод статьи уже был тут и очень недавно, я проглядел.
Если интересно, вот она, спасибо Hokum, буду внимательнее.
Как называется описание структуры данных
1. Основные понятия и классификация систем управления базами данных
База данных (БД) представляет собой совокупность структуриро ванных данных, хранимых в памяти вычислительной системы и ото бражающих состояние объектов и их взаимосвязей в рассматриваемой предметной области.
Система управления базами данных (СУБД) — это комплекс языко вых и программных средств, предназначенный для создания, ведения и совместного использования БД многими пользователями. Обычно СУБД различают по используемой модели данных. Так, СУБД, основанные на использовании реляционной модели данных, называют ре ляционными СУБД.
Словарь данных представляет собой подсистему БД, предназначен ную для централизованного хранения информации о структурах дан ных, взаимосвязях файлов БД друг с другом, типах данных и форма тах их представления, принадлежности данных пользователям, кодах защиты и разграничения доступа и т. п.
Информационные системы, основанные на использовании БД, обычно функционируют в архитектуре клиент-сервер. В этом случае БД размещается на компьютере-сервере, и к ней осуществляется сов местный доступ.
Сервером определенного ресурса в компьютерной сети называется компьютер (программа), управляющий этим ресурсом, клиентом — компьютер (программа), использующий этот ресурс. В качестве ресурса компьютерной сети могут выступать, к примеру, базы данных, фай лы, службы печати, почтовые службы.
Достоинством организации информационной системы на архитек туре клиент-сервер является удачное сочетание централизованного хранения, обслуживания и коллективного доступа к общей корпоративной информации с индивидуальной работой пользователей.
Выделяют следующие виды СУБД :
* средства разработки программ работы с БД.
В роли клиентских программ в общем случае могут использоваться СУБД, электронные таблицы, текстовые процессоры, программы элек тронной почты и др.
Средства разработки программ работы с БД могут использоваться для создания следующих программ:
* серверов БД и их отдельных компонентов;
По характеру использования СУБД делят на многопользовательские (промышленные) и локальные (персональные).
Промышленные, СУБД представляют собой программную основу для разработки автоматизированных систем управления крупными экономическими объектами. Промышленные СУБД должны удовлетворять следующим требованиям:
* возможность организации совместной параллельной работы мно гих пользователей;
* переносимость на различные аппаратные и программные плат формы;
* устойчивость по отношению к сбоям различного рода, в том чис ле наличие многоуровневой системы резервирования хранимой информации;
* обеспечение безопасности хранимых данных и развитой структурированной системы доступа к ним.
Персональные СУБД — это программное обеспечение, ориентиро ванное на решение задач локального пользователя или небольшой группы пользователей и предназначенное для использования на пер сональном компьютере. Это объясняет и их второе название — на стольные. Определяющими характеристиками настольных систем яв ляются:
* относительная простота эксплуатации, позволяющая создавать на их основе работоспособные пользовательские приложения;
* относительно ограниченные требования к аппаратным ресурсам.
По используемой модели данных СУБД разделяют на иерархические, сетевые, реляционные, объектно-ориентированные и др. Некоторые СУБД могут одновременно поддерживать несколько моделей данных.
Для работы с данными, хранящимися в базе, используются следу ющие типы языков:
* язык описания данных — высокоуровневый непроцедурный язык
декларативного типа, предназначенный для описания логической
структуры данных;
* язык манипулирования данными — совокупность конструкций, обеспечивающих выполнение основных операций по работе с дан ными: ввод, модификацию и выборку данных по запросам.
Названные языки в различных СУБД могут иметь отличия. Наи большее распространение получили два стандартизованных языка: QBE — язык запросов по образцу и SQL — структурированный язык запросов. QBE в основном обладает свойствами языка манипулирования данными, SQL сочетает в себе свойства языков обоих типов.
СУБД реализует следующие основные функции низкого уровня:
* управление данными во внешней памяти;
* управление буферами оперативной памяти;
* ведение журнала изменений в БД;
* обеспечение целостности и безопасности БД.
Реализация функции управления данными во внешней памяти обеспечивает организацию управления ресурсами в файловой системе ОС.
Необходимость буферизации данных обусловлена тем, что объем оперативной памяти меньше объема внешней памяти. Буферы пред ставляют собой области оперативной памяти, предназначенные для ускорения обмена между внешней и оперативной памятью. В буферах временно хранятся фрагменты БД, данные из которых предполагает ся использовать при обращении к СУБД или планируется записать в базу после обработки.
Механизм транзакций используется в СУБД для поддержания целостности данных в базе. Транзакцией называется некоторая недели мая последовательность операций над данными БД, которая отсле живается СУБД от начала и до завершения. Если по каким-либо причинам (сбои и отказы оборудования, ошибки в программном обес печении, включая приложение) транзакция остается незавершенной, то она отменяется.
Транзакции присущи три основных свойства:
* атомарность (выполняются все входящие в транзакцию операции или ни одна);
* сериализуемость (отсутствует взаимное влияние выполняемых в одно и то же время транзакций);
* долговечность (даже крах системы не приводит к утрате резуль татов зафиксированной транзакции).
Примером транзакции является операция перевода денег с одного счета на другой в банковской системе. Сначала снимают деньги с одного счета, затем начисляют их на другой счет. Если хотя бы одно из действий не выполнится успешно, результат операции окажется не верным и будет нарушен баланс операции.
Ведение журнала изменений выполняется СУБД для обеспечения надежности хранения данных в базе при наличии аппаратных и про граммных сбоев.
Обеспечение целостности БД составляет необходимое условие успешного функционирования БД, особенно при ее сетевом исполь зовании. Целостность БД — это свойство базы данных, означающее, что в ней содержится полная, непротиворечивая и адекватно отража ющая предметную область информация. Целостное состояние БД опи сывается с помощью ограничений целостности в виде условий, кото рым должны удовлетворять хранимые в базе данные.
Обеспечение безопасности достигается в СУБД шифрованием данных, парольной защитой, поддержкой уровней доступа к базе данных и отдельным ее элементам (таблицам, формам, отчетам и др.).
В иерархической модели объекты-сущности и отношения предмет ной области представляются наборами данных, которые имеют древо видную (иерархическую) структуру. Иерархическая модель данных была исторически первой. На ее основе в конце 60-х — начале 70-х го дов были разработаны первые профессиональные СУБД.
Пример структуры иерархической БД приведен на рис. 5.1.
Основное внимание в ограничениях целостности в иерархической модели уделяется целостности ссылок между предками и потомками с учетом основного правила: никакой потомок не может существовать без родителя.
Сетевая модель данных позволяет отображать разнообразные вза имосвязи элементов данных в виде произвольного графа. Сетевая БД состоит из набора записей и набора соответствующих связей. На фор мирование связи особых ограничений не накладывается. Если в иерар хических структурах запись-потомок могла иметь только одну запись- предка, то в сетевой модели данных запись-потомок может иметь произвольное число записей-предков.
Достоинством сетевой мидели данных является возможность ее эффективной реализации. В сравнении с иерархической моделью се тевая модель предоставляет бульшие возможности в смысле допусти мости образования произвольных связей.
Недостатком сетевой модели данных является высокая сложность и жесткость схемы БД, построенной на ее основе, а также сложность ее понимания обычным пользователем. Кроме того, в сетевой модели данных ослаблен контроль целостности связей из-за допустимости установления произвольных связей между записями.
Системы на основе сетевой модели не получили широкого распро странения на практике.
Реляционная модель данных предложена сотрудником фирмы I ВМ Эдгаром Коддом и основывается на понятии отношения ( relation ).
Отношение представляет собой множество элементов, называемых кортежами. Наглядной формой представления отношения является двумерная таблица.
С помощью одной таблицы удобно описывать простейший вид связей между данными, а именно: деление одного объекта, информация о котором хранится в таблице, на множество подобъектов, каждому из которых соответствует строка или запись таблицы.
Основными недостатками реляционной модели являются следу ющие: отсутствие стандартных средств идентификации отдельных за писей и сложность описан ия ие рархических и сетевых связей.
Реляционная модель данных (РМД) некоторой предметной области представляет собой набор отношений, изменяющихся во времени. При создании информационной системы совокупность отношений позво ляет хранить данные об объектах предметной области и моделировать связи между ними. Термины РМД представлены в табл. 5.1
Как называется описание структуры данных
1. Основные понятия и классификация систем управления базами данных
База данных (БД) представляет собой совокупность структуриро ванных данных, хранимых в памяти вычислительной системы и ото бражающих состояние объектов и их взаимосвязей в рассматриваемой предметной области.
Система управления базами данных (СУБД) — это комплекс языко вых и программных средств, предназначенный для создания, ведения и совместного использования БД многими пользователями. Обычно СУБД различают по используемой модели данных. Так, СУБД, основанные на использовании реляционной модели данных, называют ре ляционными СУБД.
Словарь данных представляет собой подсистему БД, предназначен ную для централизованного хранения информации о структурах дан ных, взаимосвязях файлов БД друг с другом, типах данных и форма тах их представления, принадлежности данных пользователям, кодах защиты и разграничения доступа и т. п.
Информационные системы, основанные на использовании БД, обычно функционируют в архитектуре клиент-сервер. В этом случае БД размещается на компьютере-сервере, и к ней осуществляется сов местный доступ.
Сервером определенного ресурса в компьютерной сети называется компьютер (программа), управляющий этим ресурсом, клиентом — компьютер (программа), использующий этот ресурс. В качестве ресурса компьютерной сети могут выступать, к примеру, базы данных, фай лы, службы печати, почтовые службы.
Достоинством организации информационной системы на архитек туре клиент-сервер является удачное сочетание централизованного хранения, обслуживания и коллективного доступа к общей корпоративной информации с индивидуальной работой пользователей.
Выделяют следующие виды СУБД :
* средства разработки программ работы с БД.
В роли клиентских программ в общем случае могут использоваться СУБД, электронные таблицы, текстовые процессоры, программы элек тронной почты и др.
Средства разработки программ работы с БД могут использоваться для создания следующих программ:
* серверов БД и их отдельных компонентов;
По характеру использования СУБД делят на многопользовательские (промышленные) и локальные (персональные).
Промышленные, СУБД представляют собой программную основу для разработки автоматизированных систем управления крупными экономическими объектами. Промышленные СУБД должны удовлетворять следующим требованиям:
* возможность организации совместной параллельной работы мно гих пользователей;
* переносимость на различные аппаратные и программные плат формы;
* устойчивость по отношению к сбоям различного рода, в том чис ле наличие многоуровневой системы резервирования хранимой информации;
* обеспечение безопасности хранимых данных и развитой структурированной системы доступа к ним.
Персональные СУБД — это программное обеспечение, ориентиро ванное на решение задач локального пользователя или небольшой группы пользователей и предназначенное для использования на пер сональном компьютере. Это объясняет и их второе название — на стольные. Определяющими характеристиками настольных систем яв ляются:
* относительная простота эксплуатации, позволяющая создавать на их основе работоспособные пользовательские приложения;
* относительно ограниченные требования к аппаратным ресурсам.
По используемой модели данных СУБД разделяют на иерархические, сетевые, реляционные, объектно-ориентированные и др. Некоторые СУБД могут одновременно поддерживать несколько моделей данных.
Для работы с данными, хранящимися в базе, используются следу ющие типы языков:
* язык описания данных — высокоуровневый непроцедурный язык
декларативного типа, предназначенный для описания логической
структуры данных;
* язык манипулирования данными — совокупность конструкций, обеспечивающих выполнение основных операций по работе с дан ными: ввод, модификацию и выборку данных по запросам.
Названные языки в различных СУБД могут иметь отличия. Наи большее распространение получили два стандартизованных языка: QBE — язык запросов по образцу и SQL — структурированный язык запросов. QBE в основном обладает свойствами языка манипулирования данными, SQL сочетает в себе свойства языков обоих типов.
СУБД реализует следующие основные функции низкого уровня:
* управление данными во внешней памяти;
* управление буферами оперативной памяти;
* ведение журнала изменений в БД;
* обеспечение целостности и безопасности БД.
Реализация функции управления данными во внешней памяти обеспечивает организацию управления ресурсами в файловой системе ОС.
Необходимость буферизации данных обусловлена тем, что объем оперативной памяти меньше объема внешней памяти. Буферы пред ставляют собой области оперативной памяти, предназначенные для ускорения обмена между внешней и оперативной памятью. В буферах временно хранятся фрагменты БД, данные из которых предполагает ся использовать при обращении к СУБД или планируется записать в базу после обработки.
Механизм транзакций используется в СУБД для поддержания целостности данных в базе. Транзакцией называется некоторая недели мая последовательность операций над данными БД, которая отсле живается СУБД от начала и до завершения. Если по каким-либо причинам (сбои и отказы оборудования, ошибки в программном обес печении, включая приложение) транзакция остается незавершенной, то она отменяется.
Транзакции присущи три основных свойства:
* атомарность (выполняются все входящие в транзакцию операции или ни одна);
* сериализуемость (отсутствует взаимное влияние выполняемых в одно и то же время транзакций);
* долговечность (даже крах системы не приводит к утрате резуль татов зафиксированной транзакции).
Примером транзакции является операция перевода денег с одного счета на другой в банковской системе. Сначала снимают деньги с одного счета, затем начисляют их на другой счет. Если хотя бы одно из действий не выполнится успешно, результат операции окажется не верным и будет нарушен баланс операции.
Ведение журнала изменений выполняется СУБД для обеспечения надежности хранения данных в базе при наличии аппаратных и про граммных сбоев.
Обеспечение целостности БД составляет необходимое условие успешного функционирования БД, особенно при ее сетевом исполь зовании. Целостность БД — это свойство базы данных, означающее, что в ней содержится полная, непротиворечивая и адекватно отража ющая предметную область информация. Целостное состояние БД опи сывается с помощью ограничений целостности в виде условий, кото рым должны удовлетворять хранимые в базе данные.
Обеспечение безопасности достигается в СУБД шифрованием данных, парольной защитой, поддержкой уровней доступа к базе данных и отдельным ее элементам (таблицам, формам, отчетам и др.).
В иерархической модели объекты-сущности и отношения предмет ной области представляются наборами данных, которые имеют древо видную (иерархическую) структуру. Иерархическая модель данных была исторически первой. На ее основе в конце 60-х — начале 70-х го дов были разработаны первые профессиональные СУБД.
Пример структуры иерархической БД приведен на рис. 5.1.
Основное внимание в ограничениях целостности в иерархической модели уделяется целостности ссылок между предками и потомками с учетом основного правила: никакой потомок не может существовать без родителя.
Сетевая модель данных позволяет отображать разнообразные вза имосвязи элементов данных в виде произвольного графа. Сетевая БД состоит из набора записей и набора соответствующих связей. На фор мирование связи особых ограничений не накладывается. Если в иерар хических структурах запись-потомок могла иметь только одну запись- предка, то в сетевой модели данных запись-потомок может иметь произвольное число записей-предков.
Достоинством сетевой мидели данных является возможность ее эффективной реализации. В сравнении с иерархической моделью се тевая модель предоставляет бульшие возможности в смысле допусти мости образования произвольных связей.
Недостатком сетевой модели данных является высокая сложность и жесткость схемы БД, построенной на ее основе, а также сложность ее понимания обычным пользователем. Кроме того, в сетевой модели данных ослаблен контроль целостности связей из-за допустимости установления произвольных связей между записями.
Системы на основе сетевой модели не получили широкого распро странения на практике.
Реляционная модель данных предложена сотрудником фирмы I ВМ Эдгаром Коддом и основывается на понятии отношения ( relation ).
Отношение представляет собой множество элементов, называемых кортежами. Наглядной формой представления отношения является двумерная таблица.
С помощью одной таблицы удобно описывать простейший вид связей между данными, а именно: деление одного объекта, информация о котором хранится в таблице, на множество подобъектов, каждому из которых соответствует строка или запись таблицы.
Основными недостатками реляционной модели являются следу ющие: отсутствие стандартных средств идентификации отдельных за писей и сложность описан ия ие рархических и сетевых связей.
Реляционная модель данных (РМД) некоторой предметной области представляет собой набор отношений, изменяющихся во времени. При создании информационной системы совокупность отношений позво ляет хранить данные об объектах предметной области и моделировать связи между ними. Термины РМД представлены в табл. 5.1