Билет №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: Оператор 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 |