Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Answers v.0.6.docx
Скачиваний:
6
Добавлен:
26.09.2019
Размер:
244.13 Кб
Скачать

5. Модель «объект-свойство-отношение», er-диаграммы, проектирование схемы баз данных.

Цель инфологического моделирования — обеспечение наиб. естественных для человека способов сбора и представления инфы, кот. хранится в БД. Основными эл-тами инфологических моделей являются сущности, связи между ними и их свойства (атрибуты).

Сущность — объект, кот. можно отличить от другого и инфу о кот. необходимо хранить в БД. Экземпляр сущности относится к конкр. вещи в наборе. #, типом сущности мб город, экземпляром — Москва.

Атрибут — именованная хар-ка сущности. Его название должно быть уникальным для конкр. типа сущности (цвет мб определен для многих сущностей и не может быть определен для одной: автомобиль, вода).

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

Связь — ассоциирование двух или более сущностей.

При построении инфологических моделей можно использовать язык ER-диаграмм (Entity-Relationship — сущность-связь). В них сущности изображаются прямоугольниками, ассоциации — ромбами или шестиуг-ми, атрибуты — овалами, связи между ними — ненаправ. ребрами, над кот. может проставляться степень связи и необходимое пояснение.

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

В ER-диаграммах связь — линия, соед. сущности (изображ. в виде геом. фигур), атрибуты, ассоциации и другие инф-ные объекты. В тексте этот термин используется для указания на взаимозависимость сущностей. Если эта взаимозависимость имеет атрибуты, то она называется ассоциацией.

Между 2-мя сущностями возможны 3 типа связей.

1-й тип — связь один-к-одному: в каждый момент времени каждому экземпляру сущности А соответствует 1 или 0 экземпляров сущности В.

2-й тип — связь один-ко-многим: одному экземпляру сущности А соответствуют 0 или больше экземпляров сущности В.

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

Иногда выделяют 4-й тип связи — многие-к-одному, но он явл. частным случаем связи 2-го (3-го?) типа.

#: связь между сущностями билет и пассажир:

  • Каждый билет предназначен для одного пассажира.

  • Каждый пассажир может иметь 1 и более билетов.

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

6. Язык sql, его структура, стандарты, история развития. Подмножество языка dml: операторы select, insert, update, delete.

Structured Query Language — структурированный язык запросов. Ориентирован на операции с данными, представ. в виде логич. связанных таблиц. Особенность предложений этого языка состоит в том, что они ориентир. на результат обработки данных. Т. е. SQL сам определяет, где находятся данные, какие индексы и наиболее эффективные последовательности операций следует использовать для их получения.

История развития и стандарты SQL.

Сегодня для большинства СУБД языком манипулирования данными явл. SQL. Его появление и развитие как средства описания доступа к БД связано с созданием теории РБД. Прообраз языка SQL возник в 1970 году в рамках научно-исследовательского проекта IBM, наз. «System/R». Сегодня SQL — стандарт интерфейса с реляционными СУБД.

1-й международный стандарт языка SQL был принят в 1989 г. (SQL/89, SQL1), в 1992 г. — 2-й стандарт (SQL/92, SQL2). В 1999 г. появился стандарт SQL3, в кот. были введены новые типы данных. Также предостав. возможность задания сложных структурир. типов данных, что более соотв. объектной ориентации. Впервые появились стандарты на события и триггеры.

Запрос SQL состоит из 1 или больше операторов, идущих друг за другом и разделенных т-кой с запятой.

Каждый столбец в любой таблице хранит данные определенных типов. Различают базовые типы данных:

  • строки символов фиксированной длины;

  • целые и вещественные числа;

  • доп. типы данных: строки переменной длины, денеж. единицы, дату и время, логич. данные.

Структура SQL.

Язык SQL делится на подъязыки (подмножества):

  1. Язык определения данных (Data Definition Language, DDL) предостав. пользователям средства указания типа данных и их структуры, средства задания ограничений для инфы, хранимой в БД.

Операторы: Create, Alter, Drop.

  1. Язык манипулирования данными (Data Manipulation Language, DML) позволяет вставлять, обновлять и извлекать информацию из БД.

Операторы: Select, Insert, Delete, Update.

  1. Язык управления доступом к данным (Data Control Language, DCL).

Операторы: Grant, Revoke.

  1. Язык управления транзакциями (Transaction Control Language, TCL) состоит из операторов, предназнач. для управ. ходом выполнения транзакций.

Операторы: Commit, Rollback, Savepoint.

Запросы на получение данных из таблиц (1+) выполняются с помощью оператора Select. Синтаксис:

Select [Distinct] <список_полей> | *

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

[Where <условие_фильтрации_строк>]

[Group by <условия_группировки_строк>]

[Having <условие_фильтрации_групп>]

[Order by <условие_сортировки>];

Результатом выполнения оператора Select явл. набор данных (временная таблица), кот. передается пользователю, запросившему данные, или используется как источник данных для др. оператора (подзапрос). Именно возмож. включ. одного оператора внутрь др. стала поводом к названию языка структурированным.

Select * from <имя_таблицы>; — выборка всей инфы из таблицы. Символ * заменяет необх. указ. всех полей.

Select <поле1>[, <поле2>, …] from <имя_таблицы>; — вертикальная фильтрация с указанием порядка вывода атрибутов. В результат попадут данные только из указ. полей, причем в том же порядке, в каком указаны поля в операторе Select.

Для исключения дубликатов из результата исп. параметр distinct, кот. указ. сразу после Select.

#: Select distinct Prod_ID from Outgoing; — вывод номеров хотя бы раз проданных товаров.

 Для сортировки результата исп. параметр Order by.

Select * from Dealers Order by Name;

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

  • операторы сравнения: =, <, >, <=, >=, <>;

  • булевы операторы: and, or, not;

  • оператор проверки на вхожд. в множество: in;

  • оператор проверки на вхожд. в диапазон: Between;

  • оператор проверки на существование: Exists;

  • оператор проверки удовлетворению шаблону (для символьных полей): Like;

  • операторы сравн. с Null: is Null, is not Null;

  • агрегатные ф-ии: Count, Sum, Avg, Max, Min;

  • константы и выражения;

  • подзапросы.

Count — возвращает количество записей в группе. Возможно 3 варианта использования функции:

Count(*) — подсчет количества записей;

Count(<поле>) — подсчет кол-ва знач. (отличных от Null) в указанном поле;

Count(distinct <поле>) — подсчет кол-ва уник. знач. (отличных от Null) в указанном поле.

Любая новая инфа попадает в БД с помощью оператора Insert. Cинтаксис:

Insert into <имя_таблицы>[(<атрибуты>)]

values (<значения>);

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

Если при добавлении строки атрибут не был указан, то СУБД попытается присвоить ему значение по умолчанию (если было указано при создании таблицы). Если значения по умолчанию нет, СУБД попытается указать для данного атрибута значение Null (если это не противоречит ограничениям целостности). Иначе оператор Insert будет завершен с ошибкой.

Insert into Dealers values(1, ‘Иванов А.И.’, 3, null); — вставка строки с указанием всех атрибутов.

Вставка множества записей осуществляется с помощью подзапроса внутри оператора Insert:

Insert into <имя_таблицы> Select;

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

Update <имя_таблицы> Set <поле1>=<значение1>,[<поле2>=<значение2>,…]

[Where <условие_фильтрации_строк>];

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

Update Managers Set Percent=5 Where Man_ID=1; — изм. знач. поля в 1 строке таблицы.

Синтаксис оператора не допускает одновременное указание нескольких таблиц после слова Update. Подзапросы в параметре Where используются, когда необходимо составить условие фильтрации на основе данных других таблиц. Например:

Update Managers Set Percent=Percent*0.9

Where Man_ID Not in

(Select distinct Man_ID from Outgoing

Where Out_Date>=sysdate-7); — понижение комиссионных на 10% у менеджеров, кот. не продали ни одного товара за последнюю неделю.

Оператор удаления строк Delete.

Delete from <имя_таблицы>

[Where <условие_фильтрации_строк>];

Параметр Where используется для отбора строк, кот. необходимо удалить. Если параметр Where не будет указан, то удалятся все строки указанной таблицы.

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

Delete from Managers Where Man_ID=1; — удаление из Managers инфы о менеджере с номером 1.

Подзапросы исп. аналогично оператору Update.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]