Билет №1

Модели представления данных (особенности иерархической, сетевой модели данных)

Хранимые в базе данные имеют определенную логическую структуру- иными словами, описываются некоторой моделью представления данных, поддерживаемой СУБД. К числу классических относятся следующие модели данных: иерархическая, сетевая, реляционная, постреляционная, многомерная, объектно - ориентированная.

Иерархическая – связи между данными можно описывать с помощью упорядоченного графа (или дерева). Представление связей между данными в иерархической модели показано на рис.1

Для описания структуры иерархической БД на некотором языке программирования  используется тип данных «дерево».тип «дерево» является составным. Он включает в себя подтипы, каждый из которых является типом «дерева». Каждый из типов «дерево» состоит из одного «корневого» типа и упорядоченного набора подчиненных типов. каждый из элементарных типов, включенных в тип «дерево», является простым или составным типом «запись». Корневым называется тип, который имеет подчиненные типы и сам не является подтипом. Подчиненный тип является потомком по отношению к типу, который выступает для него в роли предка(родителя).потомки одного и того же типа являются близнецами по отношению друг к другу.  Для организации физического размещения иерарх. данных в памяти ЭВМ могут использоваться следующие группы методов:1. представление линейным списком с последовательным распределением памяти;2.пркдставление связными линейными списками.

Основные операции манипулирования: 1.поиск указанного экземпляра,2.переход от одного дерева к другому;3.переход от одной записи к другой внутри древа; 4.вставка новой записи в указанную позицию;5.удаление текущей записи.

Достоинства модели: эффективное использование памяти ЭВМ, быстродействие выполнения основных операций с данными, удобна для работы с иерархически упорядоченной информацией. Недостатки: громоздкость для обработки информации с достаточно сложными логическими связями, сложность понимания для обычного пользователя.

Сетевая - позволяет отображать разнообразные взаимосвязи элементов данных в виде произвольного графа.(рис.2). для описания схемы сетевой БД используется две группы типов: «запись» и «связь». Тип «связь» определяется для двух типов «запись»: предка и потомка. Переменные типа «связь» являются экземплярами связей. Основные операции манипулирования: 1. поиск записи в БД;2.переход от предка к первому потомку;3.переход от потомка к предку;4.создание новой записи;5.удаление текущей записи;6.боновление текущее записи;7.включение записи в связь;8.исключение записи из связи;9.изменение связей.

Достоинства: эффективная реализация по показателям затрат памяти и оперативности, большие возможности в смысле допустимости образования произвольных связей. Недостатки: высокая сложность и жесткость схемы БД

Реляционная – основывается на понятии отношения. Отношениепредставляет собой множество элементов, называемых кортежами(строками). Наглядной формой представления отношений является двумерная таблица. Достоинства: простота, понятность, удобности физической реализации на ЭВМ. Недостатки: отсутствие стандартных средств идентификации отдельных записей и сложность описания иерархических и сетевых связей.

Постреляционная – представляет собой расширенную реляционная модель, снимающую ограничения неделимости данных. Она допускает многозначные поля, значения которых состоят из под значений. Набор значений многозначных полей считается самостоятельной таблицей, встроенной в основную таблицу. Достоинства: возможность представления совокупности связанных реляционных таблиц одной постреляционной, что обеспечивает высокую наглядность представления информации и повышает эффективность ее обработки. Недостатки: сложность решения проблемы обеспечения целостности и непротиворечивости хранимых данных.

Многомерная – позволяет оперативно обрабатывать информацию для провидения анализа и принятия решений. Многомерность модели данных означает не многомерность визуализации цифровых данных, а многомерное логическое представления структуры информации при описании и в операциях манипулирования данными. Достоинства: удобство и эффективность аналитической обработки больших объемов данных, связанных со временем. Недостатки: громозкость для простейших задач обычной оперативной обработки информации.

Объектно-ориентированная – при представлении данных имеется возможность идентифицировать отдельные записи базы. Между записями БД и функциями их обработки устанавливаются взаимосвязи с помощью механизмов, подобных соответствующим средствам в объектно-ориентированных языках программирования.

Билет №2

Реляционная модель данных: основные элементы и понятия. Индексирование. Понятие и характеристика индексов.

РМД некоторой предметной области представляет собой набор отношений, изменяющихся во времени при создании информационной системы совокупность отношений позволяет хранить данные об объектах в предметной области и моделировать связи между ними.

С помощью одной таблицы удобно описывать простейший вид связи между данными, а именно деление одного объекта, информация о котором хранится в таблице, на множество под объектов, каждому из которых соответствует строка или запись таблицы. При этом каждый из под объектов имеет одинаковую структуру или свойства, описываемые соответствующим значениями полей записей.

Физическое размещение данных в реляционных базах на внешних носителях легко осуществляется с помощью обычных файлов.

Достоинства: простота, понятность, удобности физической реализации на ЭВМ.

 Недостатки: отсутствие стандартных средств идентификации отдельных записей и сложность описания иерархических и сетевых связей.

Элементы РМД:

Отношение- Таблица; Схема отношений- строка заголовков столбцов таблицы;  Кортеж- Строка таблицы; Сущность- описание свойств объекта; Атрибут- Заголовок столбца таблицы; Домен- Множество значений атрибута; значение атрибута- значение поля в записи; первичный ключ- один или несколько атрибутов; тип данных- тип значений элементов таблицы.

Отношениепредставляет собой двумерную таблицу, содержащую некоторые данные.

Таблица имеет строки (записи) и столбцы (колонки). Каждая строка таблицы имеет одинаковую структуру и состоит из полей. Строкам таблицы соответствуют картежи, а столбцам атрибуты отношения.

Сущность- объект любой природы, данные о котором хранятся в БД. Данные о сущности хранятся в отношении.

Атрибуты- представляют собой свойства, характеризующие сущность.

Домен- представляет собой множество всех возможных значений определенного атрибута отношения.

Кортеж-строка таблицы

Схема отношения – представляет собой список имен атрибутов.

Первичным ключом  называется атрибут отношения, однозначно идентифицирующий каждый из его кортежей. Ключ может быть составным, т.е. состоять из нескольких атрибутов.

Под индексом понимают средство ускорения операции поиска записей в таблице, а следовательно, и других операций, использующих поиск: извлечение, модификация, сортировка и т.д. таблицу, для которой используется индекс, называют индексированной. Индекс выполняет роль оглавления таблицы, просмотр которого предшествует обращению к записям таблицы. Варианты решения проблемы организации физического доступа к информации зависят в основном от следующих факторов:1. вида содержимого в поле ключа записей индексного файла;2.типа используемых ссылок на запись основной таблицы;3.метода поиска нужных записей. Индексирование требует небольшого дополнительного места па диске и незначительных затрат процессора на изменение индексов в процессе работы. Индексы в общем случае могут изменяться перед выполнением запросов к БД, после выполнения запросов к БД, по специальным командам пользователя или программным вызовам приложений.

Билет №3

Операции реляционной алгебры: объединение, вычитание, пересечение, произведение, выборка, проекция.

При выполнении бинарной операции участвующие в операциях отношения должны быть совместимы по структуре. совместимость  структур отношений означает совместимость имен атрибутов и типов соответствующих доменов.

Объединением двух совместимых отношений R1 и R2 одинаковой размерности (R1 UNION R2) является отношение R, содержащее все элементы исходных отношений (с исключением повторений).

Вычитание  двух совместимых отношений R1 и R2 одинаковой размерности (R1 MINUS R2) есть отношение, тело которого состоит из множества кортежей принадлежащих R1, но не принадлежащих R2.

Пересечение двух совместимых отношений R1 и R2 одинаковой размерности (R1 INTERSECT R2) порождает отношение R с телом, включающим в себя кортежи, одновременно принадлежащие обоим исходным отношениям.

Произведение отношение R1 степени к1 и отношения R2 степени к2 (R1 TIMES R2), которые не имеют одинаковых имен атрибутов, есть такое отношение R степени (к1+к2), заголовок которого представляет сцепление заголовков отношений R1 и R2, а тело – имеет кортежи, такие, что первые к1элементов кортежей принадлежат множеству R1, а последние к2 элементов – множеству R2.

Выборка (R WHERE f)  отношение R по формуле f представляет собой новое отношение с таким же заголовком и телом, состоящим из таких кортежей отношения R, которые удовлетворяют истинности логического выражения, заданного формулой f.

Проекция отношения А на атрибуты X, Y,...Z(A[X,Y,...Z]), где множество {X, Y,...Z} является подмножеством полного списка атрибутов заголовка отношения А, представляет собой отношение с заголовком X, Y,...Z и телом, содержащим кортежи отношения А, за исключением повторяющихся кортежей.

Результатом деления отношения r1 с атрибутами А и В на отношение R2 с атрибутом В (R1 DIVIDEBY R2), где А и В простые или составные атрибуты, причем атрибут В – общий атрибут, определенный на одном и том же домене, является отношение R с заголовком А и телом, состоящим из кортежей r и таких ,что в отношении R1 имеются кортежи (r,s),причем множество значений s включает множество значений атрибутов в отношения R2.

Соединение Сf(R1R2) отношений RR2 по условию, заданному формулой f,представляет собой отношение R, которое можно получить путем Декартова произведения отношений RR2 с последующим применением к результату операции выборки по формуле f.

Билет №4

Нормализация – это разбиение таблицы на две или более, обладающих лучшими свойствами при включении, изменении и удалении данных. Окончательная цель нормализации сводится к получению такого проекта базы данных, в котором каждый факт появляется лишь в одном месте, т.е. исключена избыточность информации. Это делается не столько с целью экономии памяти, сколько для исключения возможной противоречивости хранимых данных.

Теория нормализации основывается на наличии той или иной зависимости между полями таблицы. Определены два вида таких зависимостей: функциональные и многозначные.

Таблица находится в первой нормальной форме (1НФ) тогда и только тогда, когда ни одна из ее строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не пусто.

Таблица находится во второй нормальной форме (2НФ), если она удовлетворяет определению 1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом

Таблица находится в третьей нормальной форме (3НФ), если она удовлетворяет определению 2НФ и не одно из ее неключевых полей не зависит функционально от любого другого неключевого поля

Таблица находится в нормальной форме Бойса-Кодда (НФБК), если и только если любая функциональная зависимость между его полями сводится к полной функциональной зависимости от возможного ключа.

Таблица находится в пятой нормальной форме (5НФ) тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ. Таблица, не имеющая ни одной полной декомпозиции, также находится в 5НФ.

Четвертая нормальная форма (4НФ) является частным случаем 5НФ, когда полная декомпозиция должна быть соединением ровно двух проекций. Весьма не просто подобрать реальную таблицу, которая находилась бы в 4НФ, но не была бы в 5НФ.

нормализация – это процесс последовательной замены таблицы ее полными декомпозициями до тех пор, пока все они не будут находиться в 5НФ. На практике же достаточно привести таблицы к НФБК и с большой гарантией считать, что они находятся в 5НФ.

Билет №17

ADO – технологии доступа к данным

Для публикации БД в И-нет основной интерфейс представляет активный Web-сервер, который реализуется с помощью программных расширений.

В случаях когда на web-страницах находятся интерфейсные элементы, которые могут в ответ на реакцию пользователя обращается с запросами к серверу, то сервер переходит в активное состояние. Для организации связи программных расширений web-сервера с БД используются современные средства доступа к данным – ADO, OLE DB, ODBC. Эти промежуточным управлением между источником данных и приложением, в качестве которого выступает приложения web-сервера.

Интерфейс ADO представляет иерархическую модель  объектов для доступа  к различным OLE BD – провайдерам данных. Он характеризуется ещё более высоким уровнем абстракций и базируется на интерфейсе OLE BD. Объектная модель ADO включает небольшое количество объектов, которые обеспечивают соединение с провайдером данных, создание SQL запроса к данным создание набора записей на основе запроса и т.д. Разрабатывая интерфейс ADO, фирма MS предназначала его для использования в Интранет / Интернет сетях для доступа к различным источникам данных.


 


Билет №5

Жизненный цикл информации системы – это непрерывный процесс, начинающейся с момента принятия решения о создании информации системы и заканчивающейся в момент полного изьятия его из эксплуатации.

Основные процессы жизненного цикла:

постановка задачи – определение требований к программному продукту;

анализ – осуществление формальной постановки задачи и определение методов ее решения;

проектирование – разработка структуры программного продукта, выбор структур для хранения данных, построение и оценка алгоритмов подпрограмм и определение особенностей взаимодействия программы с вычислительной средой (другими программами, операционной системой и техническими средствами);

реализация – составление программы на выбранном языке программирования, ее тестирование и отладка.

модификация – выпуск новых версий программного продукта.

Сопровождение -

Основная цель проектирования БД – это сокращение избыточности хранимых данных, а следовательно, экономия объема используемой памяти, уменьшение затрат на многократные операции обновления избыточных копий и устранение возможности возникновения противоречий из-за хранения в разных местах сведений об одном и том же объекте

Под информационной системой будем понимать систему состоящую из программного обеспечения и информации хранилища, используемого для автоматизации одного или нескольких информационных процессов. Информационное хранилище представляет собой определенным образом организованные данные, хранящиеся во внешней памяти. Такое информационное хранилище называется БД. Данные – информация, хранящаяся во внешней памяти. Информация – передаваемые по каналу данные.

Существуют 2 способа построения ИС.        

«Файл – серверное» построение ИС.

Особенность построения ИС является то, что она позволяет получить доступ к данным многих пользователей. С другой стороны, взаимообмен ПО с данными осуществляется с одного или несколькими  сетевыми уровнями. Вся обработка осуществляется на сетевых уровнях. Это значит, что любая элементарная операция над данными приводит к повышению трафика локальной сети.

Т.е.  с увеличением компьютеров, устойчивых в обработке, а так же с ростом объема хранимых данных, нагрузка на локальную сеть может вырасти настолько, что это приведет к замедлению работы всей системы, а чтобы как-то увеличить производимость системы придется наращивать производительность системы, файловых серверов, локальных сетей и сетевых компьютеров.

Файл-серверное построение                                                     клиент серверное построение

Схема «клиент – сервер».

Вместо файловой системы для хранения данных используется сервер БД. Особенностью СБД является то, что он способен выполнять запрос на обработку данных. Один такой запрос может содержать в себе множество элементарных операций над данными.

Кроме этого, на сервере БД могут  храниться программы – модули, состоящие из произвольного количества операторов, определен язык программирования, которые могут быть выставлены на команде с сетевого компьютера.

Вся обработка данных переместилась на 1 комп, что привело к уменьшению нагрузки на СК и сетевые компы. Теперь для увеличения производительности ИС достаточно понять производительность одного компа, где располагается сервер БД. Схема (рис. 3) широко используется при построении  современных ИС.

 

 

Процесс проектирования информационных систем является достаточно сложной задачей. Он начинается с построения инфологической модели данных, т.е. идентификации сущностей. Затем необходимо выполнить следующие шаги процедуры проектирования даталогической модели.

1. Представить каждый стержень таблицей базы данных и специфицировать первичный ключ этой базовой таблицы.

2. Представить каждую ассоциацию как базовую таблицу. Использовать в этой таблице внешние ключи для идентификации участников ассоциации и специфицировать ограничения, связанные с каждым из этих внешних ключей.

3. Представить каждую характеристику как базовую таблицу с внешним ключом, идентифицирующим сущность, описываемую этой характеристикой. Специфицировать ограничения на внешний ключ этой таблицы и ее первичный ключ – по всей вероятности, комбинации этого внешнего ключа и свойства, которое гарантирует "уникальность в рамках описываемой сущности".

4. Представить каждое обозначение, которое не рассматривалось в предыдущем пункте, как базовую таблицу с внешним ключом, идентифицирующим обозначаемую сущность. Специфицировать связанные с каждым таким внешним ключом ограничения.

5. Представить каждое свойство как поле в базовой таблице, представляющей сущность, которая непосредственно описывается этим свойством.

6. Для того чтобы исключить в проекте непреднамеренные нарушения каких-либо принципов нормализации, выполнить процедуру нормализации.

7. Если в процессе нормализации было произведено разделение каких-либо таблиц, то следует модифицировать инфологическую модель базы данных и повторить перечисленные шаги.

8. Указать ограничения целостности проектируемой базы данных и дать (если это необходимо) краткое описание полученных таблиц и их полей.

Билет №6

Связь – ассоциирование двух или более сущностей. Если бы назначением базы данных было только хранение отдельных, не связанных между собой данных, то ее структура могла бы быть очень простой. Однако одно из основных требований к организации базы данных – это обеспечение возможности отыскания одних сущностей по значениям других, для чего необходимо установить между ними определенные связи.

Сущность – любой различимый объект (объект, который мы можем отличить от другого), информацию о котором необходимо хранить в базе данных

Первый тип – связь ОДИН-К-ОДНОМУ (1:1): в каждый момент времени каждому представителю (экземпляру) сущности А соответствует 1 или 0 представителей сущности В:

Студент может не "заработать" стипендию, получить обычную или одну из повышенных стипендий.

Второй тип – связь ОДИН-КО-МНОГИМ (1:М): одному представителю сущности А соответствуют 0, 1 или несколько представителей сущности В.

Квартира может пустовать, в ней может жить один или несколько жильцов.

Так как между двумя сущностями возможны связи в обоих направлениях, то существует еще два типа связи МНОГИЕ-К-ОДНОМУ (М:1) и МНОГИЕ-КО-МНОГИМ (М:N).

Пример. Если связь между сущностями МУЖЧИНЫ и ЖЕНЩИНЫ называется БРАК, то существует четыре возможных представления такой связи:

Характер связей между сущностями не ограничивается перечисленными. Существуют и более сложные связи:

·                     множество связей между одними и теми же сущностями

(пациент, имея одного лечащего врача, может иметь также несколько врачей-консультантов; врач может быть лечащим врачом нескольких пациентов и может одновременно консультировать несколько других пациентов);

·                     тренарные связи

(врач может назначить несколько пациентов на несколько анализов, анализ может быть назначен несколькими врачами нескольким пациентам и пациент может быть назначен на несколько анализов несколькими врачами);

Билет №7 Целостность данных

Главная особенность SQL-технологий наличие у сервера СУБД специальных средств контроля целостности данных, не зависящих от клиентских программ и привязанных непосредственно к таблицам. Т.е. принципиально не важно, каким образом осуществляется доступ к базе данных: через SQL-консоль, через ODBC-драйвера из приложения Windows, через WWW-connector из Internet-браузера или через DBI-интерфейс Perl. В любом из этих случаев, за контролем целостности данных следит сервер, и при нарушении правил целостности данных сервер известит клиента об ошибке.

К структурам контроля целостности данных относятся ограничители (constraint), которые привязаны к столбцам и триггеры (trigger), которые могут быть привязаны как к столбцам, так и к строкам в таблице.

Ограничители это элементарные проверки или условия, которые выполняются для операций вставки и модификации значения столбца. Если данная проверка не проходит или условие не выполняется, то вставка или модификация отменяется, а в программу клиента передается ошибка.

SQL-серверы, как правило, поддерживают следующие ограничители.

NOT NULL - проверка на непустое значение. NULL - специальное понятие в СУБД, которое означает "пусто". "Пусто" и "0(ноль)" не равны друг другу!

UNIQUE - проверка на уникальность. Вставляемое значение должно быть уникально для данного столбца по всей таблице. Может содержать пустые значения.

PRIMARY KEY - первичный ключ. Значение в столбце считается первичным ключом, если оно непустое и уникально в пределах столбца данной таблицы. Первичный ключ может быть составным и представлять собой комбинацию столбцов. Тогда чтобы считаться первичным ключом, каждое из группы значений не должно быть пустыми и формируемые строки значений первичного ключа должны быть уникальны в пределах таблицы. Первичный ключ - основа для построения индексов по таблице.

SQL-технология позволяет на уровне столбца задавать домены значений, т.е. строго определенные наборы или диапазоны значений, для помещаемых в столбец данных. В частности можно реализовывать ограничения ссылочной целостности (referential integrity constraint) и проверки фиксированного условия. Ограничение ссылочной целостности не позволяет значениям из столбца одной таблицы принимать значения кроме как из присутствующих в столбце другой таблицы. Это делается при помощи ограничителей FOREIGN KEY (внешний ключ) и REFERENCES (указатель ссылки). Таблица, содержащая FOREIGN KEY, считается родительской таблицей. Таблица, содержащая REFERENCES, считается дочерней таблицей. Внешний ключ и указатель ссылки могут находиться в одной таблице, т.е. родительская таблица одновременно является дочерней.

FOREIGN KEY - внешний ключ. Назначает столбец или комбинацию столбцов в текущей (родительской) таблице в качестве внешнего ключа для ссылки из других таблиц.

REFERENCES - указатель ссылки (или родительский ключ). Указывает на столбец (комбинацию столбцов) в родительской таблице, ограничивающую значения в текущей (дочерней) таблице.

Для использования ограничений ссылочной целостности должны выполняться некоторые условия. В частности, родительская и дочерняя таблицы должны находиться в пределах одного аппаратного сервера базы данных, они не могут находиться на различных узлах распределенной базы данных. Столбцы, участвующие в отношении ограничения ссылочной целостности обязаны иметь один и тот же тип данных.

Ограничения ссылочной целостности используются при каскадном удалении, т.е. при удалении записи в родительской таблице удаляются все записи с указанным ключом из дочерних таблиц, и наоборот при запрете удаления/модификации, т.е. при наличии зависимых записей в дочерних таблицах, значение ключа записи в родительской таблице нельзя удалить или модифицировать.

CHECK - проверка фиксированного условия. В данном ограничителе явно указывается условие, которое должно выполняться для вставляемого или модифицируемого значения в столбце. Например: check (user in 'ALEX','JUSTAS') - в столбце user могут содержаться только значения 'ALEX' и 'JUSTAS', попытка вставки значения 'SHTIRLITZ' будет интерпретирована как ошибочная , check (user_salary between 1000 and 5000) - столбец user_salary может принимать целочисленные значения в диапазоне от 1000 до 5000 и т.д. При формировании условий с некоторыми ограничениями могут использоваться функции, например check (user = upper(user)), в данном случае имя пользователя должно вводиться только в верхнем регистре. Есть и ограничения, например, CHECK не может содержать подзапросы (SELECT).

Обычно ограничители задаются при создании таблиц. Но в дальнейшем их можно изменять, удалять или временно запрещать при помощи соответствующих команд СУБД.

Триггеры - это сохраненная откомпилированная процедура, которая связана с определенной таблицей. Триггеры, в отличие от ограничителей, могут выполнять сколь угодно сложные манипуляции над данными. Помимо операций модификации и вставки, триггеры могут срабатывать и при удалении данных из таблицы. Можно также задавать порядок срабатывания триггера относительно операции, т.е. выполниться ли триггер перед операцией вставки/модификации/удаления значения из столбца (или всей строки) или непосредственно после такой операции.

Некоторые типовые применения триггеров:1.Прозрачный аудит (не зависящий от клиентских программ и невидимый для них) и регистрация событий, связанных с доступом к определенным таблицам или столбцам в таблицах;2.Генерация значений в столбцах на основе значений в других столбцах при вставке/модификации строки данных.;3.Манипуляции над зависимыми таблицами в особенности, если они находятся на других узлах распределенной базы данных, чего нельзя сделать при помощи ограничителей.

В случае необходимости триггеры можно запрещать, а затем разрешать. Запрещение триггеров применяется обычно при массовых загрузках данных в таблицы извне, с целью уменьшения времени загрузки. Понятие триггера как выполнение кода по событию в том же Oracle используется весьма широко. В частности, оно является основным при разработке клиентских программ при помощи SQL*Forms. Триггеры пишутся на процедурных расширениях SQL.

 

Билет №9

Выборка данных оператором SELECT. Запросы модификации данных: вставка записи INSERT, удаление записи DELETE, изменение записи UPDATE. Примеры.

 

  DELETE Назначение: создание запроса на удаление записей из одной или нескольких таблиц, перечисленных в предложении FROM, которые удовлетворяют предложению WHERE.Синтаксис:

DELETE[<таблица>]

FROM<таблица>

 WHERE<условие_отбора>  Аргументы:

 <таблица>- необязательное имя таблицы, из которой удаляются записи;

<таблица>- имя таблицы, из которой удаляются записи;

<условие_отбора> - выражение, определяющее удаляемые записи.

Пример: удалить записи  всех сотрудников, которые занимают должность «стажер» и имеют запись в таблице «Оплата». Между таблицами «Сотрудники» и «Оплата» установлена связь 1:1

DELETE Сотрудники * FROM Сотрудники INNER JOIN Оплата

ON Сотрудники.КодСотрудника= Оплата. КодСотрудника

WHERE Сотрудники.Должность = ‘Стажер’;

 

SELECT Назначение: представить данные из базы данных в виде набора записей. Синтаксис:

SELECT [DISTINCT] <список атрибутов>

FROM <список таблиц>

[WHERE <условие выборки>]

[ORDER BY <список атрибутов>]

[GROUP BY <список атрибутов>]

[HAVING <условие>]

[UNION <выражение с оператором SELECT>J;

В квадратных скобках указаны элементы, которые могут отсутствовать в запросе. Ключевое слово SELECT сообщает базе данных, что данное предложение является запросом на извлечение информации. После слова SELECT через запятую перечисляются наименования полей (список атрибутов), содержимое которых запрашивается. Обязательным ключевым словом в предложении-запросе SELECT является слово FROM (из). За ключевым словом FROM указывается список разделенных запятыми имен таблиц, из которых извлекается информация.

Пример: отобрать все поля из таблицы «Сотрудники».

SELECT Сотрудники.* FROM Сотрудники;

 

INSERT Назначение: добавить запись или записи в таблицу. Эта инструкция образует запрос на добавление. Синтаксис:

Запрос на добавление нескольких записей:

INSERT<назначение>

[IN<внешняя_база_данных>][(<поле1>[,<поле2>[,...]])]]

SELECT[<источник>]<поле1>[,<поле2>[,...]

FROM<выражение>

Запрос на добавление одной записи:

INSERT<назначение>[(<поле1>[,<поле2>[,...]])]]

VALUES(<значение1>[,<значение2>[,...])

Аргументы: <назначение>- имя таблицы или запроса, в которые добавляются записи;

<внешняя_база_данных> - путь к внешней БД.

<источник>- имя таблицы или запроса, откуда копируются записи;

<поле1>,<поле2>- имена полей для добавления данных, если они следуют за аргументом<назначение>; имена полей, из которых берутся данные, если они следуют за аргументом источник;

<выражение>- имена таблицы или таблиц, откуда вставляются данные.

<значение1>,<значение2>- значения, добавляемые в указанные поля новой записи.

Пример: отобрать все записи из таблицы «Стажеры» для стажеров, принятых на работу более 30 дней назад, и добавить их в таблицу «Сотрудники».

INSERT СОТРУДНИКИ SELECT Стажеры.* FROM Стажеры WHERE ДатаНайма<Now()-30;

UPDATE Назначение: создание запроса на обновление записей, который изменяет значения полей указанной таблицы на основе заданного условия отбора. Синтаксис:

UPDATE<таблица>

SET<новое_значение>

WHERE<условие отбора>;

Аргументы: <таблица>- имя таблицы, данные в которой следует изменить;

<новое_значение>- выражение, определяющее значение, которое должно быть вставлено в указанное поле обновленных записей;

<условие отбора>- выражение, отбирающее записи, которые должны быть изменены. При выполнении этой инструкции будут изменены только записи, удовлетворяющие этому условию.

Пример: увеличить на10 процентов цену на все товары поставщика, имеющего код 8, поставки которых еще не прекращены.

UPDATE Товары SET Цена=Цена*1.1 WHERE КодПоставщика =8

AND ПоставкиПрекращены = No;

Билет №8

Классификация команд SQL. Оператор создания, изменения базы данных, таблиц, представлений. 

В SQL в качестве составных частей входит:

DML:язык манипулирования данными DML

DDL: язык определения данных DDL

 

DCL: язык управления данными DCL

SELECT – выборка

CREATE – создание

GRAND – установка прав доступа

INSERT – вставка

DROP – удаление

REVOKE – удаление прав доступа

UPDATE – обновления

ALTER – изменение

 

DELETE – удаление

 

 

DML:

Оператор SELECT (выбрать) языка SQL является самым важным и самым часто используемым оператором. Он предназначен для выборки информации из таблиц базы данных. Упрощенный синтаксис оператора SELECT выглядит следующим образом.

SELECT [DISTINCT] <список атрибутов>

FROM <список таблиц>

[WHERE <условие выборки>]

[ORDER BY <список атрибутов>]

[GROUP BY <список атрибутов>]

[HAVING <условие>]

[UNION <выражение с оператором SELECT>J;

В квадратных скобках указаны элементы, которые могут отсутствовать в запросе. Ключевое слово SELECT сообщает базе данных, что данное предложение является запросом на извлечение информации. После слова SELECT через запятую перечисляются наименования полей (список атрибутов), содержимое которых запрашивается. Обязательным ключевым словом в предложении-запросе SELECT является слово FROM (из). За ключевым словом FROM указывается список разделенных запятыми имен таблиц, из которых извлекается информация.

В SQL для выполнения операций ввода данных в таблицу, их изменения и удаления предназначены три команды языка манипулирования данными (DML). Это команды INSERT (вставить), UPDATE (обновить), DELETE (удалить).

Команда INSERT осуществляет вставку в таблицу новой строки. В простейшем случае она имеет вид:

INSERT INTO <имя таблицы> VALUES (<значение>, <значение>,);

При такой записи указанные в скобках после ключевого слова VALUES значения вводятся в поля добавленной в таблицу новой строки в том порядке, в котором соответствующие столбцы указаны при создании таблицы, то есть в операторе CREATE TABLE.

Например, ввод новой строки в таблицу STUDENT может быть осуществлен следующим образом:

INSERT INTO STUDENT

VALUES (101,'Иванов','Александр', 200, 3,'Москва1, '6/10/1979', 15)

Удаление строк из таблицы осуществляется с помощью команды DELETE. Следующее выражение удаляет все строки таблицы EXAM_MARKSI .

DELETE FROM EXAM_MARKS1;

В результате таблица становится пустой (после этого она может быть удалена командой DROP TABLE).

Команда UPDATE позволяет изменять, то есть обновлять значения некоторых или всех полей в существующей строке или строках таблицы. Например, чтобы для всех университетов, сведения о которых находятся в таблице UNIVERSITYI, изменить рейтинг на значение 200, можно использовать конструкцию:

UPDATE UNIVERSITYI

SET RATING = 200;

Для указания конкретных строк таблицы, значения полей которых должны быть изменены, в команде UPDATE можно использовать предикат, указываемый в предложении WHERE.

UPDATE UNIVERSITYI

SET RATING = 200

WHERE CITY = 'Москва';

В результате выполнения этого запроса будет изменен рейтинг только у университетов, расположенных в Москве.

Команда UPDATE позволяет изменять не только один, но и множество столбцов. Для указания конкретных столбцов, значения которых должны быть модифицированы, используется предложение SET.

DDL:

Язык определения данных используется для создания и изменения структуры БД и ее составных частей-таблиц, индексов.

Основными его командами являются:

CREATE DATABASE создает ,CREATE TABLE ,CREATE INDEX

ALTER DATABASE модифицировать,ALTER TABLE,ALTER INDEX           

DROP DATABASE удалить,DROP TABLE ,DROP INDEX     

Создание объектов базы данных осуществляется с помощью операторов языка определения данных (DDL). Таблицы базы данных создаются с помощью команды CREATE TABLE. Эта команда создает пустую таблицу, то есть таблицу, не имеющую строк. Значения в эту таблицу вводятся с помощью команды INSERT. Команда CREATE TABLE определяет имя таблицы и множество поименованных столбцов в указанном порядке. Для каждого столбца должен быть определен тип и размер. Каждая создаваемая таблица должна иметь, по крайней мере, один столбец. Синтаксис команды CREATE TABLE имеет следующий вид:

CREATE TABLE table-name
         (<column name>  <data type>[(size)],

         <column name> <data type> [(size)] ...);

Индексы можно создавать как по одному, так и по множеству полей. Если указано более одного поля для создания единственного индекса, данные упорядочиваются по значениям первого поля, по которому осуществляется индексирование.

Внутри получившейся группы осуществляется упорядочение по значениям второго поля, для получившихся в результате групп осуществляется упорядочение по значениям третьего поля и т.д.

Синтаксис команды создания индекса имеет следующий вид:

  CREATE INDEX ON

  (column name [,column name]...);

При этом таблица должна быть уже создана и содержать столбцы, имена которых указаны в команде создания индекса. Имя индекса, определенное в команде, должно быть уникальным в базе данных. Будучи однажды созданным, индекс является невидимым для пользователя, все операции с ним осуществляет СУБД.

Для создания базы данных синтаксис команды имеет вид

CREATE DATABASE <ИМЯ БД>

Представление – виртуальная таблица, сформированная в результате выборки данных из одной или нескольких таблиц. При создании представление придерживаются следующего синтаксиса:

CREATE VIEW <имя представления> (<список атрибутов>)

AS <выражение селект>

Для модификации структуры и параметров существующей таблицы используется команда ALTER TABLE. Синтаксис команды ALTER TABLE для добавления столбцов в таблицу имеет вид

ALTER TABLE <ИМЯ ТабЛИЦЫ> ADD (<ИМЯ СТОЛбца> <ТИП ДАННЫХ> <размер>);

По этой команде для существующих в таблице строк добавляется новый столбец, в который заносится NULL-значение.

Этот столбец становится последним в таблице. Можно добавлять несколько столбцов, в этом случае их определения в команде ALTER TABLE разделяются запятой.

Возможно изменение описания столбцов. Часто это связано с изменением размеров столбцов, добавлением или удалением ограничений, накладываемых на их значения. Синтаксис команды в этом случае имеет вид

ALTER TABLE <ИМЯ ТАБЛИЦЫ> MODIFY <ИМЯ СТОЛБЦА> <ТИП ДАННЫХ> <размер/точность >;

Следует иметь в виду, что модификация характеристик столбца может осуществляться не в любом случае, а с учетом следующих ограничений:

• изменение типа данных возможно только в том случае, если столбец пуст;

• для незаполненного столбца можно изменять размер/точность. Для заполненного столбца размер/точность можно увеличить, но нельзя понизить;

• ограничение NOT NULL может быть установлено, если ни одно значение в столбце не содержит NULL. Опцию NOT NULL всегда можно отменить;

• разрешается изменять значения, установленные по умолчанию.

Чтобы удалить существующую таблицу, необходимо предварительно удалить все данные из этой таблицы, то есть сделать ее пустой. Таблица, имеющая строки, не может быть удалена.

Синтаксис команды, осуществляющей удаление пустой таблицы, имеет следующий вид:

DROP TABLE <имя таблицы>;

Синтаксис команды, осуществляющей удаление базы данных, имеет вид

DROP DATABASE <ИМЯ БД>

Синтаксис команды, осуществляющей удаление индекса, имеет вид

CREATE INDEX <имя индекса>

Удаление представления

DROP VIEW <имя представления>;

DCL:

Команда назначения прав доступа

Команда GRANT позволяет назначить права доступа, рассмотренные выше.

GRANT {ALL|список_операторов} ТО {учетная_запись}

В этом коде использованы следующие параметры:

ALL. Определяет все доступные для назначения права.

список_операторов. Нумерованный список прав на выполнение операторов, которые назначаются учетной записи.

учетная_запись. Имя пользователя базы данных, роли, пользователя или группы Windows, для которых задаются права доступа

Команда аннулирования прав доступа

Команда REVOKE аннулирует уже заданные права доступа.

REVOKE {ALL|список_операторов} ТО [учетная_запись]

В этом коде использованы следующие параметры.

ALL. Определяет все доступные для назначения права.

список_операторов. Нумерованный список прав на выполнение операторов, которые назначаются учетной записи.

учетная_запись. Имя пользователя базы данных, роли, пользователя или группы Windows, для которых аннулируются права доступа.

 

Билет №10

Этапы проектирования баз данных. Основные понятия метода сущность-связь.

Этапы создания баз данных.

Основные этапы, на которые разбивается процесс проектирования базы данных:

1. Концептуальное проектирование - сбор, анализ и редактирование требований к данным. Для этого осуществляются следующие мероприятия:

- обследование предметной области, изучение ее информационной структуры

- выявление всех фрагментов, каждый из которых характеризуется пользовательским представлением, информационными объектами и связями между ними, процессами над информационными объектами

- моделирование и интеграция всех представлений

По окончании данного этапа получаем концептуальную модель, инвариантную к структуре базы данных. Часто она представляется в виде модели "сущность-связь".

2. Логическое проектирование - преобразование требований к данным в структуры данных. На выходе получаем СУБД- ориентированную структуру базы данных и спецификации прикладных программ. На этом этапе часто моделируют базы данных применительно к различным СУБД и проводят сравнительный анализ моделей.

3. Физическое проектирование - определение особенностей хранения данных, методов доступа и т.д.

 Этапы проектирования:

1.выделение сущностей и связей между ними

2.построение диаграмм ER- типа с учетом всех сущностей и их связей

3.формирование набора предварительных отношений с указанием предлагаемого первичного ключа для каждого отношения и использованием  диаграмм ER-типа.

4.добавление неключевых атрибутов в отношения

5.приведение предварительных отношений к нормальной форме Бойса- Кода

6.пересмотр ER- диаграмм при: - некоторые отношения не приводятся к НФ Бойса- Кода; - некоторым атрибутам не находится логически обоснованных мест в предварительных отношениях.

Модель Сущность-Связь (ER-модель) (англ. entity-relationship model или entity-relationship diagram ) — это модель данных, позволяющая описывать концептуальные схемы. Она предоставляет графическую нотацию, основанную на блоках и соединяющих их линиях, с помощью которых можно описывать объекты и отношения между ними какой-либо другой модели данных. В этом смысле ER-модель является мета-моделью данных, то есть средством описания моделей данных.

Основными понятиями метода сущность- связь являются следующие:

Сущность представляет собой объект, информация о котором храниться в БД. Экземпляры сущности отличаются друг от друга и однозначно идентифицируются.

Атрибут представляет собой свойство сущности.

Ключ сущности – атрибут или набор атрибутов, используемый для идентификации экземпляра сущности.

Связь двух или более сущностей – предполагает зависимость между атрибутами этих сущностей. Пример: ПРЕПОДАВАТЕЛЬ ВЕДЕТ ДИСЦИПЛИНУ (ИВАНОВ ведет «БД»).

Степень связи является характеристикой связи между сущностями, которая может быть типа:1:1,1:М, М:М.

Класс принадлежности сущности может быть: обязательным, если все экземпляры этой сущности обязательно участвуют в рассматриваемой связи, в противном случае  необязательным.  



Билет №11

Правила формирования отношений в методе сущность- связь.

Правила формирования отношений основываются на учете в следующем:

1.степени связи между сущностями (1:1, 1:М, М:М); 2.класс принадлежности экземпляров сущностей(обязательный и необязательный).

Формирования отношений для связи 1:1

Правило 1. если степень бинарной связи 1:1 и класс принадлежности обеих сущностей обязательный, то формируется одно отношение. Первичным ключом этого отношения может быть любой из двух сущностей. (рис.1). Обозначения: С1, С2 - сущности 1 и 2;

К1, К2 - ключи первой и второй сущности соответственно;

К1 - отношение 1, сформированное на основе первой и второй сущностей;

К1уК2,… означает, что ключом сформированного отношения может быть либо К1,либоК2.

Правило 2. Если степень связи 1:1 и класс принадлежности одной сущности обязательный, а второй - необязательный, то под каждую из сущностей формируется по отношению с первичными ключами, являющимися ключа­ми соответствующих сущностей. Далее к отношению, сущность которого имеет обязательный КП, добавляется в качестве атрибута ключ сущности с нео­бязательным КП. (рис.2)

Правило 3. Если степень связи 1:1 и класс принадлежности обеих сущно­стей является необязательным, то необходимо использовать три отношения. Два отношения соответствуют связываемым сущностям, ключи которых яв­ляются первичными в этих отношениях. Третье отношение является связным между первыми двумя, поэтому его ключ объединяет ключевые атрибуты свя­зываемых отношений.(рис.3)

Формирования отношений для связи 1:М

Если две сущности С1 и С2 связаны как 1:М, сущность С1 будем называть односвязной (1-связной), а сущность С2 - многосвязной (М-связной). Определяющим фактором при формировании отношений, связанных этим видом  связи является класс принадлежности М-связной сущности. Так, если класс  принадлежности М-связной сущности обязательный, то в результате применения правила получим два отношения, если необязательный - три отношения. Класс принадлежности односвязной сущности не влияет на результат.

Правило 4. Если степень связи между сущностями 1:М (или М:1) и класс принадлежности М-связной сущности обязательный, то достаточно формирование двух отношений (по одному на каждую из сущностей). При этом первичными ключами этих отношений являются ключи их сущностей.  Кроме того, ключ 1-связной сущности добавляется как атрибут (внешний ключ)в отношение, соответствующее М-связной сущности. (рис.4).

Правило 5.Если степень связи 1:М (М:1) и класс принадлежности М-связной сущности  является необязательным, то необходимо формирование трех отношений(рис. 5). Два отношения соответствуют связываемым сущностям, ключи которых являются первичными в этих отношениях. Третье отношение является связным между первыми двумя (его ключ объединяет ключевые атрибуты связываемых отношений).

Формирования отношений для связи М:М

При наличии связи М:М между двумя сущностями необходимо три отношения независимо от класса принадлежности любой из сущностей. Использование одного или двух отношений в этом случае не избавляет от пустых  полей или избыточно дублируемых данных.

Правило 6. Если степень связи М:М, то независимо от класса принадлежности сущностей формируются три отношения. Два отношения соответствуют связываемым сущностям и их ключи являются первичными ключами этих  отношений. Третье отношение является связным между первыми двумя, а его ключ объединяет ключевые атрибуты связываемых отношений.(рис.6)

Билет №12

Архитектура, системные базы данных и таблицы MS SQL server.

При использовании SQL Server возникает задача сохранения информации о том, как хранятся данные в базе. Информация о хранении данных называется метаданными. Метаданные хранятся в словаре данных (набор системных таблиц), заполняемом командами CREATE и ALTER. Словарь данных, как и любые другие данные SQL Server, делится на таблицы.

Например, при создании таблицы вы добавляете новую запись в таблицу sysobjects. В этой таблице присутствуют записи для каждого объекта базы данных. Кроме того, новая запись появляется и в таблице sysindexes, которая содержит запись для каждого индекса. А также несколько новых записей появляются в таблице syscolumns (по одной для каждого столбца данных).

Помимо системных таблиц, многие из которых присутствуют во всех базах, существует несколько системных баз данных, содержащих информацию о конкретной системе и используемых при выполнении таких задач, как репликация. В SQL Server существуют четыре системных базы данных: master (высокоуровневые данные о сервере), tempdb (временные таблицы, специфические для отдельных процессов или запросов), model (шаблон для создания новых баз данных) и msdb (данные для планировщика SQL Server Agent).

Существуют два типа системных таблиц: присутствующие в каждой базе данных (метаданные каждой базы) и содержащиеся только в системных базах данных (информация о сервере в целом, а не о конкретной базе).

Наконец, в SQL Server существует ряд системных хранимых процедур, используемых при работе с системными таблицами. Они используются при выполнении таких задач, как заполнение системных таблиц и обработка запросов к ним (например, процедура sp_who выдает сведения обо всех серверных процессах, работающих в данный момент). Системные процедуры важны по двум причинам: во-первых, они позволяют легко получить нужную информацию из системных таблиц, а во-вторых, они используются для заполнения системных таблиц.

Системные базы данных

В системе Microsoft SQL Server существуют четыре системных базы данных: master, tempdb, model и msdb.

master В базе данных master хранятся сведения о системе SQL Server на уровне сервера, среди которых — регистрация обращений к серверу, параметры конфигурации, базы данных и их отображение на физические устройства (другими словами, при записи в базу данных страница в действительности записывается в файл на диске). Все эти данные записываются в системные таблицы.

tempdb  В базе данных tempdb хранятся временные таблицы и хранимые процедуры SQL Server. Tempdb содержит временные таблицы, намеренно созданные разработчиком, а также все временные таблицы и промежуточные результаты, используемые SQL Server при обработке запросов. Более того, tempdb также применяется для хранения любых временных данных (например, создаваемых при обработке секций GROUP BY и союзов).

model  База данных model представляет собой шаблон, по которому создаются другие базы данных. При выполнении команды CREATE DATABASE содержимое model копируется в новую базу данных, а остаток новой базы заполняется пустыми страницами, выделяемыми под таблицы при вставке новых данных.

msdb  База данных msdb используется SQL Server Agent для планирования оповещений и заданий, а также для хранения данных об операторах.

Системные таблицы

В системных таблицах хранятся данные двух типов: уровня сервера и относящиеся к конкретной базе данных. Информация о сервере хранится только в базе данных master. Информация о конкретной базе данных находится в каждой отдельной базе данных. В табл. 3.2и3.5 перечислены различные системные таблицы. В табл. 3.2 перечислены таблицы с системными данными уровня сервера, хранящиеся в таблице master. В табл. 3.5 — таблицы с системной информацией уровня базы данных, присутствующие в каждой базе.

Таблица 3.2. Системные таблицы с данными о сервере (база данных MASTER)

Имя таблицы     Содержимое

1sysallocations  Одна запись на каждую единицу выделения.

2sysaltfiles         Одна запись на каждый файл базы данных.

3syscharsets       Одна запись на каждый установленный набор символов и порядок сортировки.

4sysconfigures   Конфигурация системы, которая вступает в силу при перезагрузке сервера.

5syscurconfigs   Текущая конфигурация системы.

6sysdatabases    Одна запись на каждую базу данных.

7sysdevices       Одна запись на каждое устройство.

8syslanguages   Одна запись на каждый установленный язык.

9syslockinfo      Одна запись на каждую блокировку.

10syslogins       Одна запись на каждую учетную запись пользователя для входа.

11sysmessages   Одна запись на каждое сообщение, определяемое для сервера.

12sysoledbusers                    Одна запись для каждого имени/пароля на заданном связанном сервере.

13sysperfinfo     Внутренние счетчики быстродействия для Performance Monitor.

14sysprocesses  Одна запись на каждый присоединенный процесс.

15sysremotelogins                 Одна запись на каждую удаленную учетную запись для входа.

16sysservers      Одна запись на каждый доступный сервер, включая текущий.

Таблица 3.5. Системные таблицы уровня базы данных (присутствуют во всех базах данных)

Имя таблицы        Содержимое

1syscolumns         Одна запись на каждый столбец в каждой таблице.

2syscomments       Текст создания всех пользовательских объектов.

3sysconstraints     Одна запись на каждое определенное ограничение.

4sysdepends         Одна запись на каждую зависимость объектов.

5sysfilegroups      Одна запись на каждую группу файлов.

6sysfiles               Одна запись на каждый файл.

7sysforeignkeys    Одна запись на каждый внешний ключ.

8sysfulltextcatalogs               Набор текстовых каталогов.

9sysindexes          Одна запись на каждый индекс и таблицу.

10sysindexkeys    Информация о каждом столбце индекса.

11sysmembers       Одна строка для каждого члена роли базы данных.

12sysobjects         Одна строка для каждого объекта базы данных.

13syspermissions                  Предоставленные и отозванные права доступа пользователей.

14sysprotects        Предоставленные или отказанные права защиты.

15sysreferences     Ограничения внешних ключей.

16systypes           Типы данных, определяемые пользователем.

17sysusers            Одна запись для каждого пользователя и группы.

Билет №13

Понятие хранимых процедур. Создание, изменение и использование хранимых процедур с параметрами.

Хранимые  процедуры представляют собой фрагменты программного кода на Transact- SQL,  которые выполняются на сервере. Они могут запускаться вызывающим их приложением, триггерами или при проверке выполняемости целостности данных. Хранимые процедуры могут иметь параметры, обеспечивающие возможность передавать в нее значения и получать обратно выбираемые из таблиц или вычисляемые при выполнении процедуры.

Основным достоинством использования хранимых процедур является высокая оперативность обработки информации, обусловленная использованием мощного компьютера-сервера и тем, что для доступа к данным не тратится лишнее время, поскольку база данных размещается на сервере. По области  видимости различают хранимые процедуры следующих четырех типов: системные (System), локальные (Local), временные (Temporary)и удаленные (Remote).

Системные хранимые процедуры размещаются в базе данных Master, используется сервером и администратором. Имена системных процедур начинаются с символов sр_. Для создания собственной системной хранимой процедуры  достаточно присвоить ей имя, начинающееся с sp_ и поместить ее в базу данных Master.

Локальные хранимые процедуры размещаются в пользовательских базах данных.

Временные  хранимые процедуры имеют имена, начинающиеся с символов # или # #. Процедуры с одним символом # в начале имени являются временными локальными процедурами и доступны из соединения, в котором были созданы. При закрытии этого соединения процедура автоматически уничтожается. Процедуры с двумя символами ## в начале имени являются временными глобальными и доступны в любой сессии работы с данным сервером.

Удаленные хранимые процедуры можно вызывать с сервера, отличного от текущего.

Еще одним типом хранимых процедур являются так называемые расширенные хранимые процедуры . Имена расширенных хранимых процедур начинаются с символов хр_.

 Оператор создания хранимой процедуры имеет следующий формат:

СRЕАТЕ РRОСЕDURЕ [владелец.]имя_процедуры [;версия]

[(@имя_параметра тип [=default][OUTput]

...

[@имя_параметра тип [=default][OUTput]])]

[FOR REPLICATION| WITH RECOMPILE][, ЕNСRYРТIОN]

AS

 <операторы_Тгаnsасt-SQL>

Вызов хранимой процедуры для выполнения осуществляется по ее имени. Если хранимая процедура является частью группы, то вызов ее осуществляют с помощью команды ЕХЕС. Например, ЕХЕС ргос; 3

  Создание  хранимой процедуры с помощью программы SQL server Eterprise Manager включает следующие действия.

1. запуск этой программы из группы программ SQL server 7.0; 2.Выбор в открывшемся диалоговом окне программы сервера баз данных и базы данных; 3.выбор элемента Stored Procedore (Хранимые процедуры) и выполнение команды его контекстного меню New Stored Procedore(Создать хранимую процедуру); 4.в открывшемся диалоговом окне Stored Procedore Properties (Свойства хранимой процедуры) в поле Техt (Текст) ввод операторов Transact- SQL,    создаваемой процедуры и указание имени процедуры на месте фразы <PROCEDURENAME>;5. Нажатие кнопки Check Syntax(Проверка синтаксиса) для проверки   отсутствия синтаксических ошибок и при необходимости корректировка операторов для устранения ошибок; 6. Нажатие ОК, в результате чего хранимая процедура создается и сохраняется.

Добавить хранимую процедуру, выдающую количество первых мест занятых лошадью.

create procedure Процедуры4(@loshad varchar(20))

as select Кличка,count(место) количество_первых_мест

from результат

where результат.место_занятое=1 and результат.Кличка=@ loshad

group by Кличка

Билет №16

Защита информации

Одной из важнейших задач управления БД является обеспечение безопасности данных.

обеспечение защиты информации серьёзный вопрос, рассмотрим только – управление доступом у БД. В SQL Server 2000 для определения операций, защищаемых правами доступа, вводится три команды: оператор GRAND, DENY и REVOKE.

Чтобы пользователь мог выполнить операцию, вы должны определить ему необходимое право доступа. Отсутствие соответствующего права не позволяет использовать данные, которые не относятся к непосредственным рабочим обязанностям сотрудника. Для удаления назначенных прав используется оператор REVOKE. В SQL Server определено всего два типа прав: объектные и системые. Системные права позволяют пользователю выполнять коды T-SQL, а объектные - операции: выборку данных (только чтение), вставку данных и их удаление

SQL Server имеет несколько уровней прав доступа. Большинство из них определяется на уровне базы данных. Определенные роли уровня сервера задают свой набор прав доступа

Роли уровня сервера:

Sysadmin Пользователи выполняют в SQL Server любые операции; Serveradmin для администраторов сервера, которые не являются администраторами баз данных и их объектов.;Setupadmin - Эта роль позволяет пользователям выполнять следующие задачи: добавлять учетные записи в заранее определенную роль setupadmin; добавлять, удалять и настраивать удаленные серверы; идентифицировать хранимые процедуры при запуске. Securityadmin - Роль securityadmin позволяет пользователям выполнять все операции, связанные с настройкой безопасности SQL Server.

Proccessadmin - Пользователи роли proсcessadmin управляют всеми процессами, протекающими в базе данных и SQL Server.;Dbcreator - Пользователи, выполняют операции по созданию и изменению 'базы данных.;Diskadmin - Пользователи заранее определенной роли diskadmin управляют файлами. ; SA – обладает всеми разрешениями в отношении сервера и БД.

Добавлять роли в фиксированные роли уровня сервера нельзя!

Заранее определенные роли уровня базы данных предоставляют пользователям права в пределах только отдельно взятой базы данных. Получив определенные права в одной базе данных, вы не будете иметь те же права в другой базе данных.

db_owner  назначается для "владельцев" базы данных. Они имеют самые обширные права в базе данных и выполняют любые операции, которые только позволяет выполнять SQL Server в пределах одной базы данных ;db_accessadmin Пользователи управляют учетными записями базы данных. ;db_securitуadmin Пользователи администрируют систему защиты данных в базе данных. ;

db_ddladmin пользователь может добавить, изменить удалить админа;db_backupoperator Пользователи выполняют резервное копирование баз данных.;db_datareader Пользователи имеют право на выполнение операторов SELECT для любой таблицы или представления базы данных. Они не могут назначать права или отменять их для других пользователей.;db_datawriter Пользователи имеют право на выполнение операторов INSERT, UPDATE и DELETE во всех таблицах и представлениях базы данных. Они также не могут назначать права для других пользователей или удалять их. ;db_denydatareader Пользователи, не имеют права использовать оператор SELECT в таблице или представлении базы данных.;db_denydatawriter Роль не позволяет пользователям выполнять операторы INSERT, UPDATE и DELETE для таблицы или представления базы данных.

Добавить учетную запись в роль можно следующим образом: sp_addrolemember <роль>, <учетная запись>

Удалить sp_droprolemember <роль>, <учетная запись>

Объектные права доступа позволяют пользователю базы данных, роли, пользователю или группе Windows управлять объектами базы данных. Объектные права доступа распространяются не на все объекты базы данных, а только на указанные. Подобный вид прав доступа наиболее распространен в базах данных.

К объектным правам доступа относятся: SELECT - Просмотр данных в таблице, представлении или столбце,INSERT - Добавление данных в таблицу или представление, UPDATE - Изменение существующих данных таблицы, вида или столбца, DELETE - Удаление данных из таблицы или вида, EXECUTE - Выполнение хранимой процедуры, REFERENCES - Ссылка на таблицу с помощью внешнего ключа или при создании функции

Назначение объектных прав доступа

Команда GRANT позволяет назначить пользователю права доступа к одному или нескольким объектам.

GRANT {ALL|список_операторов} ТО {учетная_запись}

ALL. Определяет все доступные для назначения права.

список_операторов. Нумерованный список прав на выполнение операторов, которые назначаются учетной записи.

учетная_запись. Имя пользователя базы данных, роли, пользователя или группы Windows, для которых задаются права доступа

Аннулирование объектных прав доступа

Для аннулирования имеющихся прав доступа применяется команда REVOKE.

Команда REVOKE аннулирует уже заданные права доступа.

REVOKE {ALL|список_операторов} ТО [учетная_запись]

В этом коде использованы следующие параметры.

·           ALL. Определяет все доступные для назначения права.

·           список_операторов. Нумерованный список прав на выполнение операторов, которые назначаются учетной записи.

·           учетная_запись. Имя пользователя базы данных, роли, пользователя или группы Windows, для которых аннулируются права доступа.

Отказ в предоставлении объектных прав доступа

В отличие от команды REVOKE, оператор DENY отказывает в предоставлении объектных прав указанным пользователям.

Билет №14

Триггер. Область его использования, место и роль триггера в обеспечении целосности данных. Операторы создания, изменения, удаления триггера.

Триггеры представляют собой разновидность хранимых процедур, запускаемых автоматически при попытке изменения данных в таблицах, с которыми триггеры связаны. Триггер запускается автоматически при вставке, модификации или удалении данных в определенной таблице.

Наиболее часто триггеры применяются для сложных критериев в базе данных в случае, когда недостаточно стандартных ограничений и табличных средств по обеспечению целостности данных. Триггеры можно рассматривать как  своего рода фильтры, вступающие в действие после выполнения всех операций в соответствии с правилами, стандартными значениями и т. п.

Создание триггера возможно владельцам БД. Для создания триггеров используется оператор CREATE след. формата: CREATE TRIGGER[владелец,]имя_триггера

ON[владелец,]имя_таблицы   FOR{INSERT,UPDATE,DELETE}      [WITH ENCRYPTION]

AS   <операторы_SQL>

Здесь ключевые слова INSERT (Вставить), UPDATE (Обновить) и DELETE (Удалить) определяют операции, которые инициируют выполнение триггера. Параметр WITH ENCRYPTION (с шифрованием) служит для предотвращения возможности прочтения текста триггера после помещения его на сервер. SQL server сохраняет текст триггера в таблице системного каталога syscomments.

Пример :Создание триггера вставки.

Рассмотрим создание триггера, который выполняется при вставке записи в таблицу schet. В таблице schet хранится информация о покупках и есть поле, где указывается номер накладной о покупке одной или нескольких единиц товара. общая сумма стоимости по накладной хранится в отдельной таблице prod. назначением создаваемого нами триггера является срабатывание на добавление записи в таблицу schet и выполнение добавления записи в таблицу prod, причем номер накладной в обеих таблицах должен совпадать.

CREATE TRIGGER schet_insert      ON schet          FOR INSERT

AS      INSERT INTO prod (schet, sum)    VALUES (vstavka, schet, sum)

Замечание. Для обеспечения высокой надежности работы с БД и возможности восстановления

баз данных и приложений целесообразно иметь резервные копии хранимых процедур, триггеров, определений таблиц и общей структуры серверной части

приложений SQL server

Билет №15

Администрирование баз данных

Важнейшими задачами администрирования являются защита информации и разграничение доступа пользователей.

К числу других относится:

Выбор способа размещения файлов на диске – Большинство СУБД позволяют админу системы выбрать один их двух способов размещения файлов: на «чистых» дисках – управление данными хранящихся на отдельных носителях, производится низкоуровневыми средствами самих СУБД. Достоинством такого способа является то, что внешняя память используется более эффективно и как правило, увеличивается производительность обмена с дисками; в файловой системе ОС – что обеспечивает следующие достоинства 1.гибкость-даёт админу стандартные средства обслуживание файлов. 2.в некоторых случая выполнение операции ввода/вывода через файловую систему обеспечивает оптимизацию , которую СУБД не может реализовать;

Определение требуемого объёма дисковой памяти – при этом следует учитывать, что для обработки данных СУБД использует большой объем служебной информации, размещаемой на диске. Если точная информация об объёме служебной информации для БД отсутствует, то разумно исходить из предположения, что для её размещения требуется объём дисковой памяти, превосходящий объём  данных;

Распределение информации на диске – рациональным и наиболее экономичным способом является обеспечение основных задач обработки данных одним или несколькими дисками. Примером является использование 4х дисков: одного для ОС и области подкачки, другого для данных, третьего для журнала транзакций и четвёртого для индексов;

Резервное копирование – основным назначением является предотвращение возможности гибели БД. Создаётся копия БД на другом носителе (диске). Копия может быть точной или сжатой (архивной). Резервное копирование может осуществляться во время работы с БД(online) или в другое время. Копия может создаваться как автоматически, так и по инициативе оператора.

См билет 16

 

Hosted by uCoz