- •Преимущества дискретной формы
- •Представление информации в цифровых автоматах. Информация и алфавит. Кодирование.
- •Код Шеннона-Фано
- •Код Хаффмана Кодирование Хаффмана[править | править вики-текст]
- •Кодирование в компьютере чисел со знаком Прямой код
- •Дополнительный код
- •Операция сложения положительного числа и отрицательного числа, представленного в прямом коде
- •Операция сложения положительного числа и отрицательного числа, представленного в дополнительном коде
- •Кодирование вещественных чисел. Нормализованное представление числа
- •Описание[править | править вики-текст]
- •Преимущества и недостатки[править | править вики-текст] Преимущества[править | править вики-текст]
- •Недостатки[править | править вики-текст]
- •1) Классификация моделей по области использования:
- •2) Классификация моделей по фактору времени:
- •Особенности алгоритмов управления ресурсами
- •Особенности аппаратных платформ
- •Особенности областей использования
- •Особенности методов построения
- •Монолитное ядро[править | править вики-текст]
- •Модульное ядро[править | править вики-текст]
- •Микроядро[править | править вики-текст]
- •Экзоядро[править | править вики-текст]
- •Наноядро[править | править вики-текст]
- •Гибридное ядро[править | править вики-текст]
- •Физическая организация памяти компьютера
- •Классификация процессоров:
- •Классификация по назначению
- •Классификация по характеру временной организации работы
- •Классификация по количеству выполняемых программ
- •Конвейеризация - способ обеспечения параллельности выполнения команд
- •O Аппаратное обеспечение компьютера – это группа взаимосвязанных устройств, предназначенных для приема, преобразования и выдачи информации.
- •Ускорение вычислений.
- •Вычислительные системы с программируемой структурой
- •Требования, предъявляемые к инфологической модели
- •Архитектура odmg
- •1.2. Домен
- •1.3. Схема отношения, схема базы данных
- •1.4. Кортеж, отношение
- •7.2.1. Общие определения
- •7.2.2. Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
- •Пересечение
- •Разность
- •Структура памяти эвм
- •По порядку сортировки
- •По источнику данных
- •По воздействию на источник данных
- •По структуре
- •По количественному составу
- •По характеристике содержимого
- •По механизму обновления
- •По покрытию индексируемого содержимого
- •3.3. Виды привилегий
- •Стандарт iso 7498
- •Асинхронная передача.
- •Синхронная передача.
- •Кабельные линии связи
- •Беспроводные (радиоканалы наземной и спутниковой связи) каналы передачи данных
- •Технология скремблирования
- •Селективные методы
- •Методы случайного доступа
- •Методы резервирования времени
- •Технология доступа[править | править вики-текст]
- •Обнаружение коллизий[править | править вики-текст]
- •Формат кадра
- •Разновидности Ethernet
- •Структура Fast Ethernet
- •Подуровень управления логической связью (llc)
- •Новые интерфейсы и модель физического уровня
- •Типы спецификаций 10-гигабитного Ethernet
- •Объединение сетей в интерсеть. Удаленный мост
- •Формат сообщения протокола rip 1
- •Формат сообщения протокола rip 2
- •1.1. Назначение протокола arp. Arp-таблицы. Статические и динамические записи arp-таблиц, arp-кэш
- •3.2. Формат icmp-пакета
1.2. Домен
Понятие домена более специфично для баз данных, хотя и имеет некоторые аналогии с подтипами в некоторых языках программирования. В самом общем виде домен определяется заданием некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выражения, применяемого к элементу типа данных. Если вычисление этого логического выражения дает результат "истина", то элемент данных является элементом домена.
Наиболее правильной интуитивной трактовкой понятия домена является понимание домена как допустимого потенциального множества значений данного типа. Например, домен "Имена" в нашем примере определен на базовом типе строк символов, но в число его значений могут входить только те строки, которые могут изображать имя (в частности, такие строки не могут начинаться с мягкого знака).
Следует отметить также семантическую нагрузку понятия домена: данные считаются сравнимыми только в том случае, когда они относятся к одному домену. В нашем примере значения доменов "Номера пропусков" и "Номера групп" относятся к типу целых чисел, но не являются сравнимыми. Заметим, что в большинстве реляционных СУБД понятие домена не используется, хотя в Oracle V.7 оно уже поддерживается.
1.3. Схема отношения, схема базы данных
Схема отношения базы данных - это именованное множество пар {имя атрибута, имя домена (или типа, если понятие домена не поддерживается)}. Степень или "арность" схемы отношения - мощность этого множества. Степень отношения СОТРУДНИКИ равна четырем, то есть оно является 4-арным. Если все атрибуты одного отношения определены на разных доменах, осмысленно использовать для именования атрибутов имена соответствующих доменов (не забывая, конечно, о том, что это является всего лишь удобным способом именования и не устраняет различия между понятиями домена и атрибута).
Схема базы данных (в структурном смысле) - это набор именованных схем отношений.
1.4. Кортеж, отношение
Кортеж, соответствующий данной схеме отношения в базе данных, - это множество пар {имя атрибута, значение}, которое содержит одно вхождение каждого имени атрибута, принадлежащего схеме отношения. "Значение" является допустимым значением домена данного атрибута (или типа данных, если понятие домена не поддерживается). Тем самым, степень или "арность" кортежа, т.е. число элементов в нем, совпадает с "арностью" соответствующей схемы отношения. Попросту говоря, кортеж - это набор именованных значений заданного типа.
Отношение - это множество кортежей данной базы данных, соответствующих одной схеме отношения. Иногда, чтобы не путаться, говорят "отношение-схема" и "отношение-экземпляр", иногда схему отношения называют заголовком отношения, а отношение как набор кортежей - телом отношения. На самом деле, понятие схемы отношения в базе данных ближе всего к понятию структурного типа данных в языках программирования. Было бы вполне логично разрешать отдельно определять схему отношения, а затем одно или несколько отношений с данной схемой.
Однако в реляционных базах данных это не принято. Имя схемы отношения в таких базах данных всегда совпадает с именем соответствующего отношения-экземпляра. В классических реляционных базах данных после определения схемы базы данных изменяются только отношения-экземпляры. В них могут появляться новые и удаляться или модифицироваться существующие кортежи. Однако во многих реализациях допускается и изменение схемы базы данных: определение новых и изменение существующих схем отношения. Это принято называть эволюцией схемы базы данных.
Обычным житейским представлением отношения является таблица, заголовком которой является схема отношения, а строками - кортежи отношения-экземпляра; в этом случае имена атрибутов именуют столбцы этой таблицы. Поэтому иногда говорят "столбец таблицы", имея в виду "атрибут отношения". Когда мы перейдем к рассмотрению практических вопросов организации реляционных баз данных и средств управления этими базами данных, мы будем использовать эту житейскую терминологию. Этой терминологии придерживаются в большинстве коммерческих реляционных систем управления базами данных.
Реляционная база данных - это набор отношений, имена которых совпадают с именами схем отношений в схеме базы данных.
Как видно, основные структурные понятия реляционной модели данных (если не считать понятия домена) имеют очень простую интуитивную интерпретацию, хотя в теории реляционных баз данных все они определяются абсолютно формально и точно.
Языки манипулирования данными
Созданы языки манипулирования данными, позволяющие реализовать все операции реляционной алгебры и практически любые их сочетания. Среди них наиболее распространены SQL (Structured Query Language – структуризованный язык запросов) и QBE (Quere-By-Example – запросы по образцу) [3, 5]. Оба относятся к языкам очень высокого уровня, с помощью которых пользователь указывает, какие данные необходимо получить, не уточняя процедуру их получения.
Операции реляционной алгебры
Операции реляционной алгебры определены на множестве отношений и являются замкнутыми относительно этого множества(образуют алгебру). Оказывается, что любой произвольный запрос к БД можно представить в виде последовательности, составленной из пяти основных операций реляционной алгебры. Рассмотрим эти операции.
Объединение
Объединением отношений r и s называется множество кортежей, которые принадлежат или r, или s, или им обоим. Для операции объединения требуется одинаковая арность отношений.
Для примера, пусть
r |
|
s |
||||
a |
b |
a |
|
b |
g |
a |
d |
a |
f |
|
d |
a |
f |
c |
b |
d |
|
|
|
|
тогда
|
||
a |
b |
a |
d |
a |
f |
c |
b |
d |
b |
g |
a |
Заметим, что с помощью операции объединения может быть реализовано добавление нового кортежа к имеющемуся отношению. В этом случае r – исходное отношение, s – отношение, содержащее один добавляемый кортеж.
Разность r – s
Разностью отношений r и s называется множество кортежей, принадлежащих r, но не принадлежащих s. Для этой операции также требуется одинаковая арность отношений.
r - s |
||
a |
b |
a |
c |
b |
d |
Заметим, что с помощью операции разности может быть реализовано удаление кортежа из имеющегося отношения. В этом случаеr – исходное отношение, s – отношение, содержащее один удаляемый кортеж.
Декартово произведение r x s
Пусть r и s – отношения арности k1 и k2 соответственно. Декартовым произведением r x s называется множество кортежей длины k1+k2, первые k1 компонентов которых образуют кортежи, принадлежащие r, а последние k2 – кортежи, принадлежащие s.
r x s |
|||||
a |
b |
a |
b |
g |
a |
a |
b |
a |
d |
a |
f |
d |
a |
f |
b |
g |
a |
d |
a |
f |
d |
a |
f |
c |
b |
d |
b |
g |
a |
c |
b |
d |
d |
a |
f |
Проекция
Проекция есть множество кортежей, получаемых из кортежей отношения r выбором столбцов с именамиAi1, Ai2, ..., Aim.
Другими словами, это операция построения "вертикального" подмножества, получаемого путем выбора определенных атрибутов и исключения остальных. Повторяющиеся кортежи исключаются.
|
|
a |
a |
d |
f |
c |
d |
Выбор ( селекция )
Реляционные исчисления с переменными на доменами и переменными-кортежами
Реляционное исчисление, ориентированное на домены (или исчисление доменов), отличается от исчисления кортежей тем, что в нем используются переменные доменов вместо переменных кортежей, т.е. переменные, принимающие свои значения в пределах домена, а не отношения.
Основным формальным отличием исчисления доменов от исчисления кортежей является наличие дополнительного набора предикатов, позволяющих выражать так называемые условия членства. Если R - это n-арное отношение с атрибутами t1, t2, ..., tn, то условие членства имеет вид
R (pair, pair,…),
где каждая пара pair имеет вид t:v, при этом v – это либо литерально задаваемая константа, либо имя доменной переменной. Условие членства принимает значение true в том и только в том случае, если в отношении R существует кортеж, содержащий значения указанных атрибутов. Если v – константа, то на атрибут t задается жесткое условие, не зависящее от текущих значений доменных переменных; если же v – имя доменной переменной, то условие членства может принимать разные значения при разных значениях этой переменной. Например, вычисление выражния
ПД (ПНОМ:'П1', ДНОМ:'Д1')
дает значение true, если и только если в отношении ПД существует кортеж со значением ПНОМ, равным П1, и значением ДНОМ, равным Д1. Аналогично, условие членства
ПД (ПНОМ:ПНОМА, ДНОМ:ДНОМА)
принимает значение true,если и только если в отношениии ПД существует кортеж со значением ПНОМ, эквивалентным текущему значению переменной домена ПНОМА (какому бы то ни было), и знаечнием ДНОМ, эквивалентным текущему знаечнию переменной домена ДНОМА (опять же какому бы то ни было).
Переменная кортежа (или области значений) определяется с помощью синтаксиса, являющегося синтаксисом языка QUEL, следующим образом:
RANGE OF T IS X1, X2, …, Xn.
Здесь Т – определяемая переменная кортежа, а Xi (i = 1, 2, …, n) – либо имя отношения, либо выражение исчисления кортежей. Пусть Xi является отношением Ri (i = 1, 2, …, n). Отношения R1,R2, …, Rn должны быть совместимы по типу, т.е. они должны иметь идентичные заголовки. Тогда переменная кортежа Т изменяется на объединении этих отношений, т.е. ее значение в любое заданное время будет некоторым текущим кортежем по крайней мере одного из этих отношений. Конечно, если список идентификаторов выражений будет просто одним именованным отношениемR (это обычный случай), то переменная кортежа будет просто принимать значения текущих кортежей одного такого отношения R.
При использовании кортежных переменных в формулах можно ссылаться на значение атрибута переменной (это аналогично тому, как, например, при программировании на языке Pascal можно сослаться на значение поля переменной типа записи). Например, для того, чтобы сослаться на значение атрибута A отношения, значения которого принимает переменная T, нужно употребить конструкцию T.A.
Если компоненты кортежа могут быть идентифицированы по их порядковой позиции, то можно ссылаться на них с помощью индексной ссылки T[i].
Правильно построенная формула WFF служит для выражения условий, накладываемых на кортежные переменные. WFF состоит из простых сравнений скалярных значений (значений атрибутов переменных или литерально заданных констант). Более сложные варианты WFF строятся с помощью логических операций NOT, AND, OR, IF…THEN, и двух кванторов EXISTS и FORALL. Квантор EXISTS называется квантором существования, а квантор FORALL – квантором общности.
Если f – формула WFF, в которой участвует переменная x, то
EXISTS x ( f ) и FORALL x ( f )
являются допустимыми формулами WFF. Первая формула означает: «Существует по крайней мере одно значение переменной x, что вычисление формулы f для этого x дает значение истина». Вторая формула означает: «Для всех значений переменной x вычисление формулы f дает значение истина».
Квантор существования EXISTS определяется формально как повторяющееся OR (ИЛИ). То есть, если R – это отношение с кортежами Т1, Т2, …, Тm; Т – это переменная кортежа, которая изменяется на этом отношении; а f ( T ) – это формула, в которой используется переменная Т, то формула
EXISTS T ( f (T) )
Проектирование реляционной БД
При проектировании базы данных решаются две основных проблемы:
Каким образом отобразить объекты предметной области в абстрактные объекты модели данных, чтобы это отображение не противоречило семантике предметной области и было по возможности лучшим (эффективным, удобным и т.д.)? Часто эту проблему называют проблемой логического проектирования баз данных.
Как обеспечить эффективность выполнения запросов к базе данных, т.е. каким образом, имея в виду особенности конкретной СУБД, расположить данные во внешней памяти, создание каких дополнительных структур (например, индексов) потребовать и т.д.? Эту проблему называют проблемой физического проектирования баз данных.
В случае реляционных баз данных трудно представить какие-либо общие рецепты по части физического проектирования. Здесь слишком много зависит от используемой СУБД. Например, при работе с СУБД Ingres можно выбирать один из предлагаемых способов физической организации отношений, при работе с System R следовало бы прежде всего подумать о кластеризации отношений и требуемом наборе индексов и т.д. Поэтому мы ограничимся вопросами логического проектирования реляционных баз данных, которые существенны при использовании любой реляционной СУБД.
Более того, мы не будем касаться очень важного аспекта проектирования - определения ограничений целостности (за исключением ограничения первичного ключа). Дело в том, что при использовании СУБД с развитыми механизмами ограничений целостности (например, SQL-ориентированных систем) трудно предложить какой-либо общий подход к определению ограничений целостности. Эти ограничения могут иметь очень общий вид, и их формулировка пока относится скорее к области искусства, чем инженерного мастерства. Самое большее, что предлагается по этому поводу в литературе, это автоматическая проверка непротиворечивости набора ограничений целостности.
Так что будем считать, что проблема проектирования реляционной базы данных состоит в обоснованном принятии решений о том,
из каких отношений должна состоять БД и
какие атрибуты должны быть у этих отношений.
Аномалии включения и удаления данных
Функциональные зависимости
Наиболее важные с практической точки зрения нормальные формы отношений основываются на фундаментальном в теории реляционных баз данных понятии функциональной зависимости. Для дальнейшего изложения нам потребуется несколько определений и утверждений (по ходу изложения мы будем пояснять их и иллюстрировать).
