Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
БИЛЕТ 1
1. Способы разработки и выполнение приложений
2. Язык SQL. Типы команд SQL, Типы данных SQL/92. Управление объектами
1. Способы разработки и выполнения приложений
Современные СУБД позволяют решать широкий круг задач по работе с базами данных без разработки приложения. Тем не менее, есть случаи, когда целесообразно разработать приложение. Например, если требуется автоматизация манипуляций с данными, терминальный интерфейс СУБД недостаточно развит, либо имеющиеся в СУБД стандартные функции по обработке информации не устраивают пользователя. Для разработки приложений СУБД должна иметь программный интерфейс, основу которого составляют функции и/или процедуры соответствующего языка программирования.
Существующие СУБД поддерживают следующие технологии (и их комбинации) разработки приложений:
-ручное кодирование программ (Clipper, FoxPro, Paradox);
-создание текстов приложений с помощью генераторов (FoxApp в FoxPro, Personal Programmer в Paradox);
-автоматическая генерация готового приложения методами визуального программирования (Delphi, Access, Paradox tor Windows).
При ручном кодировании программисты вручную набирают текст программ приложений, после чего выполняют их отладку.
Использование генераторов упрощает разработку приложений, поскольку при этом можно получать программный код без ручного набора, но зачастую необходимо вмешателство программиста.
Средства визуального программирования приложений являются дальнейшим развитием идеи использования генераторов приложений. Приложение при этом строится из готовых «строительных блоков» с помощью удобной интегрированной среды. При необходимости разработчик легко может вставить в приложение свой код. Интегрированная среда, как правило, предоставляет мощные средства создания, отладки и модификации приложений. Использование средств визуального программирования позволяет в кратчайшие сроки создавать более надежные, привлекательные и эффективные приложения по сравнению с приложениями, полученными первыми двумя способами.
Разработанное приложение обычно состоит из одного или нескольких файлов операционной системы.
Если основным файлом приложения является исполняемый файл (например, ехе-файл), то это приложение, скорее всего, является независимым приложением, которое выполняется автономно от среды СУБД. Получение независимого приложения на практике осуществляется путем компиляции исходных текстов программ, полученных различными способами: путем набора текста вручную, а также полученных с помощью генератора приложения или среды визуального программирования
Независимые приложения позволяют получать, например, СУБД FoxPro и система визуального программирования Delphi. Отметим, что с помощью средств Delphi обычно независимые приложения не разрабатывают, так как это достаточно трудоемкий процесс, а привлекают процессор баз данных BDE (Borland DataBase Engine), играющий роль ядра СУБД. Одним из первых средств разработки приложений для персональных ЭВМ является система Clipper, представляющая собой «чистый компилятор».
Во многих случаях приложение не может исполняться без среды СУБД. Выполнение приложения состоит в том, что СУБД анализирует содержимое файлов приложения (в частном случае — это текст исходной программы) и автоматически строит необходимые исполняемые машинные команды. Другими словами, приложение выполняется методом интерпретации.
Режим интерпретации реализован во многих современных СУБД, например, Access, Visual FoxPro и Paradox, а также в СУБД недавнего прошлого, к примеру, FoxBase и FoxPro.
Кроме этого, существуют системы, использующие промежуточный вариант между компиляцией и интерпретацией — так называемую псевдокомпиляцию. В таких системах исходная программа путем компиляции преобразуется в промежуточный код (псевдокод) и записывается на диск. В этом виде ее в некоторых системах разрешается даже редактировать, но главная цель псевдокомпиляции — преобразовать программу к виду, ускоряющему процесс ее интерпретации. Такой прием широко применялся в СУБД, работающих под управлением DOS, например, Foxbase+ и Paradox 4.0/4.5 for DOS.
В СУБД, работающих под управлением Windows, псевдокод чаще используют для того, чтобы запретить модифицировать приложение. Это полезно для защиты от случайной или преднамеренной порчи работающей программы. Например, такой прием применен в СУБД Paradox for Windows, где допускается разработанные экранные формы и отчеты преобразовывать в соответствующие объекты, не поддающиеся редактированию.
Некоторые СУБД предоставляют пользователю возможность выбора варианта разработки приложения: как интерпретируемого СУБД программного кода или как независимой программы.
Достоинством применения независимых приложений является то, что время выполнения машинной программы обычно меньше, чем при интерпретации. Такие приложения целесообразно использовать на слабых машинах и в случае установки систем «под ключ», когда необходимо закрыть приложение от доработок со стороны пользователей.
Важным достоинством применения интерпретируемых приложений является легкость их модификации. Если готовая программа подвергается частым изменениям, то для их внесения нужна инструментальная система, т. е. СУБД или аналогичная среда. Для интерпретируемых приложений такой инструмент всегда под рукой, что очень удобно.
Другим серьезным достоинством систем с интерпретацией является то, что хорошие СУБД обычно имеют мощные средства контроля целостности данных и защиты от несанкционированного доступа, чего не скажешь о системах компилирующего типа. В последних упомянутые функции приходится программировать вручную, либо оставлять на совести администраторов.
При выборе средств для разработки приложения следует учитывать три основных фактора: ресурсы компьютера, особенности приложения (потребность в модификации функций программы, время на разработку, необходимость контроля доступа и поддержание целостности информации) и цель разработки (отчуждаемый программный продукт или система автоматизации своей повседневной деятельности).
Для пользователя, имеющего современный компьютер и планирующего создать несложное приложение, по всей видимости, больше подойдет СУБД интерпретирующего типа. Напомним, что такие системы достаточно мощны, имеют высокоуровневые средства, удобны для разработки и отладки, позволяют быстро выполнить разработку и обеспечивают удобное сопровождение и модификацию приложения.
При использовании компьютера со слабыми характеристиками лучше остановить свой выбор на системе со средствами разработки независимых приложений. При этом следует иметь ввиду, что малейшее изменение в приложении влечет за собой циклическое повторение этапов программирования, компиляции и отладки программы. Разница в выполнении независимого приложения и выполнения приложения в режиме интерпретации колеблется в пределах миллисекунд в пользу независимого приложения. В то же время разница во времени подготовки приложения к его использованию обычно составляет величины порядка минуты — часы в пользу систем с интерпретацией.
2. Язык SQL
Язык реляционных баз данных SQL был разработан в середине 70-х годов в рамках исследовательского проекта экспериментальной реляционной СУБД System R компании IBM. Данный проект включал в себя разработку реляционной системы управления базами данных и языка SEQUEL (Structured English Query Language).
Несмотря на то что язык был ориентирован главным образом на удобную и понятную пользователям формулировку запросов к реляционной базе данных, он уже являлся полноценным языком реляционной базы данных, содержащим, помимо операторов формулирования запросов и манипулирования базой данных, следующие элементы:
□ средства определения схемы базы данных и манипулирования ей;
□ средства определения ограничений целостности и триггеров;
□ средства создания представлений базы данных;
□ возможности определения структур физического уровня, поддерживающих эффективное выполнение запросов;
□ средства авторизации доступа к отношениям и их полям;
□ средства поддержки точек сохранения транзакции и откатов.
Типы команд
Команды языка SQL обычно подразделяются на несколько групп. Основные типы команд следующие:
□ DDL (Data Definition Language) — язык определения данных. Команды данной группы используются для создания и изменения структуры объектов базы данных (например, для создания и удаления таблиц);
□ DML (Data Manipulation Language) — язык манипулирования данными. Команды DML используются для манипулирования информацией, содержащейся в объектах базы данных;
□ DCL (Data Control Language) — язык управления данными. Соответствующие команды предназначены для управления доступом к информации, хранящейся в базе данных;
□ DQL (Data Query Language) — язык. Это наиболее часто используемые команды, предназначенные для формирования запросов к базе данных (запрос — это обращение к базе данных для получения соответствующей информации);
□ Команды администрирования базы данных предназначены для осуществления контроля за выполняемыми действиями и анализа производимых операций;
□ Команды управления транзакциями.
Типы данных SQL/92
Типы данных, используемые в стандартном SQL, можно подразделить на следующие группы:
□ строковые типы;
□ числовые типы;
□ типы для представления даты и времени. Рассмотрим эти типы данных более подробно.
Строковые типы
В SQL/92 определены два строковых типа:
□ символьные строки фиксированной длины;
□ символьные строки переменной длины.
Символьные строки фиксированной длины
Данные, хранящиеся в виде символьных строк фиксированной длины, всегда занимают один и тот же объем памяти, определяемый при объявлении поля, независимо от реального размера строки, занесенной в поле. Объявление строки фиксированной длины согласно ANSI SQL-92 имеет вид:
CHARACTER(n)
где п — длина строки, определяющая размер поля, к которому это объявление относится.
При использовании строк фиксированной длины пустые места обычно заполняются пробелами. Например, если размер поля задан равным 10, а в него введена строка, состоящая из 3 символов, то оставшиеся 7 символов заполняются пробелами.
Числовые типы
Числовые типы подразделяются на:
□ целочисленные типы;
□ вещественные типы с фиксированной точкой;
□ вещественные типы с плавающей точкой;
□ двоичные строки фиксированной и переменной длины.
Целочисленные типы
Стандартом ANSI SQL-92 устанавливаются два целочисленных типа:
Q INTEGER — целое число со знаком, использующее 4 байта. Может представлять числа в диапазоне отдо 2 ;
□ SMALL I NT — короткое целое число со знаком, использующее 2 байта. Может представлять целые числа в диапазоне от до
Вещественные типы с фиксированной точкой
Вещественные типы с фиксированной точкой предназначены для точного представления дробных чисел. Наиболее часто эти типы используются в том случае, когда недопустимы погрешности, неизбежные при представлении вещественных чисел с плавающей запятой в двоичной форме (например, при хранении значений денежных величин). Вещественные типы с фиксированной запятой, по сути, являются целочисленными типами, в которых отображается десятичная точка. Синтаксис объявления типа с фиксированной запятой следующий:
DECIMAL(n. m)
где п — точность; m — масштаб. Точность — это общая длина числового значения. Масштаб — количество знаков, расположенных справа от десятичной точки.
Вещественные типы с плавающей точкой
Типы с плавающей точкой обычно используются в научных и инженерных расчетах. При использовании этих типов следует учитывать, что в процессе занесения в базу данных некоторого числа при его преобразовании в двоичную форму с плавающей точкой всегда вносится некоторая погрешность. И хотя эта погрешность очень мала, в некоторых случаях она является недопустимой и может внести серьезную ошибку, например, при суммировании большого количества значений. Поэтому типы с плавающей точкой неприменимы для хранения значений денежных величин.
Наиболее часто используются два вещественных типа с плавающей точкой:
□ FLOAT — числа с одинарной точностью;
□ DOUBLE — числа с двойной точностью.
Двоичные строки
Двоичные строки используются сравнительно редко. Обычно поля такого типа применяются в качестве флагов или двоичных масок.
Так же как и символьные строки, двоичные строки бывают фиксированной и переменной длины. Двоичные строки фиксированной длины объявляются следующим образом:
В1Т(п)
где п — длина строки в байтах. Объявление строк переменной длины выглядит так:
BIT VARYING(n) где п — максимальная длина строки в байтах.
Типы для представления даты и времени
Очевидно, что данные типы используются для хранения информации, относящейся к датам и времени.
В стандарте SQL определены следующие типы данных для хранения информации о дате и времени:
□ DATE — используется для хранения даты;
□ TIME — используется для хранения времени; Q TIMESTAMP — хранит дату и время;
D INTERVAL — хранит промежуток времени между двумя датами или между двумя моментами времени.
БИЛЕТ 2
1. Схема обмена данными при работе с БД.
2. Язык SQL Задание ограничений. Ограничения NOT NULL, первичного ключа,
UNIQUE, внешнего ключа, HECK.
1. Схема обмена данными при работе с БД.
Пользователю любой категории (администратору БД, разработчику приложения, обычному пользователю) для грамотного решения задач полезно представлять вычислительный процесс, происходящий в ОС при работе с БД. Раскроем внутренние механизмы этого процесса на примере наиболее общего случая организации ИС, функционирующей на одном ПК, — когда пользователь работает с «полной» версией программы СУБД.
При работе пользователя с базой данных над ее содержимым выполняются следующие основные операции: выбор, добавление, модификация (замена) и удаление данных. Рассмотрим как происходит обмен данными между отдельным пользователем и персональной СУБД при выполнении наиболее часто используемой операции выбора данных. Обмен данными между пользователем и БД для других операций отличается несущественно.
Цикл взаимодействия пользователя с БД с помощью приложения можно разделить на следующие основные этапы:
1. Пользователь терминала в процессе диалога с приложением формулирует запрос на некоторые данные из БД.
2. Приложение на программном уровне средствами языка манипулирования данными формулирует запрос, с которым обращается к СУБД.
3. Используя свои системные управляющие блоки и таблицы, СУБД с помощью словаря данных определяет местоположение требуемых данных и обращается за ними к ОС.
4. Программы методов доступа файловой системы ОС считывают из внешней памяти искомые данные и помещают их в системные буферы СУБД.
5. Преобразуя полученные данные к требуемому формату, СУБД пересылает их в соответствующую область программы и сигнализирует о завершении операции каким-либо образом (например, кодом возврата).
6. Результаты выбора данных из базы приложение отображает на терминале пользователя.
В случае работы пользователя в диалоговом режиме с СУБД (без приложения) цикл взаимодействия пользователя с БД упрощается. Его можно представить следующими этапами.
1. Пользователь терминала формулирует на языке запросов СУБД, например QBE, по связи требование на выборку некоторых данных из базы.
2. СУБД определяет местоположение требуемых данных и обращается за ними к ОС, которая считывает из внешней памяти искомые данные и помещает их в системные буферы СУБД.
3. Информация из системных буферов преобразуется к требуемому формату, после чего отображается на терминале пользователя.
Напомним, что описанная схема поясняет как функционирует СУБД с одним пользователем на отдельной ПЭВМ.
Если компьютер и ОС поддерживают многопользовательский режим работы, то в такой вычислительной системе может функционировать многопользовательская СУБД. Последняя, в общем случае, позволяет одновременно обслуживать несколько пользователей, работающих непосредственно с СУБД или с приложениями (каждое из которых может поддерживать работу с одним или несколькими пользователями).
Иногда к вычислительной системе подключается так называемый «удаленный пользователь», находящийся на некотором удалении от ЭВМ и соединенный с ней при помощи какой-либо передающей среды (интерфейс ЭВМ, телефонный канал связи, радиоканал, оптико-волоконная линия и т. д.). Чаще всего такой пользователь программным способом эмулируется под обычного локального пользователя. СУБД, как правило, этой подмены «не замечает» и работает по обслуживанию запросов обычным образом.
При обслуживании нескольких параллельных источников запросов (от пользователей и приложений) СУБД так планирует использование своих ресурсов и ресурсов ЭВМ, чтобы обеспечить независимое или почти независимое выполнение операций, порождаемых запросами.
Многопользовательские СУБД часто применяются на больших и средних ЭВМ, где основным режимом использования ресурсов является коллективный доступ.
На персональных ЭВМ пользователь обычно работает один, но с различными программами, в том числе и одновременно (точнее, попеременно). Иногда такими программами оказываются СУБД: различные программы или разные копии одной и той же СУБД. Последняя ситуация возникает, например, при работе с различными базами данных с помощью СУБД Access.
Технология одновременной работы пользователя с несколькими программами неплохо реализована в Windows. Здесь каждая выполняемая программа имеет свое окно взаимодействия с пользователем, и имеются удобные средства переключения между программами. При работе в Windows СУБД избавлена от необходимости поддержания нескольких сеансов работы с пользователями.
2. Язык SQL Задание ограничений. Ограничения NOT NULL, первичного ключа,
UNIQUE, внешнего ключа, CHECK.
Ограничения используются для того, чтобы обеспечить достоверность и непротиворечивость информации в базе данных. Существует достаточно большое количество различного рода ограничений, из которых мы рассмотрим лишь основные:
□ ограничение NOT NULL;
□ ограничение первичного ключа; ограничение UNIQUE;
□ ограничение внешнего ключа;
□ ограничение CHECK.
Ограничение NOT NULL
Ограничение NOT NULL может быть установлено для любого поля реляционной таблицы. При наличии этого ограничения запрещается ввод значений NULL в поле, для которого это ограничение установлено.
Ограничение NOT NULL устанавливается при создании таблицы с помощью оператора CREATE TABLE. Чтобы задать ограничение NOT NULL для некоторого поля, следует просто указать NOT NULL после указания типа поля:
CREATE TABLE имя_таблицы ( имя_поля_1 тип_данных NOT NULL. имя_поля_2 тип_данных NULL,
имя_поля_И тип_данных NOT NULL)
Если же после задания типа данных поля следует слово NULL, то данное поле может содержать пустые значения. Однако атрибут NULL обычно устанавливается по умолчанию, поэтому указывать его явно нет необходимости.
Ограничение NOT NULL устанавливается для тех полей, в которые при занесении данных в таблицу обязательно должна быть введена какая-либо информация. Например, в таблице, содержащей личные данные о сотрудниках организации, можно задать ограничение NOT NULL для полей, в которых будут содержаться имя и фамилия сотрудника. Поэтому оператор создания таблицы ФИЗИЧЕСКИЕ ЛИЦА следует видоизменить следующим образом:
CREATE TABLE Физические_лица ( Код_физического_лица INTEGER. Имя VARCHAR(25) NOT NULL. Фамилия VARCHAR (25) NOT NULL. Отчество VARCHAR(25). Дата_рождения DATE. Адрес VARCHAR(50), Телефон VARCHAR(25)).
Ограничение первичного ключа
Первичные ключи указываются при создании таблицы. Так как поля, входящие в состав первичного ключа, не могут принимать значение NULL, то для них обяза-
тельным является ограничение NOT NULL. Ограничение первичного ключа может быть задано двумя путями.
В том случае когда первичный ключ состоит только из одного поля, то он может быть задан с помощью ключевых слов PRIMARY KEY, указываемых при описании поля в операторе CREATE TABLE:
CREATE TABLE имя_таблицы (
имя_поля_1 тип_данных NOT NULL PRIMARY KEY.
имя_поля_2 тип_данных.
имя_поля_М тип_данных NOT NULL)
Обратите внимание на то, что указание ограничения NOT NULL для поля, являющегося первичным ключом, является обязательным.
Первичный ключ может быть также задан в конце описания таблицы, после определений всех полей. Для этого также используется ключевая фраза PRIMARY KEY, после которой в круглых скобках указывается имя поля, составляющего первичный ключ:
CREATE TABLE имя_таблицы ( имя_поля_1 тип_данных NOT NULL, имя_поля_2 тип_данных,
имя_поля_М тип_данных NOT NULL. PRIMARY KEY (имя_поля_1))
Второй способ особенно удобен для задания составных первичных ключей. В этом случае в скобках следует указать через запятую все поля, составляющие первичный ключ:
CREATE TABLE иия_таблицы ( имя_поля_1 тип_данных NOT NULL. имя_поля_2 тип_данных, имя_поля_3 тип_данных NOT NULL,
имя_поля_N тип_данных NOT NULL. PRIMARY KEY (имя_поля_1. имя_поля_3))
При использовании составного первичного ключа ограничение NOT NULL должно быть задано для всех полей, входящих в его состав.
Ограничение UNIQUE
Ограничение UNIQUE похоже на ограничение первичного ключа, так как при наличии этого ограничения для некоторого поля все значения, содержащиеся в этом поле, должны быть уникальными. Однако, в отличие от первичного ключа, ограничение UNIQUE допускает наличие пустых значений поля (если, конечно, для этого поля не установлено ограничение NOT NULL).
Ограничение UNIQUE задается при создании таблицы с помощью ключевого слова UNIQUE, указываемого при описании поля:
CREATE TABLE имя_таблицы (
имя_поля_1 тип_данных NOT NULL PRIMARY KEY.
имя_поля_2 тип_данных UNIQUE, имя_поля_3 тип_данных NOT NULL.
имя_поля_М тип_данных NOT NULL UNIQUE)
Можно также задать ограничение UNIQUE не для одного поля, а для группы полей. Объявление группы полей уникальной отличается от объявления уникальными индивидуальных полей, так как именно комбинация значений, а не просто индивидуальные значения, обязана быть уникальной. То есть значение каждого поля, входящего в группу, не обязательно должно быть уникальным, а комбинация значений полей всегда должна быть уникальной.
Ограничение UNIQUE для группы полей, так же как и составной первичный ключ, задается после описания всех полей таблицы:
CREATE TABLE имя_таблицы (
имя_поля_1 тип_данных NOT NULL PRIMARY KEY,
имя_поля_2 тип_данных,
имя_поля_3 тип_данных NOT NULL,
имя_поля_М тип_данных NOT NULL UNIQUE, UNIQUE (имя_поля_2. имя_поля_3))
Ограничение внешнего ключа
Ограничение внешнего ключа является основным механизмом для поддержания ссылочной целостности базы данных. Поле, определяемое в качестве внешнего ключа, используется для ссылки на поле другой таблицы, обычно называющееся родительским ключом, а таблица, на которую внешний ключ ссылается, называется родительской таблицей (родительский ключ часто является первичным ключом родительской таблицы).
Типы полей внешнего и родительского ключа обязательно должны быть идентичны. А вот имена полей могут быть разными. Однако во избежание путаницы желательно и имена полей для внешнего и родительского ключей задавать одинаковыми.
Внешний ключ не обязательно должен состоять только из одного поля. Подобно первичному ключу, внешний ключ может состоять из любого числа полей, которые обрабатываются как единый объект. Поля родительского ключа, на который ссылается составной внешний ключ, должны следовать в том же порядке, что и во внешнем ключе.
Когда поле таблицы является внешним ключом, оно определенным образом связано с таблицей, на которую этот ключ ссылается. Это фактически означает, что каждое значение внешнего ключа непосредственно привязано к значению в родительском ключе.
Ограничение внешнего ключа (FOREIGN KEY) может быть задано либо в операторе CREATE TABLE, либо с помощью оператора ALTER TABLE. Синтаксис ограничения FOREIGN KEY имеет следующий вид:
FOREIGN KEY имя_внешнего_ключа(слисок полей внешнего ключа) REFERENCES имя_родительской_таблицы (список полей родительского ключа)
Первый список полей — это список из одного или нескольких полей таблицы, разделенных запятыми. Второй список полей — это список полей, которые будут составлять родительский ключ. Списки полей, указываемые в качестве внешнего и родительского ключей, должны быть совместимы:
□ они должны иметь одинаковое число полей;
□ порядок следования полей в списках должен совпадать. Причем совпадение определяется не именами полей, которые могут быть различны, а типами данных и размером полей.
Внешний ключ ограничивает значения, которые можно ввести в таблицу. Чтобы в поля, составляющие внешний ключ, можно было ввести некоторое значение, необходимо, чтобы это значение уже было введено в родительской таблице.
Для внешнего ключа может быть задано ограничение NOT NULL, но это необязательно, а в некоторых случаях даже нежелательно.
Ограничение внешнего ключа также оказывает влияние на удаление и модификацию записей родительской таблицы. Никакое значение родительского ключа, на которое ссылается какой-либо внешний ключ, не может быть удалено или изменено.
Аналогично, нельзя изменять значение родительского ключа, на который ссылается какой-либо внешний ключ, — это также приведет к потере информации и нарушению ссылочной целостности базы данных.
Ограничение CHECK
Ограничение CHECK используется для проверки допустимости данных, вводимых в поле таблицы.
Ограничение CHECK состоит из ключевого слова CHECK, сопровождаемого предложением предиката, который использует указанное поле. Любая попытка модифицировать или вставить значение поля, которое могло бы сделать этот предикат неверным, будет отклонена.
Задание ограничения CHECK производится при создании таблицы. Для этого после описания полей таблицы указывается ключевая фраза:
CONSTRAINT имя_ограничения CHECK (ограничение), например, для поля «column». Допустим, разряд не может превышать 20. Тогда оператор создания таблицы, в котором задано это ограничение, будет иметь следующий вид:
CREATE TABLE <table_name> (
<table_column> INTEGER NOT NULL PRIMARY KEY,
<table_column> VARCHAR(50) NOT NULL UNIQUE.
<table_column> INTEGER NOT NULL.
<table_column> DECIMAL (7.2) NOT NULL.
CONSTRAINT CHK_RATE CHECK (Разряд<=20))
БИЛЕТ 3
1. Иерархические и сетевые модели;
2. Язык SQL Задание значений по умолчанию Создание и удаление индексов.
Составные индексы
1. Иерархические и сетевые модели.
Иерархическая модель
В иерархической модели связи между данными можно описать с помощью упорядоченного графа (или дерева).
Для описания структуры (схемы) иерархической БД на некотором языке программирования используется тип данных «дерево».
Тип «дерево» является составным. Он включает в себя подтипы («поддеревья»), каждый из которых, в свою очередь, является типом «дерево». Каждый из типов «дерево» состоит из одного «корневого» типа и упорядоченного набора (возможно пустого)
подчиненных типов. Каждый из элементарных типов, включенных в тип «дерево», является простым или составным типом «запись». Простая «запись» состоит из одного типа, например, числового, а составная «запись» объединяет некоторую совокупность типов, например, целое, строку символов и указатель (ссылку).
Корневым называется тип, который имеет подчиненные типы и сам не является подтипом. Подчиненный тип (подтип) является потомком по отношению к типу, который выступает для него в роли предка (родителя). Потомки одного и того же типа являются близнецами по отношению друг к другу.
В целом тип «дерево» представляет собой иерархически организованный набор типов «запись».
Иерархическая БД представляет собой упорядоченную совокупность экземпляров данных типа «дерево» (деревьев), содержащих экземпляры типа «запись» (записи). Часто отношения родства между типами переносят на отношения между самими записями. Поля записей хранят собственно числовые или символьные значения, составляющие основное содержание БД. Обход всех элементов иерархической БД обычно производится сверху вниз и слева направо.
В иерархических СУБД может использоваться терминология, отличающаяся от приведенной. Так, в системе IMS понятию «запись» соответствует термин «сегмент», а под «записью БД» понимается вся совокупность записей, относящаяся к одному экземпляру типа «дерево».
Для организации физического размещения иерархических данных в памяти ЭВМ могут использоваться следующие группы методов:
· представление линейным списком с последовательным распределением памяти (адресная арифметика, левосписковые структуры);
· представление связными линейными списками (методы, использующие указатели и справочники).
К основным операциям манипулирования иерархически организованными данными относятся следующие:
· поиск указанного экземпляра БД (например, дерева со значением 10 в поле Отд_номер);
· переход от одного дерева к другому;
· переход от одной записи к другой внутри дерева (например, к следующей записи типа Сотрудники);
· вставка новой записи в указанную позицию;
· удаление текущей записи и т. д.
В соответствии с определением типа «дерево», можно заключить, что между предками и потомками автоматически поддерживается контроль целостности связей. Основное правило контроля целостности формулируется следующим образом: потомок не может существовать без родителя, а у некоторых родителей может не быть потомков. Механизмы поддержания целостности связей между записями различных деревьев отсутствуют.
К достоинством иерархической модели данных относятся эффективное использование памяти ЭВМ и неплохие показатели времени выполнения основных операций над данными. Иерархическая модель данных удобна для работы с иерархически упорядоченной информацией.
Недостатком иерархической модели является ее громоздкость для обработки информации с достаточно сложными логическими связями, а также сложность понимания для обычного пользователя.
На иерархической модели данных основано сравнительно ограниченное количество СУБД, в числе которых можно назвать зарубежные системы IMS, PC/Focus, Team-Up и Data Edge, а также отечественные системы Ока, ИНЭС и МИРИС.
Сетевая модель
Сетевая модель данных позволяет отображать разнообразные взаимосвязи элементов данных в виде произвольного графа, обобщая тем самым иерархическую модель данных. Наиболее полно концепция сетевых БД впервые была изложена в Предложениях группы КОДАСИЛ (KODASYL).
Для описания схемы сетевой БД используется две группы типов: «запись» и «связь». Тип «связь» определяется для двух типов «запись»: предка и потомка. Переменные типа «связь» являются экземплярами связей.
Сетевая БД состоит из набора записей и набора соответствующих связей. На формирование связи особых ограничений не накладывается. Если в иерархических структурах запись-потомок могла иметь только одну запись-предка, то в сетевой модели данных запись-потомок может иметь произвольное число записей-предков (сводных родителей).
В различных СУБД сетевого типа для обозначения одинаковых по сути понятий зачастую используются различные термины. Например, такие, как элементы и агрегаты данных, записи, наборы, области и т. д.
Физическое размещение данных в базах сетевого типа может быть организовано практически теми же методами, что и в иерархических базах данных.
К числу важнейших операций манипулирования данными баз сетевого типа можно отнести следующие:
· поиск записи в БД;
· переход от предка к первому потомку;
· переход от потомка к предку;
· создание новой записи;
· удаление текущей записи;
· обновление текущей записи;
· включение записи в связь;
· исключение записи из связи;
· изменение связей и т. д.
Достоинством сетевой модели данных является возможность эффективной реализации по показателям затрат памяти и оперативности. В сравнении с иерархической моделью сетевая модель предоставляет большие возможности в смысле допустимости образования произвольных связей.
Недостатком сетевой модели данных является высокая сложность и жесткость схемы БД, построенной на ее основе, а также сложность для понимания и выполнения обработки информации в БД обычным пользователем. Кроме того, в сетевой модели данных ослаблен контроль целостности связей вследствие допустимости установления произвольных связей между записями.
Системы на основе сетевой модели не получили широкого распространения на практике. Наиболее известными сетевыми СУБД являются следующие: IDMS, db VistaIII, СЕТЬ, СЕТОР и КОМПАС.
2. Язык SQL Задание значений по умолчанию Создание и удаление индексов.
Составные индексы.
Задание значений по умолчанию
Для полей таблицы можно задавать значения по умолчанию, которые будут заноситься в поля при добавлении новой записи в таблицу, если значения этих полей не определены.
Значение NULL фактически является значением по умолчанию, принятым для каждого поля таблицы, для которого не задано ограничение NOT NULL и которое не имеет другого значения по умолчанию.
Для задания значения по умолчанию используется директива DEFAULT, которая указывается в команде CREATE TABLE при описании поля, для которого устанавливается значение по умолчанию:
CREATE TABLE (
имя поля_N тип_данных DEFAULT - значение_по_умолчанию
)
Создание и удаление индексов
Синтаксис оператора создания индекса может существенно различаться в зависимости от используемой реализации SQL. Наиболее часто встречается следующая синтаксическая форма команды создания индекса:
CREATE INDEX имя_индекса
ON имя_таблицы (имя_поля_1, [имя_поля_2, ...])
Простой индекс является простейшей и вместе с тем распространенной разновидностью индексов. Простой индекс состоит только из одного поля (столбца) таблицы, поэтому он часто также называется одностолбцовым индексом.
Уникальные индексы
Уникальный индекс не допускает введения в таблицу дублирующихся значений. Таким образом, уникальные индексы используются не только с целью повышения производительности, но и для поддержания целостности данных.
Типичный синтаксис оператора создания уникального индекса имеет следующий вид:
CREATE UNIQUE INDEX имя_индекса ON имя_таблицы (имя_поля)
Удаление индексов
Удаление индексов не вызывает никаких проблем. Для удаления необходимо знать только имя индекса (и, разумеется, обладать соответствующими правами). Синтаксис оператора удаления индекса имеет следующий вид:
DROP INDEX имя_индекса
Удаление индекса никак не влияет на информацию, содержащуюся в индексированных полях. После удаления индекс может быть создан вновь.
Составные индексы
Составными называются индексы, построенные по двум и более полям. При создании составного индекса необходимо учитывать, что порядок следования полей в составном индексе оказывает существенное влияние на скорость поиска данных. В общем случае поля в индексе следует располагать в порядке уменьшения ограничивающих значений. Синтаксис задания составного индекса имеет следующий вид:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 |


