Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2 / ПиОБД / ЛекцииБД

.doc
Скачиваний:
26
Добавлен:
06.02.2016
Размер:
446.46 Кб
Скачать

Пользователи – лица, обладающие доступом к БД

Роли позволяют объединять пользователей в группы

6) Физическая структура базы данных Физически база данных SQL Server 2000 хранится в самостоятельном, уникальном для каждой БД наборе файлов. Журнал транзакций и сами данные обязательно хранятся отдельно. Это повышает отказоустойчивость базы данных в случае сбоев системы. ^ Файлы данных и группы файлов Для хранения базы данных предназначен набор файлов, персональный для любой базы данных. Каждый файл может принадлежать только одной базе данных. В SQL Server 2000 существует два типа файлов базы данных: - файлы данных; - файлы журнала транзакций. Файлы данных (data file) предназначены для хранения информации, находящейся в таблицах базы данных. Кроме того, в этих файлах также размещены процедуры, ограничения, триггеры, индексы и другая информация. В файлы журнала транзакций (transaction log file) SQL Server 2000 записывает информацию о ходе выполнения транзакций. В них размешается информация о состоянии данных перед началом транзакции, о выполняемых изменениях, блокированных ресурсах и другая сопутствующая информация. Любая база данных должна содержать как минимум один файл данных и один файл журнала транзакций, т.е. минимальное количество файлов, составляющих базу данных, равно 2. При необходимости администратор может добавлять новые файлы данных или файлы журнала транзакций. Файлы данных бывают двух типов: - Primary File (основной, или главный, файл); - Secondary File (вторичный, или дополнительный, файл). Каждая база данных имеет один и только один основной или главный файл (Primary File). Если база данных включает в себя только один файл данных, то этот файл будет основным. Основной файл предназначен для хранения всех системных таблиц, присутствующих в любой базе данных. В основном файле хранится информация о структуре базы данных, созданных в ней объектах, параметрах дополнительных файлов и файлов журнала транзакций. По умолчанию основному файлу базы данных присваивается расширение mdf (Master Data File). В отличие от основного файла база данных может содержать множество вторичных или дополнительных файлов (Secondary File) или не содержать их вовсе. В дополнительных файлах может храниться только пользовательская информация. Хранение любой системной информации не допускается. В ходе эксплуатации базы данных администратор может добавлять новые или удалять уже существующие дополнительные файлы. Файлы журнала транзакций бывают только одного типа – Transaction Log File, служащего для хранения журнала транзакций. В базе данных должен быть как минимум один файл журнала транзакций. Для ускорения обработки транзакций можно использовать несколько журналов транзакций, расположенных на разных физических дисках. Для каждого файла базы данных можно задать свойство автоматического роста и шаг прироста в мегабайтах или в процентах от первоначального роста, а также максимальный размер, до которого возможен рост файла. Каждый файл, используемый в базе данных, имеет два имени: - Logical File Name – логическое имя файла, которое используется в командах Transact-SQL при ссылке на конкретный файл; - OS File Name – имя файла в операционной системе, которое используется для обращения к файлу в операционной системе. Сложные базы данных могут иметь несколько файлов для данных и для журнала транзакций. В этом случае файлы БД объединяются в группы для упрощения администрирования базы данных. SQL Server 2000 обеспечивает создание групп следующих трех типов: - Primary File Group – основная группа файлов, которая включает первичный файл и все файлы, не включенные в другие группы, база данных может иметь только одну основную группу файлов; - User-defined File Group – пользовательская группа файлов, создаваемая командой CREATE DATEBASE или командой ALTER DATABASE, если в них используется параметр FILEGROUP, в базе данных можно создать несколько пользовательских групп файлов с произвольным набором файлов; - Default File Group – группа файлов по умолчанию, в качестве которой назначается одна из групп файлов, созданных в базе данных. Только одна группа файлов может быть группой по умолчанию. Если не указано явно, группой по умолчанию становится основная группа. Если при создании объекта базы данных не указано явно, к какой группе файлов он будет принадлежать, то этот объект создается в группе файлов по умолчанию. Когда какие-то данные записываются в группу файлов, они распределяются между файлами этой группы равномерно, т.е. производится распараллеливание записи данных. Для этих целей можно использовать и возможности файловой системы NTFS: чередующийся набор дисков с контролем четности и без него. Любая группа файлов, в том числе и основная, может быть установлена в режим только для чтения, что позволяет защитить данные, записанные на файлы этой группы. ^ 7) Структурная часть реляционной модели Хотя понятие реляционной модели данных первым ввел основоположник реляционного подхода Эдгар Кодд, наиболее распространенная трактовка реляционной модели данных принадлежит известному популяризатору идей Кодда Кристоферу Дейту Согласно трактовке Дейта, реляционная модель состоит из трех частей, описывающих разные аспекты реляционного подхода: - структурной части, - манипуляционной части, - целостной части. ^ В структурной части модели фиксируется, что единственной структурой данных, используемой в реляционных БД, является нормализованное n-арное отношение. Определяются понятия доменов, атрибутов, кортежей, заголовка, тела и переменной отношения. Домен определяется заданием некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выражения, применяемого к элементу типа данных. Если вычисление этого логического выражения дает результат "истина", то элемент данных является элементом домена.  Наиболее правильной интуитивной трактовкой понятия домена является понимание домена как допустимого потенциального множества значений данного типа.  ^ Схема отношения - это именованное множество пар {имя атрибута, имя домена (или типа, если понятие домена не поддерживается)}.  Степень или "арность" схемы отношения - мощность этого множества. Степень отношения СОТРУДНИКИ равна четырем, то есть оно является 4-арным.  Схема БД (в структурном смысле) - это набор именованных схем отношений. Кортеж, соответствующий данной схеме отношения, - это множество пар {имя атрибута, значение}, которое содержит одно вхождение каждого имени атрибута, принадлежащего схеме отношения.  ^ Кортеж - это набор именованных значений заданного типа.  Отношение - это множество кортежей, соответствующих одной схеме отношения (аналог – таблица).  ^ 8) Фундаментальные свойства отношений Отношение - это множество кортежей, соответствующих одной схеме отношения (аналог – таблица).  Фундаментальные свойства отношений: 1. Отсутствие кортежей-дубликатов То свойство, что отношения не содержат кортежей-дубликатов, следует из определения отношения как множества кортежей. В классической теории множеств по определению каждое множество состоит из различных элементов. Из этого свойства вытекает наличие у каждого отношения так называемого первичного ключа - набора атрибутов, значения которых однозначно определяют кортеж отношения (минимальный набор атрибутов). Для каждого отношения по крайней мере полный набор его атрибутов обладает этим свойством.  2. Отсутствие упорядоченности кортежей Отсутствие требования к поддержанию порядка на множестве кортежей отношения дает дополнительную гибкость СУБД при хранении баз данных во внешней памяти и при выполнении запросов к базе данных.  Это не противоречит тому, что при формулировании запроса к БД, например, на языке SQL можно потребовать сортировки результирующей таблицы в соответствии со значениями некоторых столбцов. Такой результат, вообще говоря, не отношение, а некоторый упорядоченный список кортежей.  3. Отсутствие упорядоченности атрибутов Атрибуты отношений не упорядочены, поскольку по определению схема отношения есть множество пар {имя атрибута, имя домена}.  Для ссылки на значение атрибута в кортеже отношения всегда используется имя атрибута. Это свойство теоретически позволяет, например, модифицировать схемы существующих отношений не только путем добавления новых атрибутов, но и путем удаления существующих атрибутов.  4. Атомарность значений атрибутов Значения всех атрибутов являются атомарными. Это следует из определения домена как потенциального множества значений простого типа данных, т.е. среди значений домена не могут содержаться множества значений (отношения).  ^ 9) Реляционная алгебра Кодда Реляционная алгебра Кодда включает в себя теоретико-множественные операторы и специальные реляционные операторы. Теоретико-множественные операторы 1. Объединение – отношение с тем же заголовком, что и у совместимых по типу отношений A и B, и телом, состоящим из кортежей, принадлежащих или A, или B, или обоим отношениям. (A UNION B) 2. Пересечение - отношение с тем же заголовком, что и у отношений A и B, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям A и B. (A INTERSECT B) 3. Вычитание - отношение с тем же заголовком, что и у совместимых по типу отношений A и B, и телом, состоящим из кортежей, принадлежащих отношению A и не принадлежащих отношению B. (A MINUS B) 4. Декартово произведение отношение (A1, A2, …, Am, B1, B2, …, Bm), заголовок которого является сцеплением заголовков отношений A(A1, A2, …, Am) и B(B1, B2, …, Bm), а тело состоит из кортежей, являющихся сцеплением кортежей отношений A и B: (a1, a2, …, am, b1, b2, …, bm), таких, что (a1, a2, …, am)∈ A, (b1, b2, …, bm)∈ B. Т.е. каждый кортеж первого отношения объединяется с каждым кортежем второго отношения. (A TIMES B) ^ Специальные реляционные операторы 1. Ограничение (выборка) - отношение с тем же заголовком, что и у отношения A, и телом, состоящим из кортежей, значения атрибутов которых удовлетворяет некому условию С. С представляет собой логическое выражение, в которое могут входить атрибуты отношения A и/или скалярные выражения. (A WHERE С) 2. Проекция – отношение, кортежи которого являются соответствующими подмножествами отношения операнда. Отношение с заголовком (X, Y, …, Z) и телом, содержащим множество кортежей вида (x, y, …, z), таких, для которых в отношении A найдутся кортежи со значением атрибута X равным x, значением атрибута Y равным y, …, значением атрибута Z равным z. При выполнении проекции выделяется «вертикальная» вырезка отношения-операнда с естественным уничтожением потенциально возникающих кортежей-дубликатов. A[X, Y, …, Z] или PROJECT A {x, y, …, z} 3. Соединение – отношение, кортежи которого производятся путем объединения кортежей первого и второго отношения и удовлетворяют некому условию. ((A TIMES B) WHERE С = A JOIN B WHERE С Соединение – есть результат последовательного применения операций декартового произведения и выборки. Если в отношениях и имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать. 4. Реляционное деление - отношение с заголовком (X1, X2, …, Xn) и телом, содержащим множество кортежей (x1, x2, …, xn), таких, что для всех кортежей (y1, y2, …, ym) ∈ B в отношении A(X1, X2, …, Xn, Y1, Y2, …, Ym) найдется кортеж (x1, x2, …, xn, y1, y2, …, ym). (A DIVIDEBY B) ^ Зависимость реляционных операторов Не все реляционные операторы являются независимыми, то есть некоторые из реляционных операторов могут быть выражены через другие реляционные операторы. ^ 1. Оператор соединения Оператор соединения определяется через операторы декартового произведения и выборки следующим образом: (A TIMES B) WHERE X=Y где X и Y атрибуты соответственно отношений A и B с первоначально равными именами. ^ 2. Оператор пересечения Оператор пересечения выражается через вычитание следующим образом: A INTERSECT B = A MINUS (A MINUS B) 3. Оператор деления Оператор деления выражается через операторы вычитания, декартового произведения и проекции следующим образом: A DIVIDEBY B = A[X] MINUS ((A[X] TIMES B) MINUS A)[X] ^ Примитивные реляционные операторы Оставшиеся реляционные операторы (объединение, вычитание, декартово произведение, выборка, проекция) являются примитивными операторами — их нельзя выразить друг через друга. ^ 1. Оператор декартового произведения Оператор декартового произведения — это единственный оператор, увеличивающий количество атрибутов, поэтому его нельзя выразить через объединение, вычитание, выборку, проекцию. ^ 2. Оператор проекции Оператор проекции — единственный оператор, уменьшающий количество атрибутов, поэтому его нельзя выразить через объединение, вычитание, декартово произведение, выборку. ^ 3. Оператор выборки Оператор выборки — единственный оператор, позволяющий проводить сравнения по атрибутам отношения, поэтому его нельзя выразить через объединение, вычитание, декартово произведение, проекцию. ^ 4. Операторы объединения и вычитания 10) Целостность реляционных данных, стратегии поддержания ссылочной целостности Целостность реляционных данных фиксирует два базовых требования целостности: - требование целостности сущности - требование целостности внешних ключей ^ Целостность сущности У любой переменной отношения должен существовать первичный ключ, и никакое значение первичного ключа в кортежах значения-отношения переменной отношения не должно содержать неопределенных значений (NULL). Неопределенное значение не принадлежит никакому типу данных и может присутствовать среди значений любого атрибута, определенного на любом типе данных (если это явно не запрещено при определении атрибута). Таким образом, требование означает, что первичный ключ должен полностью идентифицировать каждую сущность, а поэтому в составе любого значения первичного ключа не допускается наличие неопределенных значений.  ^ Правило целостности внешних ключей Внешние ключи не должны быть несогласованными, т.е. для каждого значения внешнего ключа должно существовать соответствующее значение первичного ключа в родительском отношении.  Ссылочная целостность может нарушиться в результате операций, изменяющих состояние базы данных. Таких операций три: - вставка - обновление  - удаление кортежей в отношениях.  Т.к. в определении ссылочной целостности участвуют два отношения - родительское и дочернее, а в каждом из них возможны три операции, то нужно рассмотреть шесть различных вариантов.  ^ Для родительского отношения: 1. Вставка кортежа в родительском отношении. При вставке кортежа в родительское отношение возникает новое значение потенциального ключа. Т.к. допустимо существование кортежей в родительском отношении, на которые нет ссылок из дочернего отношения, то вставка кортежей в родительское отношение не нарушает ссылочной целостности.  2. Обновление кортежа в родительском отношении. При обновлении кортежа в родительском отношении может измениться значение потенциального ключа. Если есть кортежи в дочернем отношении, ссылающиеся на обновляемый кортеж, то значения их внешних ключей станут некорректными. Обновление кортежа в родительском отношении может привести к нарушению ссылочной целостности, если это обновление затрагивает значение потенциального ключа.  3. Удаление кортежа в родительском отношении. При удалении кортежа в родительском отношении удаляется значение потенциального ключа. Если есть кортежи в дочернем отношении, ссылающиеся на удаляемый кортеж, то значения их внешних ключей станут некорректными. Удаление кортежей в родительском отношении может привести к нарушению ссылочной целостности.  ^ Для дочернего отношения: 1. Вставка кортежа в дочернее отношение. Нельзя вставить кортеж в дочернее отношение, если вставляемое значение внешнего ключа некорректно. Вставка кортежа в дочернее отношение привести к нарушению ссылочной целостности.  2. Обновление кортежа в дочернем отношении. При обновлении кортежа в дочернем отношении можно попытаться некорректно изменить значение внешнего ключа. Обновление кортежа в дочернем отношении может привести к нарушению ссылочной целостности.  3. Удаление кортежа в дочернем отношении. При удалении кортежа в дочернем отношении ссылочная целостность не нарушается. Таким образом, ссылочная целостность в принципе может быть нарушена при выполнении одной из четырех операций:  1. Обновление кортежа в родительском отношении.  2. Удаление кортежа в родительском отношении.  3. Вставка кортежа в дочернее отношение.  4. Обновление кортежа в дочернем отношении.  Существуют две основные стратегии поддержания ссылочной целостности:  ^ RESTRICT (ОГРАНИЧИТЬ) - не разрешать выполнение операции, приводящей к нарушению ссылочной целостности.  CASCADE (КАСКАДИРОВАТЬ) - разрешить выполнение требуемой операции, но внести при этом необходимые поправки в других отношениях так, чтобы не допустить нарушения ссылочной целостности и сохранить все имеющиеся связи. Изменение начинается в родительском отношении и каскадно выполняется в дочернем отношении.  Эти стратегии являются стандартными и присутствуют во всех СУБД, в которых имеется поддержка ссылочной целостности.  Дополнительные стратегии: ^ SET NULL (УСТАНОВИТЬ В NULL) - разрешить выполнение требуемой операции, но все возникающие некорректные значения внешних ключей изменять на null-значения.  SET DEFAULT (УСТАНОВИТЬ ПО УМОЛЧАНИЮ) - разрешить выполнение требуемой операции, но все возникающие некорректные значения внешних ключей изменять на некоторое значение, принятое по умолчанию.  ^ IGNORE (ИГНОРИРОВАТЬ) - выполнять операции, не обращая внимания на нарушения ссылочной целостности.  11) Этапы разработки БД При разработке базы данных обычно выделяется несколько уровней моделирования, при помощи которых происходит переход от предметной области к конкретной реализации базы данных средствами конкретной СУБД. Можно выделить следующие уровни:  1. Сама предметная область  2. Модель предметной области  3. Логическая модель данных  4. Физическая модель данных  5. Собственно база данных и приложения  Предметная область - это часть реального мира, данные о которой мы хотим отразить в базе данных.  Предметная область бесконечна и содержит как существенно важные понятия и данные, так и малозначащие или вообще не значащие данные. Таким образом, важность данных зависит от выбора предметной области.  ^ Модель предметной области - это наши знания о предметной области. Знания могут быть как в виде неформальных знаний в мыслях эксперта, так и выражены формально при помощи каких-либо средств.  В качестве таких средств могут выступать текстовые описания предметной области, наборы должностных инструкций, правила ведения дел в компании и т.п. Опыт показывает, что текстовый способ представления модели предметной области крайне неэффективен. Более эффективны описания предметной области, выполненные при помощи специализированных графических нотаций. Одной из методик описания предметной области является методика объектно-ориентированного анализа UML. Модель предметной области описывает скорее процессы, происходящие в предметной области и данные, используемые этими процессами.  От того, насколько правильно смоделирована предметная область, зависит успех дальнейшей разработки приложений.  ^ Логическая модель описывает понятия предметной области, их взаимосвязь, а также ограничения на данные, налагаемые предметной областью.  Логическая модель данных является начальным прототипом будущей базы данных.  Логическая модель строится в терминах информационных единиц, но без привязки к конкретной СУБД.  Логическая модель данных необязательно должна быть выражена средствами именно реляционной модели данных. Основным средством разработки логической модели данных в настоящий момент являются различные варианты ER-диаграмм (Entity-Relationship, диаграммы сущность-связь).  ^ Физическая модель данных описывает данные средствами конкретной СУБД.  Отношения, разработанные на стадии формирования логической модели данных, преобразуются в таблицы, атрибуты становятся столбцами таблиц, для ключевых атрибутов создаются уникальные индексы, домены преображаются в типы данных, принятые в конкретной СУБД.  Ограничения, имеющиеся в логической модели данных, реализуются различными средствами СУБД. При этом решения, принятые на уровне логического моделирования определяют некоторые границы, в пределах которых можно развивать физическую модель данных.  ^ 12) Нормальные формы отношений Нормальная форма — свойство отношения в реляционной модели данных, характеризующее его с точки зрения избыточности, которая потенциально может привести к логически ошибочным результатам выборки или изменения данных. Нормальная форма определяется как совокупность требований, которым должно удовлетворять отношение. Процесс преобразования базы данных к виду, отвечающему нормальным формам, называется нормализацией. Нормализация предназначена для приведения структуры базы данных к виду, обеспечивающему минимальную избыточность, то есть нормализация не имеет целью уменьшение или увеличение производительности работы или же уменьшение или увеличение объёма БД. Конечной целью нормализации является уменьшение потенциальной противоречивости хранимой в БД информации. Устранение избыточности производится, как правило, за счёт декомпозиции отношений таким образом, чтобы в каждом отношении хранились только первичные факты (то есть факты, не выводимые из других хранимых фактов). ^ Функциональные зависимости Для правильного проектирования модели данных применяется метод нормализации отношений. Нормализация основана на понятии функциональной зависимости атрибутов отношения.  Пусть R - отношение. Множество атрибутов Y функционально зависимо от множества атрибутов X (X функционально определяет Y) тогда и только тогда, когда для любого состояния отношения R для любых кортежей r1,r2R из того, что r1X=r2X следует что r1Y=r2YY (т.е. во всех кортежах, имеющих одинаковые значения атрибутов X, значения атрибутов Y также совпадают в любом состоянии отношения R). Символически функциональная зависимость записывается X Множество атрибутов X называется детерминантом функциональной зависимости, а множество атрибутов Y называется зависимой частью. Замечание. Если атрибуты X составляют потенциальный ключ отношения R, то любой атрибут отношения R функционально зависит от X.  Замечание. Функциональные зависимости отражают взаимосвязи, обнаруженные между объектами предметной области и являются дополнительными ограничениями, определяемыми предметной областью. Таким образом, функциональная зависимость - семантическое понятие. Она возникает, когда по значениям одних данных в предметной области можно определить значения других данных. Например, зная табельный номер сотрудника, можно определить его фамилию, по номеру отдела можно определить телефона.  ^ Типы нормальных форм Первая нормальная форма (1НФ) - это обычное отношение. Любое отношение автоматически уже находится в 1НФ.  Свойства отношений (это и будут свойства 1НФ):  - в отношении нет одинаковых кортежей.  - кортежи не упорядочены.  - атрибуты не упорядочены и различаются по наименованию.  - все значения атрибутов атомарны.  ^ Вторая нормальная форма (2НФ) Отношение находится во второй нормальной форме (2НФ) тогда и только тогда, когда отношение находится в 1НФ и нет неключевых атрибутов, зависящих от части сложного ключа.  Неключевой атрибут - это атрибут, не входящий в состав никакого потенциального ключа.  Замечание. Если потенциальный ключ отношения является простым, то отношение автоматически находится в 2НФ.  Для устранения функциональной зависимости атрибута от части сложного ключа производят декомпозицию отношений на несколько. Те атрибуты, которые зависят от части сложного ключа выносятся в отдельное отношение. ^ Третья нормальная форма (3НФ) Отношение находится в третьей нормальной форме (3НФ) тогда и только тогда, когда отношение находится в 2НФ и все неключевые атрибуты взаимно независимы.  Атрибуты называются взаимно независимыми, если ни один из них не является функционально зависимым от другого.  Нормализация: неключевые атрибуты, которые являются зависимыми, выносятся в отдельное отношение. ^ Нормальная форма Бойса-Кодда (BCNF) Отношение находится в нормальной форме Бойса-Кодда, если оно находится в третьей нормальной форме и каждый детерминант отношения является потенциальными ключами отношения (отсутствуют функциональные зависимости атрибутов первичного ключа от неключевых атрибутов.) ^ Четвертая нормальная форма (4НФ) Многозначные зависимости – случаи, когда одному значению некоторого атрибута устойчиво соответствует постоянное множество значений другого атрибута.  Отношение находится в 4НФ, если она находится в BCNF и не содержит нетривиальных многозначных зависимостей, то есть, отношение находится в 4NF, если все ее многозначные зависимости являются функциональными. ^ Пятая нормальная форма (5НФ) Отношение находится в 5НФ только в том случае, если оно находится в 4НФ и если любая зависимость соединения в отношении следует из существования некоторого потенциального ключа в отношении. ^ Алгоритм нормализации Шаг 1 (Приведение к 1НФ). На первом шаге задается одно или несколько отношений, отображающих понятия предметной области. По модели предметной области (не по внешнему виду полученных отношений!) выписываются обнаруженные функциональные зависимости. Все отношения автоматически находятся в 1НФ.  ^ Шаг 2 (Приведение к 2НФ). Если в некоторых отношениях обнаружена зависимость атрибутов от части сложного ключа, то проводим декомпозицию этих отношений на несколько отношений следующим образом: те атрибуты, которые зависят от части сложного ключа выносятся в отдельное отношение вместе с этой частью ключа. В исходном отношении остаются все ключевые атрибуты ^ Шаг 3 (Приведение к 3НФ). Если в некоторых отношениях обнаружена зависимость некоторых неключевых атрибутов других неключевых атрибутов, то проводим декомпозицию этих отношений следующим образом: те неключевые атрибуты, которые зависят других неключевых атрибутов выносятся в отдельное отношение. В новом отношении ключом становится детерминант функциональной зависимости ^ 13) Модель сущность-связь Сущность – множество экземпляров реальных или абстрактных объектов, обладающих общими атрибутами или характеристиками. Сущность – класс однотипных объектов. Атрибут сущности – именованная характеристика, являющаяся некоторым свойством сущности. ^ Ключ сущности – неизбыточный набор атрибутов, значения которых в совокупности являются уникальными для каждого экземпляра сущности. Связь – некоторая ассоциация между двумя сущностями: - один-к-одному - один-ко-многим -много-ко-многим ^ Модальности связи: - может  - должен  Модель Сущность-Связь (ER-модель) (англ. entity-relationship model или entity-relationship diagram) — это модель данных, позволяющая описывать концептуальные схемы. Она предоставляет графическую нотацию, основанную на блоках и соединяющих их линиях, с помощью которых можно описывать объекты и отношения между ними какой-либо другой модели данных. В этом смысле ER-модель является средством описания моделей данных. ER-модель удобна при прототипировании (проектировании) информационных систем, баз данных, архитектур компьютерных приложений, и других систем (далее, моделей). С её помощью можно выделить ключевые сущности, присутствующие в модели, и обозначить отношения, которые могут устанавливаться между этими сущностями. Важно отметить, что сами отношения также являются сущностями (выделяются в отдельные графические блоки), что позволяет устанавливать отношения на множестве самих отношений. ER-модель является одной из самых простых визуальных моделей данных (графических нотаций). Она позволяет обозначить структуру «крупными мазками», в общих чертах. Это общее описание структуры называется ER-диаграммой или онтологией выбранной предметной области (area of interest). На этапе перехода к реализации данной ER-диаграммы в виде реальной информационной системы или программы, происходит отображение ER-модели в более детальную модель данных реляционной (объектной, сетевой, логической, или др.) базы данных, которая называется физической моделью данных по отношению к исходной ER-диаграмме. Существует несколько графических нотаций описания ER-диаграм (несколько похожих ER-моделей данных). Есть несколько типичных примеров использования ER-модели данных: IDEF1x (ICAM DEFinition Language) и dimensional modelling.-0 ^ 14) Технология "клиент-сервер" В сфере обработки данных сегодня существует множество противоречий в вопросах реализации архитектуры приложения, взаимодействующего с базой данных. У каждого может существовать собственное мнение идея о наилучшей архитектуре для всех существующих систем. Какая-либо определенная архитектура может быть идеальной только для конкретной задачи.  Не возможно найти единственное правильное решение для всех возможных систем.  Существует три группы сервисов: User Services (Сервисы пользователя). Как правило, эти сервисы отвечают за пользовательский интерфейс, базисное форматирование и правила полей. Сервисы пользователя могут поддерживать, например, корректное форматирование даты: определять соответствующее поле как поле даты и проверять то, что каждое заносимое в это поле значение является датой. В принципе, основное назначение пользовательских сервисов - это управление способом представления каждого поля и проверка, по крайней мере, его типа данных. ^ Business Services (Бизнес-сервисы). Это группа отвечает за различные бизнес-правила. Примером бизнес-сервисов, может быть сервис, который связывается с компанией кредитной карты клиента, чтобы подтвердить покупку по кредитной карте.  ^ Data services (Сервисы данных). Все сервисы данного типа отвечают за хранение и поиск данных. Сервисы данных следят за выполнением правил целостности данных (например, объем товарно-материальных запасов не может быть меньше нуля), но в то же время не обращают внимания на то, откуда пришло подтверждение кредитной карты. (Здесь и находится SQL Server.)  ^ Одноуровневые (хост) системы Это старая архитектура на основе универсальной машины (мэйнфрейма). В данной архитектуре все три группы сервисов выполняются в одном месте. В таких системах на рабочем столе находился только терминал, то есть фактически не было локальных вычислительных средств. На терминал пересылалась только выходная информация, которая включала данные для изображения на экране. Преимущества: - не требует высокой пропускной способности сети для хорошей скорости ответа, что является положительным фактором для международных или глобальных сетей, в которых высокая пропускная способность обходится очень дорого - такие системы обладают исключительной надежностью. Можно найти универсальные машины, которые не имели ни одного сбоя в течение нескольких лет - очень легко устанавливать новое программное обеспечение. Его необходимо установить только на хост-системе и каждый пользователь будет иметь новую версию без переустановки на каждой локальной машине. Недостатки: - очень дорогое аппаратное обеспечение.  - передача информации от одной системы к другой часто является трудной задачей, так как форматы данных таких систем, как правило, запатентованы. - очень ограничено количество уже готовых к использованию пакетов программного обеспечения. Стоимость таких пакетов очень высокая в связи с ограниченным количеством потенциальных покупателей. ^ Двухуровневая архитектура (клиент-сервер) Клиент-сервер (англ. Client-server) — сетевая архитектура, в которой устройства являются либо клиентами, либо серверами.  Клиентом (front end) является запрашивающая машина (обычно ПК), сервером (back end) — машина, которая отвечает на запрос. Оба термина (клиент и сервер) могут применяться как к физическим устройствам, так и к программному обеспечению. Двухуровневые или клиент-серверные системы начали завоевывать популярность в начале 90-х.  Технология клиент-сервер означает такой способ взаимодействия программных компонентов, при котором они образуют единую систему.  Как видно из самого названия, существует некий клиентский процесс, требующий определенных ресурсов, а также серверный процесс, эти ресурсы предоставляющий. Совсем необязательно, чтобы они находились на одном компьютере. Обычно принято размещать сервер на одном узле локальной сети, а клиентов – на других узлах. Существовали две разновидности такой архитектуры: - клиентоцентрическая (Client-centric - разумный клиент)  - сервероцентрическая (server-centric — разумный сервер). ^ Клиентоцентрическая версия клиент-серверной архитектуры была основана на двух основных посылках: - персональные компьютеры достаточно дешевы (это явилось основной движущей силой развития клиент-серверной технологии); - максимальная мощность достигается путем максимального распределения необходимых вычислений. В такой системе на сервере по возможности исполнялись только сервисы данных. А бизнес-сервисы и пользовательский интерфейс исполнялись наклиенте. Таким образом, объем работы распределялся между клиентом и сервером. Каждый компьютер делал свою долю. Преимущества: - распределяет объем работы между большим количеством сравнительно дешевых клиентов. - если одному из пользователей нужна большая скорость, есть возможность приобрести для него более мощную систему. Это значительно легче, чем покупать большую дорогую хост-систему, мощность которой разделится между всеми клиентами. - при вложении средств в увеличение вычислительной мощности клиента увеличивается мощность и других его программных средств, таких как текстовый процессор и редактор таблиц. Недостатки: - наибольшей проблемой клиентоцентрической архитектуры является ее пропускная способность. Если вся бизнес-логика находится на клиенте, то, скорей всего, трафик между клиентом и сервером будет достаточно большим. Клиенту посылается много необработанной информации, что очень быстро засоряет сеть и снижает скорость работы всех остальных клиентов.  - инсталляция занимает много времени и очень сложна. Новое программное обеспечение или его новая версия должны быть установлены на все машины. Обновление версий может быть достаточно проблематичным из-за того, что старые клиенты не всегда совместимы с новыми компонентами сервера и наоборот. Достаточно серьезные проблемы могут быть связаны с тем, что все клиенты должны обновляться одновременно. - каждый клиент, в зависимости от его поставщика, может нуждаться в отдельной лицензии для каждого местонахождения или подключения. Это может увеличить стоимость. ^ Сервероцентрическая архитектура основана на той посылке, что вычислительная мощность персональных компьютеров дешевле хост-системы, однако в то же время сделана попытка получить некоторые преимущества от централизации. ^ На клиенте работают только пользовательские сервисы. По существу, клиенту передается только та информация, которая будет выводиться на экран.  Бизнес-сервисы и сервисы данных выполняются на сервере. Загруженность сети у такой архитектуры почти такая же, как у обычных хост-систем. Преимущества: - некоторые обновления можно делать непосредственно на сервере. - доступно большое количество уже готовых программных продуктов, причем готовое программное обеспечение стоит дешево. - так как по сети пересылается только та информация, которую нужно отображать на экране, трафик в такой системе меньше по сравнению с клиентоцентрической архитектурой. Недостатки: - многие обновления все еще требуют непосредственной работы с каждым клиентом, очень утомительно и трудно (с точки зрения учета и контроля) обновлять и устанавливать новое программное обеспечение. - продолжительные и трудоемкие задания одного из клиентов влияют на возможность использования ресурсов сервера всеми остальными клиентами. - цена больших серверов растет экспоненциально. Некоторые из них сравнимы по цене с хост-системами. ^ Трехуровневая архитектура Трехуровневая модель и близкая ей N-уровневая являются наиболее перспективными на сегодняшний день.  В этой модели все три уровня сервисов рассматриваются как разделенные и логически независимые. Клиенты отвечают только за пользовательский интерфейс, так же как это имеет место в сервероцентрической клиент-серверной модели.  Отличие состоит в том, что бизнес-сервисы и сервисы данных тоже логически разделены.  Такое представление делает независимыми друг от друга логическую и физическую модели. Преимущества: - некоторые обновления могут быть сделаны непосредственно на сервере. - доступно большое количество уже готовых программных продуктов, а готовое программное обеспечение стоит значительно дешевле. - так как по сети пересылается только та информация, которую необходимо отображаться на экране, то трафик сети в таких системах намного меньше по сравнению с клиентоцентрической моделью. Хотя, если системы бизнес-логики и сервисов данных находятся на разных серверах, загруженность сети между ними может быть достаточно большой. - предусматривается (фактически поощряется) разработка систем на основе компонентов, что может увеличить степень повторного использования. - два средних сервера, как правило, дешевле, чем один большой. Разделение бизнес-сервисов и сервисов данных делает возможным выбор между одним или двумя серверами. Недостатки: - многие обновления все еще предполагают непосредственную работу с каждым клиентом, поэтому обновление и установка нового программного обеспечения трудоемки и требуют тщательного учета. - возникает острая необходимость в системе безопасности и инфраструктуре.  - неработоспособность сервера может сделать неработоспособной сеть. - администрирование данной системы требует квалифицированного профессионала. - высокая стоимость оборудования. ^ 15) Обзор MS SQL Server, клиентские приложения, системные таблицы SQL-сервер - сервер для управления реляционными БД.  Microsoft SQL Server 2000 - это система управления базами данных и анализа, предназначенная для быстрой разработки современных масштабируемых бизнес-приложений, систем электронной коммерции и информационных хранилищ; мощная СУБД, в полной мере отвечающая потребностям современных сложных систем типа клиент/сервер. Масштабируемость Механизм баз данных SQL Server представляет собой надежный сервер, способный управлять базами данных терабайтного объема, к которым одновременно обращаются тысячи пользователей. В то же время при работе с параметрами по умолчанию SQL Server 2000 поддерживает такие функции, как динамическая самонастройка, что позволяет не обременять пользователей решением административных задач. Именно эта возможность делает его чрезвычайно привлекательным для применения в настольных системах.  В сервер SQL Server 2000 включена поддержка языка XML и протокола HTTP, средства повышения быстродействия и доступности, позволяющие распределить нагрузку и обеспечить бесперебойную работу, функции для улучшения управления и настройки, снижающие совокупную стоимость владения.  Кроме того, SQL Server 2000 полностью использует все возможности операционной системы Windows 2000, включая поддержку до 32 процессоров и 64 ГБ ОЗУ. SQL Server 2000 работает с базами данных в OLTP-окружении (on-line transaction processing – оперативная обработка транзакций) и в окружении OLAP(on- line analytical processing аналитическая обработка в реальном времени) Существует семь различных редакций сервера SQL 2000: - Enterprise Edition – эта редакция является полной версией сервера SQL. - Standard Edition – эта редакция разработана для малых и средних предприятий.  - Personal Edition – эта редакция основывается на Standard Edition, но оптимизирована для индивидуального использования.  - Developer Edition -такая же как Enterprise Edition, только имеет ограниченную лицензию, которая не может быть использована в производственных средах. - Enterprise Evaluation Edition – такая же как Enterprise Edition, но имеющая лицензию для «демонстрации, тестирования, изучения и оценки» и имеет 120-дневное ограничение использования. - Windows CE Edition – эта редакция разработана для использования на устройствах, работающих под Windows CE. - Desktop Engine (MSDE) – эта редакция представляет из себя только процессор базы данных сервера SQL 2000.  Службы SQL Server  ^ 1. MSSQL Server Service - управление базами данных, обработка транзакций и запросов, обеспечение целостности данных. 2. SQLServerAgent Service - выполнение заданий по расписанию, создание и управление предупреждений (alerts) b операторов. ^ 3. Microsoft Distributed Transaction Coordinator (координатор распределенных транзакций) управление распределенными транзакциями. 4. Microsoft Search - полнотекстовый поиск Визуальные средства администрирования: 1. SQL Server Service Manager - диспетчер служб SQL Server ^ 2. SQL Server Enterprise Manager - позволяет управлять несколькими серверами баз данных с помощью одного интерфейса 3. SQL Query Analyzer (координатор распределенных транзакций) управление распределенными транзакциями. ^ 4. SQL Server Network Utility позволяет конфигурировать подключения в клиентской части, узнать версию используемых сетевых библиотек 5. SQL Profiler – графическое средство отображения активности выбранного сервера. Сопутствующие продукты SQL Server ^ 1. Microsoft English Query - инструмент, позволяющий преобразовать фразу на английском языке в набор операторов SQL. 2. Службы анализа данных позволяют создать базы данных OLAP, используемые для выполнения многомерного анализа информации. ^ 3. Утилиты командной строки  BCP программа массового копирования ISQL – позволяет выполнять запросы с командной строки (использует DB-library для взаимодействия SQL Server) OSQL – позволяет выполнять запросы с командной строки (использует ODBC для взаимодействия SQL Server) ^ Типы баз данных в SQL Server В процессе установки SQL Server создаются системные базы данных master, model, tempdb, msdb, distribution и двепользовательские базы данных в качестве примера Northwind и pubs. 1. Master содержит специальный набор системных таблиц, которые отслеживают целиком всю систему 2. Model является моделью, по которой создается новая база данных 3. Tempdb содержит временные объекты  4. Msdb содержит системные задачи SQL Agent 5. Distribution содержит историю и транзакции данных, используемых при репликации  16) Основы языка SQL, типы команд SQL (англ. Structured Query Language — язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных.  SQL основывается на реляционной алгебре. ^ Основные категории команд языка SQL: - DDL (Data Definition Language) – язык определения данных. Основными командами языка DDL являются следующие: CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX, ALTER INDEX, DROP INDEX. - DML (Data Manipulation Language) – язык манипулирования данными. Основными командами языка DML являются следующие: INSERT, UPDATE, DELETE.  - DQL (Data Query Language) – язык запросов. Единственная команда языка DQL: SELECT.  - DCL – язык управления данными. Команды управления данными следующие: GRANT, REVOKE - команды администрирования данных. С помощью команд администрирования данных пользователь осуществляет контроль за выполняемыми действиями и анализирует операции базы данных; они также могут оказаться полезными при анализе производительности системы.  - команды управления транзакциями. Существуют следующие команды, позволяющие управлять транзакциями базы данных: COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION. ^ Запись SQL-операторов Оператор SQL состоит из зарезервированных слов, а также из слов, определяемых пользователем.  Зарезервированные слова являются постоянной частью языка SQL и имеют фиксированное значение. Их следует записывать в точности так, как это установлено, нельзя разбивать на части для переноса с одной строки на другую. Слова, определяемые пользователем, задаются им самим (в соответствии с синтаксическими правилами) и представляют собой идентификаторы или имена различных объектов базы данных. Слова в операторе размещаются также в соответствии с установленными синтаксическими правилами. Стандарт SQL задает набор символов, который используется по умолчанию, – он включает строчные и прописные буквы латинского алфавита (A-Z, a-z), цифры (0-9) и символ подчеркивания (_).  На формат идентификатора накладываются следующие ограничения: - идентификатор может иметь длину до 128 символов;  - идентификатор должен начинаться с буквы;  - идентификатор не может содержать пробелы.