
- •Основы информационных технологий (теория систем, дискретная и компьютерная математика, теория управления, моделирование) (Первые вопросы в билетах).
- •Интерполирование функций (многочленами Лагранжа; интерполяционная формула Ньютона; интерполяция кубическими сплайнами).
- •Приближение функций (метод наименьших квадратов; линейная регрессия; нелинейная регрессия; полиномиальная аппроксимация; дискретное преобразование Фурье).
- •Формула трапеций
- •Численное решение систем линейных алгебраических уравнений (метод Гаусса; метод итераций).
- •11. Универсальный метод информационных технологий – статистическое моделирование нелинейных систем со случайными характеристиками в условиях помех (метод Монте-Карло).
- •!!!13 И 14 вопросы отсутствуют в билетах!!!
- •!!!16 Вопрос отсутствует в билетах!!!
- •1.2.1. Принцип разомкнутого управления
- •1.2.2. Принцип компенсации
- •1.2.3. Принцип обратной связи
- •1. Введение
- •2. Итерационные методы Якоби и Зейделя
- •3. Метод последовательной верхней релаксации
- •4. Матрично-векторное представление итерационных методов
- •Динамические модели в экономике (регрессионные, авторегрессионные, регрессионно-авторегрессионные модели; модели накопления и дисконтирования; модели «затраты-выпуск»).
- •Основы вычислительной техники. (Вторые вопросы в билетах)
- •Характеристики современных операционных систем (многопоточность, симметричная многопроцессорность, распределенные операционные системы, объектно-ориентированный дизайн).
- •Дискретный сигнал
- •Вычислительные сети и системы (протоколы обмена тср, iр, ssl, skip, NetBeui, ipx, spx, NetBios, модель osi, типы соединения эвм, используемые при построении локальных сетей).
- •Информация (аналоговая и цифровая информация, оценки количества информации, энтропийный подход).
- •Структура микропроцессора (алу, регистры: аккумуляторы, ввода-вывода, понятие шины: шина данных, адресная шина, шина команд; запоминающие устройства: пзу, озу, созу, кэш-память).
- •!!!16 Вопроса нет в билетах!!!
- •17. Понятие нелинейных преобразователей (транзисторы, ключи, диодные выпрямители, логические элементы, нейронные сети).
- •1.8. Основные методы расчета сложных электрических цепей
- •19. Расчет комплексных сопротивлений линейных цепей (последовательные цепи: rc-цепь, rl-цепь, rlc-цепь; параллельные цепи: rc-цепь, rl-цепь, lc-цепь; последовательно-параллельные цепи: r-lc, c-rl).
- •Основы алгоритмизации и программирования. (Третьи вопросы в билетах)
- •2. Методы сортировки и поиска данных в массивах и файлах. Оценки скорости.
- •Современные языки программирования (с, Java, Delphi, vb). Типы данных языка. Структура приложения.
- •Примитивные типы
- •Типы данных
- •Объекты
- •Статическая и динамическая память, определение, область применения. Алгоритмы обработки очереди, списка, стека.
- •4 Шага добавления
- •Основные компоненты в языках (с, Java, Delphi). Их свойства, методы, события. Реализация графики.
- •7. Понятия объектно-ориентированного программирования. Поля, свойства, методы, события. Область видимости. Пример класса.
- •Базы данных. Типы бд. Реляционные бд. Типы полей. Типы связей. Язык запросов sql. Индексирование баз данных.
- •Создание Internet-приложений (на стороне клиента и сервера). Язык разметки гипертекста html. Специализированные инструменты (php). Создание Internet-приложений средствами языков с, Java, Delphi.
- •Глава 1 – содержание элемента html
- •6.3. Рисунки
- •Основные элементы блок схем программирования, типовые блок схемы (ввода-вывода, исполнения команд, условного перехода; ветвящиеся программы, циклические программы, вложенные циклы).
Базы данных. Типы бд. Реляционные бд. Типы полей. Типы связей. Язык запросов sql. Индексирование баз данных.
Ба́за да́нных — представленная в объективной форме совокупность самостоятельных материалов (статей, расчётов, нормативных актов, судебных решений и иных подобных материалов), систематизированных таким образом, чтобы эти материалы могли быть найдены и обработаны с помощью электронной вычислительной машины
Классификация по модели данных
Примеры:
Иерархическая - представление базы данных в виде древовидной (иерархической) структуры, состоящей из объектов (данных) различных уровней.
Сетевая - логическая модель данных, являющаяся расширением иерархического подхода, строгая математическая теория, описывающая структурный аспект, аспект целостности и аспект обработки данных в сетевых базах данных.
Реляционная - логическая модель данных, прикладная теория построения баз данных, которая является приложением к задачам обработки данных таких разделов математики как теории множеств и логика первого порядка.
Объектная и объектно-ориентированная - это модель работы с объектными данными.
Объектно-реляционная - реляционная СУБД (РСУБД), поддерживающая некоторые технологии, реализующие объектно-ориентированный подход.
Объектно-реляционными СУБД являются, к примеру, широко известные Oracle Database, Informix, DB2, PostgreSQL, FirstSQL/J.
Реляционная СУБД (РСУБД; иначе Система управления реляционными базами данных, СУРБД) — СУБД, управляющая реляционными базами данных.
Понятие реляционный (англ. relation — отношение) связано с разработками известного английского специалиста в области систем баз данных Эдгара Кодда (Edgar Codd).
Эти модели характеризуются простотой структуры данных, удобным для пользователя табличным представлением и возможностью использования формального аппарата алгебры отношений и реляционного исчисления для обработки данных.
Реляционная модель ориентирована на организацию данных в виде двумерных таблиц. Каждая реляционная таблица представляет собой двумерный массив и обладает следующими свойствами:
каждый элемент таблицы — один элемент данных
все ячейки в столбце таблицы однородные, то есть все элементы в столбце имеют одинаковый тип (числовой, символьный и т. д.)
каждый столбец имеет уникальное имя
одинаковые строки в таблице отсутствуют
порядок следования строк и столбцов может быть произвольным
Базовыми понятиями реляционных СУБД являются:
атрибут
отношение
кортеж
Поле базы данных - это столбец таблицы, содержащий значения определенного свойства.
Строки таблицы являются записями об объекте; эти записи разбиты на поля столбцами таблицы, поэтому каждая запись представляет собой набор значений, содержащихся в полях.
Тип поля определяется типом данных, которые оно содержит. Поля могут содержать данные следующих основных типов:
счетчик - целые числа, которые задаются автоматически при вводе записей. Эти числа не могут быть изменены пользователем;
текстовый - тексты, содержащие до 255 символов;
числовой - числа;
дата/время - дата или время;
денежный - числа в денежном формате;
логический - значения Истина (Да) или Ложь (Нет);
гиперссылка - ссылки на информационный ресурс в Интернете (например, Web-сайт).
Существует три типа связей между таблицами. Тип создаваемой связи зависит от того, как определены связанные столбцы.
Связи «один ко многим»
Связи «многие ко многим»
Связи «один к одному»
Связи «один ко многим»
Связь «один ко многим» самая распространенная. В этом типе связей у строки таблицы А может быть несколько совпадающих строк таблицы Б, но каждой строке таблицы Б может соответствовать только одна строка из А. Например, между таблицами publishers и titles установлена связь «один ко многим»: каждый издатель публикует много книг, но каждая книга публикуется только у одного издателя.
Используйте связь «один ко многим», если только у одного из связанных столбцов есть ограничение первичного ключа или уникальности.
Столбец, являющийся первичным ключом в связи «один ко многим», отмечается символом ключа. Столбец, являющийся внешним ключом в связи «один ко многим», отмечается символом бесконечности.
Связи «многие ко многим»
В связи «многие ко многим» строке таблицы А может сопоставляться несколько строк таблицы Б, и наоборот. Такие связи создаются определением третьей таблицы, которая называется таблицей соединения, чей первичный ключ состоит из внешних ключей А и Б. Например, между таблицами authorsи titles связь «многие ко многим» определена через связи «один ко многим» каждой из этих таблиц с таблицей titleauthors. Первичный ключ таблицы titleauthors представляет собой сочетание столбца au_id (первичный ключ таблицы authors) и столбца title_id (первичный ключ таблицы titles).
Связи «один к одному»
В связи «многие к одному» строке таблицы А может сопоставляться только одна строка таблицы Б, и наоборот. Связь «один к одному» создается, если для обоих связанных ключей определены ограничения первичного ключа или уникальности.
Этот тип связи обычно не используется, так как большую часть связанных таким образом данных можно хранить в одной таблице. Связь «один к одному» можно использовать для:
Разделения таблицы со многими столбцами.
Изоляции части таблицы из соображений безопасности.
Хранения кратковременных данных, которые можно легко удалить вместе со всей таблицей.
Хранения данных, которые относятся только к части основной таблицы.
Столбец, являющийся первичным ключом в связи «один к одному», отмечается символом ключа. Столбец, являющийся внешним ключом, также отмечается символом ключа.
SQL — это язык, который позволяет вам запрашивать или обновлять данные в реляционных базах данных, таких как IBM DB2, Firebird, Ingres, Microsoft Access, Microsoft SQL Server, MySQL, Oracle, PostgreSQL и SQLite. Реляционная база данных представляет собой систему, хранящую различные отношения между её данными. Примерами отношений могут быть, например, поля, записи, таблицы и ссылки на другие поля, таблицы, записи и базы данных. Несмотря на то, что имеется стандарт языка SQL, его реализации в различных существующих базах данных могут существенно различаться. Это связано с тем, что вендоры часто разрабатывают собственные расширения для стандартного SQL. Для соответствия стандарту ANSI (американский национальный институт стандартов - организация, управляющая стандартами в США) должны быть реализованы как минимум базовые команды языка. Прочие же команды (например, создания базы данных или управления пользователями) всецело зависят от специфики СУБД или от вендора.
В данной статье рассматриваются основные команды языка SQL: SQL: SELECT, INSERT, UPDATE, and DELETE.
Прочие SQL-команды используются в основном при администрировании баз данных. Они используются программами с графическим интерфейсом для выполнения задач администрирования, которые есть для большинства СУБД. Будем называть команды SQL операторами.
SELECT
Наиболее часто используемым оператором языка SQL, по всей видимости, является SELECT. Эта команда «задаёт вопросы» базе данных - вот почему SQL называется "языком запросов".
Типичная запись оператора SELECT выглядит так: SELECT * FROM Customer
Эта команда запрашивает все записи таблицы CUSTOMER (Клиенты).
Название таблицы, к которой мы получаем доступ, следует за кодовым словом FROM. За этим словом на самом деле может следовать не одна таблица, а целый список таблиц, из которых будут собираться данные. Синтаксис языка SQL поддерживает так называемые "предложения" (clause) - специфические кодовые слова, формирующие наиболее важные блоки внутри оператора SQL. Оператор SQL может содержать, например, следующие предложения: SELECT, FROM, WHERE GROUP BY и ORDER BY. Предложения SELECT и FROM являются обязательными, остальные — нет.
Вот более расширенная запись оператора SELECT:
SELECT C . LastName C . FirstName , I . TotalAmount AS Amount
FROM Customer AS C, Invoice AS I
WHERE NOT Paid
AND I . DueDate < Now ()
AND C . Id = I.CustomerId ORDER BY C . LastName
Этот оператор запрашивает имена клиентов и суммы по всем неоплаченным счетам, у которых должная дата оплаты уже прошла. Этот пример содержит предложения SELECT, FROM, WHERE и ORDER BY.
В этом примере предложение SELECT выбирает три поля — LastName (фамилия), FirstName (имя) и TotalAmount (общая сумма). Здесь для поля TotalAmount записан псевдоним (alias): Amount. Поэтому в результирующей выборке это поле будет иметь заголовок Amount, а не TotalAmount. Эта особенность может быть использована для передачи результата в компонент, в котором названия полей используются в качестве названий столбцов. Предложение ORDER BY указывает, каким образом результат должен быть отсортирован. Если оно отсутствует, порядок данных в выборке будет произвольным. Вы можете указать в этой фразе одно или несколько полей, разделяя их запятыми. Порядок сортировки по умолчанию — по возрастанию значений, однако если указать после названия столбца слово DESC, этот порядок будет по убыванию значений. То есть, при записи ORDER BY C.Amount наибольшее значение TotalAmount будет идти в выборке самым первым.
В предложении FROM указано, что таблица Customer также может быть доступна через псевдоним C, а таблица Invoice - через псевдоним I. Псевдоним является своего рода «кратким названием» таблицы, которое можно использовать, когда эти таблицы должны быть выделены в тексте запроса. Например, если таблица Customer ("Клиент") содержит поле с именем LastName, а таблица Invoice ("Счёт") такого поля не содержит, вы можете просто использовать название LastName в предложении SELECT. Но если две таблицы содержат поля с одним и тем же названием, например, CreationDate, СУБД не сможет определить, поле из какой таблицы имелось в виду. В этом случае следует указать нужную таблицу (Customer или Invoice), используя её имя или псевдоним — C.CreationDate или I.CreationDate.
Если в предложении FROM присутствует несколько таблиц, получится результат в виде так называемого "декартового произведения" этих таблиц. При отсутствии предложения WHERE число записей в выборке будет равно произведению всех записей всех таблиц (например, для трёх таблиц с пятью записями в каждой из них результат будет содержать 5 x 5 x 5 = 125 записей). Записи в выборке-результате содержат все возможные комбинации записей этих таблиц. Но так как нам нужны только комбинации записей из таблиц Customer и Invoice, в которых счета связаны со своими владельцами, мы включаем условие C.Id=I.CustomerID. В принципе, предложение WHERE обычно должно содержать такие объединяющие условия для каждой таблицы, если таблиц больше одной.
Предложение WHERE указывает, в каких случаях записи должны включаться в результат выборки. Для определения условий включения записи используются логические выражения и операторы. В приведённом выше примере команды SELECT запись включается в результат, если счёт, относящийся к конкретному пользователю, до сих пор не оплачен, и при этом дата, до которой он должен был быть оплачен, уже прошла. Используемая здесь функция Now() возвращает текущие дату и время.
INSERT
Чтобы добавить запись в таблицу, используйте команду INSERT, как показано ниже:
INSERT INTO Customer (FirstName, LastName, Address, HouseNumber, City)
VALUES ("Henk", "Janssen", " Stationsstraat", 4,
Utrecht")
Предложение INSERT INTO содержит название таблицы, в которую добавляется запись, а за ним в круглых скобках перечисляются поля, в которые будут помещены значения. Поля таблицы, которые в этом списке указаны не будут, получат значение по умолчанию (обычно NULL, то есть поле останется пустым). Не следует включать в список полей автоинкрементные поля (или идентификаторы), так как они получат свои значения автоматически.
Предложение VALUES, которое следует за INSERT INTO, содержит значения полей, указанных в INSERT INTO; при этом порядок значений в VALUES должен соответствовать порядку названий полей в INSERT INTO. В зависимости от типа СУБД нужно помещать текстовые значения либо в кавычки ("), либо в апострофы ('). Заметим: количество полей должно быть равно количеству значений.
UPDATE
Оператор UPDATE предназначен для изменения значений записей:
UPDATE Customer
SET Address = "Steenweg", HouseNumber = 12, City Naarden" WHERE Id = 12
В этом примере приведены все предложения, которые могут быть представлены в команде UPDATE: обязательные UPDATE и SET, и необязательное WHERE. Как видите, команда UPDATE имеет запись, несколько отличную от команды INSERT. Предложение UPDATE содержит название таблицы, в которой должны быть изменены одна или более записей. Предложение SET содержит разделённый запятыми список, в элементах которого содержатся названия полей таблицы, знак равенства (=) и значение, которое требуется присвоить этому полю.
Предложение WHERE аналогично одноимённому предложению в операторе SELECT: его параметром является логическое выражение. Будут изменены все записи, для которых результат этого выражения будет True. Будьте осторожны: при отсутствии предложения WHERE будут изменены ВСЕ записи таблицы!
DELETE
Наш обзор основных команд SQL завершим командой DELETE. При разработке новой базы данных важно знать разницу между логическим и физическим удалением записей из таблицы. Когда вы удаляете запись только логически, она физически остаётся в базе данных, при этом получая пометку "удалена".
Следите за тем, чтобы логически удалённая запись не показывалась в выборках (просто добавьте во все команды SELECT условие для исключения удалённых или неактивных записей). Логическое удаление обычно рекомендуется в ситуациях, когда неопытные пользователи могут удалить значительный объём данных, либо в сценариях с протоколированием. При физическом удалении записи эта запись больше не будет храниться в базе данных.
" Peter" " Halsema"
В SQL физическое удаление делается командой DELETE: DELETE FROM Customer
WHERE FirstName = AND LastName =
Команда DELETE имеет только два предложения: обязательное DELETE FROM и дополнительное WHERE. За DELETE FROM следует название таблицы, из которой нужно удалить записи. Предложение WHERE аналогично одноимённому в предложениях SELECT и UPDATE. Будьте осторожны: если предложения WHERE в запросе не будет, после выполнения команды таблица станет пустой!
Индексирование в базах данных
Индекс - структура данных, которая помогает СУБД быстрее обнаружить отдельные записи в файле и сократить время выполнения запросов пользователей.
Индекс в базе данных аналогичен предметному указателю в книге. Это — вспомогательная структура, связанная с файлом и предназначенная для поиска информации по тому же принципу, что и в книге с предметным указателем. Индекс позволяет избежать проведения последовательного или пошагового просмотра файла в поисках нужных данных. При использовании индексов в базе данных искомым объектом может быть одна или несколько записей файла. Как и предметный указатель книги, индекс базы данных упорядочен, и каждый элемент индекса содержит название искомого объекта, а также один или несколько указателей (идентификаторов записей) на место его расположения.
Хотя индексы, строго говоря, не являются обязательным компонентом СУБД, они могут существенным образом повысить ее производительность. Как и в случае с предметным указателем книги, читатель может найти определение интересующего его понятия, просмотрев всю книгу, но это потребует слишком много времени. А предметный указатель, ключевые слова в котором расположены в алфавитном порядке, позволяют сразу же перейти на нужную страницу.
Структура индекса связана с определенным ключом поиска и содержит записи, состоящие из ключевого значения и адреса логической записи в файле, содержащей это ключевое значение. Файл, содержащий логические записи, называется файлом данных, а файл, содержащий индексные записи, — индексным файлом. Значения в индексном файле упорядочены по полю индексирования, которое обычно строится на базе одного атрибута.
Типы индексов
Для ускорения доступа к данным применяется несколько типов индексов.
Основные из них перечислены ниже.
Первичный индекс - это такой специальный массив-указатель порядка записей, когда файл данных последовательно упорядочивается по полю ключа упорядочения, а на основе поля ключа упорядочения создается поле индексации, которое гарантированно имеет уникальное значение в каждой записи.
Индекс кластеризации - это такой специальный массив-указатель порядка записей, когда файл данных последовательно упорядочивается по неключевому полю, и на основе этого неключевого поля формируется поле индексации, поэтому в файле может быть несколько записей, соответствующих значению этого поля индексации. Неключевое поле называется атрибутом кластеризации.
Вторичный индекс - это индекс, который определен на поле файла данных, отличном от поля, по которому выполняется упорядочение.
Файл может иметь не больше одного первичного индекса или одного индекса кластеризации, но дополнительно к ним может иметь несколько вторичных индексов. Индекс может быть разреженным (sparse) или плотным (dense). Разреженный индекс содержит индексные записи только для некоторых значений ключа поиска в данном файле, а плотный индекс имеет индексные записи для всех значений ключа поиска в данном файле. Ключ поиска для индекса может состоять из нескольких полей.
Индексно-последовательные файлы
Отсортированный файл данных с первичным индексом называется индексированным последовательным файлом, или индексно-последовательным файлом. Эта структура является компромиссом между файлами с полностью последовательной и полностью произвольной организацией. В таком файле записи могут обрабатываться как последовательно, так и выборочно, с произвольным доступом, осуществляемым на основу поиска по заданному значению ключа с использованием индекса. Индексированный последовательный файл имеет более универсальную структуру, которая обычно включает следующие компоненты:
первичная область хранения;
отдельный индекс или несколько индексов;
область переполнения.
Обычно большая часть первичного индекса может храниться в оперативной памяти, что позволяет обрабатывать его намного быстрее. Для ускорения поиска могут применяться специальные методы доступа, например метод бинарного поиска. Основным недостатком использования первичного индекса (как и при работе с любым другим отсортированным файлом) является необходимость соблюдения последовательности сортировки при вставке и удалении записей. Эти проблемы усложняются тем, что требуется поддерживать порядок сортировки как в файле данных, так и в индексном файле. В подобном случае может использоваться метод, заключающийся в применении области переполнения и цепочки связанных указателей, аналогично методу, используемому для разрешения конфликтов в хэшированных файлах.
Вторичные индексы
Вторичный индекс также является упорядоченным файлом, аналогичным первичному индексу. Однако связанный с первичным индексом файл данных всегда отсортирован по ключу этого индекса, тогда как файл данных, связанный со вторичным индексом, не обязательно должен быть отсортирован по ключу индексации. Кроме того, ключ вторичного индекса может содержать повторяющиеся значения, что не допускается для значений ключа первичного индекса. Для работы с такими повторяющимися значениями ключа вторичного индекса обычно используются перечисленные ниже методы.
Создание плотного вторичного индекса, который соответствует всем записям файла данных, но при этом в нем допускается наличие дубликатов.
Создание вторичного индекса со значениями для всех уникальных значений ключа. При этом указатели блоков являются многозначными, поскольку каждое его значение соответствует одному из дубликатов ключа в файле данных.
Создание вторичного индекса со значениями для всех уникальных значений ключа. Но при этом указатели блоков указывают не на файл данных, а на сегмент, который содержит указатели на соответствующие записи файла данных.
Вторичные индексы повышают производительность обработки запросов, в которых для поиска используются атрибуты, отличные от атрибута первичного ключа. Однако такое повышение производительности запросов требует дополнительной обработки, связанной с сопровождением индексов при обновлении информации в базе данных. Эта задача решается на этапе физического проектирования базы данных.
Многоуровневые индексы
При возрастании размера индексного файла и расширении его содержимого на большое количество страниц время поиска нужного индекса также значительно возрастает. Обратившись к многоуровневому индексу, можно попробовать решить эту проблему путем сокращения диапазона поиска. Данная операция выполняется над индексом аналогично тому, как это делается в случае файлов другого типа, т.е. посредством расщепления индекса на несколько субиндексов меньшего размера и создания индекса для этих субиндексов. На каждой странице файла данных могут храниться две записи. Кроме того, в качестве иллюстрации здесь показано, что на каждой странице индекса также хранятся две индексные записи, но на практике на каждой такой странице может храниться намного больше индексных записей. Каждая индексная запись содержит значение ключа доступа и адрес страницы. Хранимое значение ключа доступа является наибольшим на адресуемой странице.
Усовершенствованные сбалансированные древовидные индексы
Сбалансированное дерево
Дерево - это структура данных, используемая во многих СУБД для хранения данных или индексов. Дерево состоит из иерархии узлов (node), в которой каждый узел, за исключением корня (root), имеет родительский (parent) узел, а также один, несколько или ни одного дочернего (child) узла. Корень не имеет родительского узла. Узел, который не имеет дочерних узлов, называется листом (leaf).
Глубина дерева - это максимальное количество уровней между корнем и листом. Глубина дерева может быть различной для разных путей доступа к листам.
Сбалансированное дерево, В-дерево, В-Тгее - это дерево, у которого глубина дерева одинакова для всех листов.
Степень (degree), порядок (order) дерева - это максимально допустимое количество дочерних узлов для каждого родительского узла. Большие степени обычно используются для создания более широких и менее глубоких деревьев.
Поскольку время доступа в древовидной структуре зависит от глубины, а не от ширины, обычно принято использовать более "разветвленные" и менее глубокие деревья.
Бинарное дерево, binary tree - это дерево порядка 2, в котором каждый узел имеет не больше двух дочерних узлов.
Усовершенствованные сбалансированные древовидные индексы определяются по следующим правилам.
Если корень не является лист-узлом, то он должен иметь, по крайней мере, два дочерних узла.
В дереве порядка n каждый узел (за исключением корня и листов) должен иметь от n/2 до n указателей и дочерних узлов. Если число n/2 не является целым, то оно округляется до ближайшего большего целого.
В дереве порядка n количество значений ключа в листе должно находиться в пределах от (n-1)/2 до (n-1). Если число (n-1)/2 не является целым, то оно округляется до ближайшего большего целого.
Количество значений ключа в нелистовом узле на единицу меньше количества указателей.
Дерево всегда должно быть сбалансированным, т.е. все пути от корня к каждому листу должны иметь одинаковую глубину.
Листы дерева связаны в порядке возрастания значений ключа.