Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора 2.docx
Скачиваний:
0
Добавлен:
26.12.2019
Размер:
171.14 Кб
Скачать

Билет 10.

1. Жизненный цикл базы данных. Этапы жизненного цикла.

Жизненный цикл базы данных (ЖЦБД) – это процесс проектирования, реализации и поддержки базы данных. ЖЦБД состоит из семи этапов: 1. предварительное планирование;2. проверка осуществимости; 3. определение требований; 4. концептуальное проектирование; 5. логическое проектирование;6. физическое проектирование; 7. оценка работы и поддержка базы данных. Предварительное планирование базы данных –На этом этапе собирается информация об используемых и находящихся в процессе разработки прикладных программах и файлах, связанных с ними. Она помогает установить связи между текущими приложениями и то, как используется их информация. Кроме того, позволяет определить будущие требования к базе данных. Информация документируется в виде обобщенной концептуальной модели данных. Проверка осуществимости предполагает подготовку отчетов по трем вопросам: 1. есть ли технология – необходимое оборудование и программное обеспечение – для реализации запланированной базы данных (технологическая осуществимость); 2. имеются ли персонал, средства и эксперты для успешного осуществления плана создания базы данных (операционная осуществимость); 3. окупится ли запланированная база данных (экономическая эффективность).

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

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

Вопрос 2. ФУНКЦИОНАЛЬНЫЕ ВОЗМОЖНОСТИ ЯЗЫКА SQL. Управление доступом к данным. Инструкции (команды) языка SQL можно разделить на следующие шесть основных категорий: - язык определения данных (Data Definition Language — DDL) позволяет создавать и изменять структуру объектов БД, например, создавать и удалять таблицы; - язык манипулирования данными (Data Manipulation Language —DML), используется для манипулирования информацией внутри объектов реляционной БД, например добавляет строки в таблицы; - язык выборки данных (Data Query Language — DQL) включает одну инструкцию SELECT, которая вместе со своими многочисленными опциями и предложениями используется для формирования запросов к реляционной БД; - язык управления доступом к данным (Data Control Language —DCL) позволяет управлять доступом к информации, находящейся внутри БД. Как правило, данный язык используется для создания объектов, связанных с доступом к данным, а также служат для контроля над распределением привилегий между пользователями; - язык управления транзакциями; - язык администрирования данных, с помощью команд которого пользователь контролирует выполняемые действия и анализирует операции БД. Он также используется при анализе производительности системы. Не следует путать администрирование данных с администрированием БД, которое представляет собой общее управление БД и подразумевает использование команд всех уровней. Язык определения данных (DDL) CREATE DOMAIN Определяет новый домен; DROP DOMAIN Удаляет домен; ALTER DOMAIN Изменяет домен; CREATE TABLE Создает в БД новую базовую таблицу; DROP TABLE Удаляет базовую таблицу из БД; ALTER TABLE Изменяет структуру существующей базовой таблицы CREATE VIEW Добавляет в БД новое представление; DROP VIEW Удаляет представление из БД

CREATE INDEX Создает индекс для столбца; DROP INDEX Удаляет индекс столбца; ALTER INDEX Изменяет индекс Язык манипулирования данными (DML) INSERT Добавляет новые строки в таблицы БД; DELETE Удаляет строки из таблиц БД UPDATE Обновляет данные, существующие в таблицах БД Язык выборки данных (DQL) . SELECT Считывает данные из таблиц БД Язык управления доступом (DCL) GRANT Предоставляет пользователю права доступа; REVOKE Отменяет права доступа Язык управления транзакциями COMMIT Завершает текущую транзакцию; ROLLBACK Отменяет текущую транзакцию ; SAVEPOINT Назначает контрольную точку внутри транзакции Язык администрирования базы данных CREATE DATABASE Физически создает БД; CONNECT Подключает к существующей базе данных. Основные категории инструкций языка SQL предназначены для выполнения различных функций, включая построение объектов БД и манипулирование ими, начальную загрузку данных в таблицы, обновление и удаление существующей информации, выполнение запросов к БД, управление доступом к ней и ее общее администрирование. Независимые структуры БД — таблицы, индексы и представления, создаются DDL-запросами. Объекты БД, созданные DDL-запросами, называются метаданными (metadata). На физическом уровне метаданные представляют собой системную БД. Такая БД содержит "данные о данных", т.е. определение других объектов системы. Метаданные хранятся в виде системных таблиц, которые автоматически создаются и изменяются. Таким образом, процесс определения данных — это процесс создания, изменения и

удаления метаданных. Команды DML, DQL, DCL оперируют с существующими данными, хранящимися в структурах БД, определенных запросами DDL. Инструкции SQL сообщают СУБД о необходимости выполнить определенное действие. Запросы SQL позволяют: - создать таблицу; - читать данные; - получать итоговые данные; - добавлять данные; - удалять данные; - обновлять (изменять) данные; - защищать данные. Управление объектами базы данных Объект базы данных — это любой объект, определенный в базе данных и используемый для хранения информации или для обращения к информации. Примерами объектов базы данных могут служить таблицы, представления и индексы. Для управления объектами базы данных используется подмножество DDL-команд языка SQL. Создание, модификация и удаление таблиц Таблица является основным объектом для хранения информации в реляционной базе данных. При создании таблицы обязательно указываются имена полей, содержащихся в таблице, и типы данных, соответствующие полям. Кроме того, при создании таблицы для нолей могут оговариваться ограничительные условия и значения, задаваемые по умолчанию.

Ограничительные условия — это правила, ограничивающие значения величин в поле таблицы базы данных. Значение по умолчанию значение, которое автоматически вводится в поле таблицы базы данных при добавлении новой записи, если пользователь не указал значение этого поля. Для создания таблицы используется оператор CREATE TABLE. Оператор ALTER TABLE . Созданная таблица может быть модифицирована с использованием оператора ALTER TABLE, который позволяет добавлять и удалять поля таблицы, изменять тип данных полей, добавлять и удалять ограничения. Действие, выполняемое оператором ALTER TABLE, определяется ключевым словом, указываемым после имени таблицы: - MODIFY, изменяется определение поля; - ADD, новое поле добавляется в таблицу; - DROP, поле удаляется из таблицы. Оператор DROP TABLE Для удаления таблиц используется оператор DROP TABLE. Если при вызове оператора DROP TABLE указывается ключевое слово RESTRICT и на удаляемую таблицу ссылается какое-либо представление или ограничение, то при выполнении оператора удаления таблицы будет сгенерировано сообщение об ошибке. Если же использовать ключевое слово CASCADE, то параллельно с удалением таблицы будут удалены все ссылающиеся на нее представления и ограничения. Задание ограничений. Ограничения позволяют обеспечить достоверность и непротиворечивость информации в базе данных. Существует достаточно большое количество различного рода ограничений, из которых мы рассмотрим лишь основные: - ограничение NOT NULL; - ограничение первичного ключа; - ограничение UNIQUE; - ограничение внешнего ключа;- ограничение CHECK. Ограничение NOT NULLОграничение NOT NULL может быть установлено для любого поля реляционной таблицы. При наличии ограничения NOT NULL запрещается ввод значений NULL в это поле. Следует понимать, что значение NULL не эквивалентно ни нулевому значению для числовых полей, ни пробелу для полей текстовых — если в поле занесено значение 0 (или пробел), то поле не пустое, а содержит число 0 (или строку, состоящую из одного пробела). Если же значение поля равно NULL, то этоозначает, что поле содержит неопределенное значение (поле пустое), то есть в него не была занесена никакая информация. Ограничение NOT NULL устанавливается для тех полей, в которые при занесении данных в таблицу обязательно должна быть введена какая-либо информация. Например, в таблице, содержащей личные данные о сотрудниках организации, можно задать ограничение NOT NULL для полей, в которых будут содержаться имя и фамилия сотрудника. Ограничение первичного ключа. Первичные ключи указываются при создании таблицы. Так как поля, входящие в состав первичного ключа, не могут принимать значение NULL, то для них обязательным является ограничение NOT NULL. Ограничение первичного ключа может быть задано двумя способами. 1. В том случае, когда первичный ключ состоит только из одного поля, он может быть задан с по- мощью ключевых слов PRIMARY KEY, указываемых при описании поля в операторе CREATE TABLE: Обратите внимание, что указание ограничения NOT NULL для поля, являющегося первичным ключом, является обязательным. 2. Первичный ключ может быть также задан в конце описания таблицы после определений всех полей. Для этого также используется ключевая фраза PRIMARY KEY, после которой в круглых скобках указывается имя поля, составляющего первичный ключ: Второй способ особенно удобен для задания составных первичных ключей. В этом случае в скобках следует перечислить через запятую все поля, составляющие первичный ключ. При использовании составного первичного ключа ограничение NOT NULL должно быть задано для всех полей, входящих в его состав.

Ограничение UNIQUE. Ограничение UNIQUE похоже на ограничение первичного ключа, так как при наличии этого ограничения для некоторого поля все содержащиеся в нем значения должны быть уникальными. Однако в отличие от первичного ключа, ограничение UNIQUE допускает наличие в поле пустых значений (если, конечно, для этого поля не установлено ограничение NOT NULL). Можно также задать ограничение UNIQUE не для одного поля, а для группы полей. Объявление группы полей уникальной — не то же самое, что объявление уникальными нескольких отдельных полей, так как уникальной обязана быть именно комбинация значений, а не просто индивидуальные значения. То есть значение каждого поля, входящего в группу, необязательно должно быть уникальным, а комбинация значений полей всегда должна быть уникальной. Ограничение UNIQUE для группы полей, так же как и составной первичных ключ, задается после описания всех полей таблицы: Ограничение внешнего ключа Ограничение внешнего ключа лежит в основе поддержания ссылочной целостности базы данных. Поле, определяемое в качестве внешнего ключа, используется для ссылки на поле другой таблицы, обычно называющееся родительским ключом, а таблица, на которую внешний ключ ссылается, называется родительской таблицей (родительский ключ часто является первичным ключом родительской таблицы). Типы полей внешнего и родительского ключей обязательно должны быть идентичными. А вот имена полей могут быть разными. Однако во избежание путаницы желательно и имена полей для внешнего и родительского ключей делать одинаковыми. Внешний ключ необязательно должен состоять только из одного поля. Подобно первичному ключу внешний ключ может состоять из любого числа полей, которые обрабатываются как единый объект. Поля родительского ключа, на который ссылается составной внешний ключ, должны следовать в том же порядке, что и во внешнем ключе. Когда поле таблицы является внешним ключом, оно определенным образом связано с таблицей, па которую этот ключ ссылается. Это фактически означает, что каждое значение во внешнем ключе непосредственно привязано к значению в родительском ключе. Синтаксис ограничения FOREIGN KEY имеет следующий вид: FOREIGN KEY имя_внешнего_ключа (список полей внешнего ключа) REFERENCES имя_родительской_таблицы (список полей родительского ключа) Первый список полей — это список из одного или нескольких полей таблицы, разделенных запятыми. Второй список полей — это список полей, которые будут составлять родительский ключ. Списки полей, указываемые в качестве внешнего и родительского ключей, должны быть совместимы: - число полей должно быть одинаковым; - порядок следования полей в списках должен совпадать, причем совпадение определяется не именами полей, которые могут быть разными, а типами данных и размером полей. В некоторых реализациях SQL имеется возможность задавать для внешних ключей каскадное удаление и каскадное обновление. Это означает, что при попытке удалить или модифицировать значение родительского ключа, на которое ссылается внешний ключ, соответствующие записи внешнего ключа также будут удалены (каскадное удаление) или изменены (каскадное обновление). Данные возможности в стандарте ANSI SQL-92 не прописаны.

Один из синтаксических вариантов задания каскадного обновления и удаления выглядит так:

UPDATE OF имя_родительской_таблицы CASCADES

DELETE OF имя_родительской_таблицы CASCADES

Ключевые фразы UPDATE OF и DELETE OF указываются в операторе CREATE TABLE. Вместо ключевого слова CASCADES можно указать слово RESTRICTED — в этом случае изменение и удаление значений родительского ключа, на которые ссылается внешний ключ из данной таблицы, будет запрещено. Ограничение CHECK Ограничение CHECK используется для проверки допустимости данных, вводимых в поле таблицы. Ограничение CHECK состоит из ключевого слова CHECK, сопровождаемого предложением предиката, который использует указанное поле. Любая попытка модифицировать поле или вставить значение в поле, которое могло бы сделать этот предикат неверным, будет отклонена. Проверка корректности значений, заносимых в базу данных, может также выполняться в пользовательских приложениях. Однако ограничение CHECK дает дополнительный уровень защиты от ошибок. Задание ограничения CHECK производится при создании таблицы. Для этого после описания полей таблицы указывается ключевая фраза: CONSTRAINT имя_ограничения CHECK (ограничение) Можно задавать ограничение и для нескольких полей. Для этого следует просто включить их в ограничительное условие. Для формирования сложного ограничения, включающего несколько условий, используются логические операторы AND и OR.(Разряд<=20 AND Зарплата>=1000) Значения по умолчанию Для полей таблицы можно задавать значения по умолчанию, которые будут заноситься в поля при добавлении новой записи в таблицу, если значения этих полей не определены. Значение NULL фактически является значением по умолчанию, принятым для каждого поля таблицы, для которого не задано ограничение NOT NULL и которое не имеет другого значения по умолчанию. Для задания значения по умолчанию используется директива DEFAULT, указываемая в команде CREATE TABLE при описании поля, для которого устанавливается значение по умолчанию: «DEFAULT=0»

Извлечение данных из базы Синтаксис языка запросов к данным (DQL), являющегося одним из подмножеств языка SQL, состоит всего из одной команды SELECT. Эта команда вместе с множеством параметров и предложений служит для формирования запросов к базе данных. Запросы формируются для извлечения из таблиц базы данных информации, соответствующей некоторым требованиям, задаваемым пользователем. Оператор SELECT не используется автономно, вместе с ним обязательно должны задаваться уточняющие предложения. Эти предложения могут быть обязательными и дополнительными. Обязательным является только одно предложение — FROM, без которого оператор SELECT не может работать. Синтаксис оператора SELECT имеет следующий вид: SELECT ALL, DISTINCT, <Cписок полей>,*

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

[WHERE <Предикат-условие выборки или соединения>]

[GROUP BY <Список полей группировки результата>]

[HAVING <Предикат-условие для группы операция>]

[ORDER BY <Список полей, по которым упорядочить вывод>]

Здесь ключевое слово ALL означает, что в результирующий набор строк включаются все строки, удовлетворяющие условиям запроса. Значит, в результирующий набор могут попасть одинаковые строки. И это нарушение принципов теории отношений (в отличие от реляционной алгебры, где по умолчанию предполагается отсутствие дубликатов в каждом результирующем отношении). Ключевое слово DISTINCT означает, что в результирующий набор включаются только различные строки, то есть дубликаты строк результата не включаются в набор. Символ *. (звездочка) означает, что в результирующий набор включаются все столбцы из исходных таблиц запроса. В разделе FROM задается перечень исходных отношений (таблиц) запроса. В разделе WHERE задаются условия отбора строк результата или условия соединения кортежей исходных таблиц, подобно операции условного соединения в реляционной алгебре. В разделе GROUP BY задается список полей группировки. В разделе HAVING задаются предикаты-условия, накладываемые на каждую группу. В части ORDER BY задается список полей упорядочения результата, то есть список полей, который определяет порядок сортировки в результирующем отношении. Например, если первым полем списка будет указана Фамилия, а вторым Номер группы, то в результирующем отношении сначала будут собраны в алфавитном порядке студенты, и если найдутся однофамильцы, то они будут расположены в порядке возрастания номеров групп. В выражении условий раздела WHERE могут быть использованы следующие предикаты: · Предикаты сравнения { =, <>, >,<, >=,<= }, которые имеют традиционный смысл. · Предикат Between A and В — принимает значения между А и В. Предикат истинен, когда сравниваемое значение попадает в заданный диапазон, включая границы диапазона. Одновременно в стандарте задан и противоположный предикат Not Between A and В, который истинен тогда, когда сравниваемое значение не попадает в заданный интервал, включая его границы. · Предикат вхождения в множество IN (множество) истинен тогда, когда сравниваемое значение входит в множество заданных значений. При этом множество значений может быть задано простым перечислением или встроенным подзапросом. Одновременно существует противоположный предикат NOT IN (множество), который истинен тогда, когда сравниваемое значение не входит в заданное множество. · Предикаты сравнения с образцом LIKE и NOT LIKE. Предикат LIKE требует задания шаблона, с которым сравнивается заданное значение, предикат истинен, если сравниваемое значение соответствует шаблону, и ложен в противном случае. Предикат NOT LIKE имеет противоположный смысл.

Управление транзакциями Транзакция – это группа операций над данными, которые выполняются все вместе, или все отменяются. В SQL под транзакцией понимается последовательность инструкций SQL, которые выполняют взаимосвязанные действия и рассматриваются как единое целое. То есть каждая отдельная инструкция решает часть некоторой общей задачи, но для того, чтобы задача была решена до конца, нужно выполнить все инструкции.

Транзакции в реляционной СУБД подчиняются следующему правилу: инструкции, входящие в транзакцию, воспринимаются как единое целое. И все они будут завершены успешно, или ни одна из них не выполняется. То есть СУБД гарантирует, что частичное выполнение транзакции в ней не производится. Обработка транзакций в SQL реализуется с помощью двух инструкций: COMMIT (завершение) – сообщает об успешном завершении транзакции и отсутствии противоречий в базе данных.

ROLLBACK (откат) – сообщает о неуспешном завершении транзакции. По этой инструкции СУБД отменяет все изменения, внесенные в базу в результате выполнения транзакции, и возвращает базу данных в исходное состояние. Откат транзакций означает, что все уже выполненные операции, входящие в состав транзакции, отменяются и все объекты базы данных, затронутые этими операциями, возвращаются в исходное состояние. Для отката транзакции обычно СУБД ведут запись в журнале транзакций, позволяющую восстановить исходные данные при откате. Создание, изменение или удаление одной записи внутри одного файла базы данных относится к простым транзакциям. Однако существует множество гораздо более сложных транзакций. Для поддержки целостности транзакций существует протокол COMMIT/ROLLBACK. Инструкция COMMIT (фиксация транзакции) означает, что все изменения базы данных становятся перманентными. При сбое базы данных все, не зафиксированные изменения теряются. ROLLBACK (откат) – это механизм, позволяющий отменить результаты транзакции. При получении команды ROLLBACK все изменения базы данных с момента последнего COMMIT отменяются.

Билет 4