Конспект лекций по дисциплине «Управление данными» Шахты 2010

Вид материалаКонспект

Содержание


6. Основы языка sql
[union select …]
Inner | { left | right | full } [outer] join
Where exists
2. Команда добавления данных в существующие таблицы и представления INSERT.
|default values
3. Команда создания таблиц и одновременного добавления в них данных SELECT INTO.
Exec sp_dboption ‘select into/bulkcopy’, ‘on’ | ‘off’
5. Команда удаления данных DELETE.
7. Проектирование баз данных
Анализ предметной области
Процесс обработки данных – совокупность операций
Разработка концептуальной модели данных
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   12

6. ОСНОВЫ ЯЗЫКА SQL

6.1 Команды SQL-DML


1. Команда выборки данных SELECT.

SELECT [Диапазон] СписокСтолбцов FROM СписокТаблицСУсловиямиОбъединения

[WHERE Условие]

[GROUP BY УсловиеГруппировки [[HAVING УсловиеНаГруппу]]

[ORDER BY УсловиеСортировки]

[COMPUTE ИтоговоеВыражение]

[UNION SELECT …]


Здесь:

Диапазон – задает диапазон строк, возвращаемый после выполнения запроса. Синтаксис:

{ALL | DISTINCT} {TOP n [PERСENT] [WITH TIES]}

где ALL | DISTINCT – включать или нет в результат выборки повторяющиеся строки. По умолчанию действует установка ALL;


TOP n [PERСENT] [WITH TIES] – прямое указание количества первых строк, которое должно быть возвращено запросом. Если указано ключевое слово PERCENT, то количество определяется не абсолютным значением, а в процентах от общего количества (естественно, в этом случае n <= 100). Если дополнительно указано предложение WITH TIES, то будут возвращены и строки, дублирующие последние во множестве, ограниченном значением n.


СписокСтолбцов – задает список столбцов в результирующем множестве. Список может быть задан символом * - выборка всех столбцов из всех таблиц участвующих в предложении FROM, или перечислением имен колонок и/или выражениями. Если в запросе участвую несколько таблиц, то имена колонок следует задавать в формате:

ИмяТаблицы.* - для выборки всех столбцов таблицы,

ИмяТаблицы.ИмяКолонки | АлиасТаблицы.ИмяКолонки – для включения конкретного столбца,

Выражение – для построения вычисляемых столбцов.

В двух последних случаях можно переопределить имя любого столбца с помощью предложения AS НовоеИмя. В качестве выражений могут выступать любые, в соответствии с типом данных столбцов операции, функции сервера или пользователя, агрегатные функции (Count(), Count(*), Sum(), Max(), Min(), Avg(), …).


FROM СписокТаблицСУсловиямиОбъединения – раздел, задающий имя таблицы или список таблиц, из которых выбираются данные в запросе и условия их объединения, если таблиц несколько. Синтаксис списка:

ИмяТаблицы1 [AS Алиас1]

INNER | { LEFT | RIGHT | FULL } [OUTER] JOIN

ИмяТаблицы2 [AS Алиас2]

ON ИмяТаблицы1.ИмяСтолбца1 = ИмяТаблицы2.ИмяСтолбца2

| ON Алиас1.ИмяСтолбца1 = Алиас2.ИмяСтолбца2


WHERE Условие – задает логическое выражение, ограничивающее отбор строк в результирующее множество. В качестве такого выражения может служить простое логическое условие, несколько логических условий объединенных логическими операторами. В качестве операндов – логических условий – константы, имена столбцов, выражения, результаты выполнения подзапроса. В качестве операторов – простое (= ; > ; < и т.д.) или множественное (IN ; ALL ; ANY ; EXIST) логическое условие. Примеры:

Select Код, Улица From Улицы Where Код > 5


Select Код, Улица From Улицы Where Код > 5 AND Код < 100


Select Сотрудники.ТабНом, Сотрудники.Фамилия, Начисления.Начислено

From Сотрудники Inner Join Начисления

On Сотрудники.ТабНом = Начисления. ТабНом

Where Начисления.Начислено >= (Select Avg(Начислено) From Начисления)


Select Клиенты.ЛицевойНомер, Клиенты.Фамилия

From Клиенты Inner Join Льготы

On Клиенты. ЛицевойНомер = Льготы. ЛицевойНомер

Where Клиенты.ЛицевойНомер Not In

(Select Distinc Льготы.ЛицевойНомер From Льготы

Where Льготы.Код = ‘01’)

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

SELECT <Атрибут1>, < Атрибут2> [, …] FROM <Таблица1>

WHERE (<Атрибут1>, < Атрибут2> [,…]) [NOT] IN

(SELECT < Атрибут1>, < Атрибут2> [, …] FROM <Таблица2>

WHERE <Условие>)

Предложение WHERE при использовании операторов ANY и ALL представляется следующим образом:

WHERE <Выражение>  ANY | ALL (SELECT <Атрибут> FROM …)

где  - опрератор сравнения (<, >, >= и т.д.). Например:

WHERE x > ANY (SELECT y FROM …)

условие считается истинным, если x больше хотя бы одного значения y в результирующем множестве выполнения подзапроса. Очевидно, что в предложении

WHERE x <> ANY (SELECT y FROM …)

условие будет выполнено, если x не совпадает ни с одним из значений результата выполнения подзапроса. Оператор = ANY эквивалентен оператору IN.

В предложении

WHERE x > ALL (SELECT y FROM …)

условие будет истинным, если x больше всех значений y множества, формируемого подзапросом. Можно отметить, что оператор > ALL означает «больше, чем максимум», а < ALL – «меньше, чем минимум».

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

SELECT <Атрибут1>, < Атрибут2> [, …] FROM <Таблица1>

WHERE EXISTS

(SELECT * FROM <Таблица2>

WHERE <Таблица1>.< АтрибутN>  <Таблица2>.< АтрибутM>

AND <Условие>)

Пример. Выбрать кафедры, на которых работают сотрудники в возрасте до 23 лет:

SELECT Кафедры.Наименование FROM Кафедры WHERE EXISTS

(SELECT * FROM Сотрудники WHERE Кафедры. Наименование = Сотрудники.Кафедра

AND Сотрудники.Возраст < 23)


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

1. Выборка всех начислений для всех сотрудников за указанный период

Select Сотрудники.ТабНом, Сотрудники.Фамилия, Начисления.Начислено

From Сотрудники Inner Join Начисления

On Сотрудники.ТабНом = Начисления. ТабНом

Where Начисления.Период Between ’01.01.07’ And ’31.12.07’

2. Определение суммы начислений и среднего заработка для каждого сотрудника

Select Сотрудники.ТабНом, Сотрудники.Фамилия,

Sum(Начисления.Начислено), Avg(Начисления.Начислено)

From Сотрудники Inner Join Начисления

On Сотрудники.ТабНом = Начисления.ТабНом

Where Начисления.Период Between ’01.01.01’ And ’31.12.01’

Group By Сотрудники.ТабНом


HAVING УсловиеНаГруппу – раздел, описывающий условие включения группы в результирующее множество.


ORDER BY УсловиеСортировки – определение сортировки результатов. Здесь

УсловиеСортировки - список столбцов в формате:

ИмяКолонки1 [ASC | DESC], …

где ASC | DESC - указание порядка (по возрастанию или по убыванию) сортировки результата запроса по значениям столбца. По умолчанию используется ASC.


COMPUTE ИтоговоеВыражение – задает выражение, вычисляемое в качестве итогового для всего результата запроса или каждой группы, если в запросе используется группировка данных. В качестве выражения должны использоваться агрегатные функции SQL. Например:

Select Сотрудники.ТабНом, Сотрудники.Фамилия, Начисления.Начислено

From Сотрудники Inner Join Начисления

On Сотрудники.ТабНом = Начисления.ТабНом

Where Начисления.Период Between ’01.01.01’ And ’31.12.01’

Order By Сотрудники.ТабНом Asc, Начисления.Период Asc

Compute Sum(Начисления.Начислено), Avg(Начисления.Начислено)

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

Select Сотрудники.ТабНом, Сотрудники.Фамилия, Начисления.Начислено

From Сотрудники Inner Join Начисления On Сотрудники.ТабНом = Начисления.ТабНом

Where Начисления.Период Between ’01.01.01’ And ’31.12.01’

Group By Сотрудники.ТабНом

Compute Sum(Начисления.Начислено), Avg(Начисления.Начислено)

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


UNION – предложение, содержащее еще один оператор SELECT. В одном запросе допускается использование нескольких предложений UNION. Результаты выполнения всех операторов SELECT будут объединены в одно множество. Условием возможности такого объединения является совпадение имен колонок во всех запросах (при необходимости следует использовать алиасы) и типов данных (при необходимости следует использовать функции преобразования). При объединении результатов сортировка каждого запроса не имеет смысла, но допускается применение одного «общего» предложения ORDER BY. Пример:

Select ТабНомер As Код, Фамилия, ‘Преподаватели’ As Статус From Преподаватели

Union Select ТабНомер As Код, Фамилия, ‘Сотрудники’ As Статус From СотрудникиАХЧ

Union Select НомерЗачетки As Код, Фамилия, ‘Студенты’ As Статус From Студенты

Order By Статус


2. Команда добавления данных в существующие таблицы и представления INSERT.

INSERT INTO {ИмяТаблицы WITH УровеньБлокировки} | ИмяПредставления

|{СписокКолонок)

| VALUES {(DEFAULT | NULL | Выражение1, … )}

| SQL_Select

| SQL_Execute }

|DEFAULT VALUES


Здесь:

ИмяТаблицы и ИмяПредставления – имя таблицы или представления, в которую производится вставка строк.

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

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

VALUES – ключевое слово, задающее значения данных. Список значений определяется одним из следующих вариантов:

1) указанием значения для каждого столбца в виде: DEFAULT – значения по-умолчанию; NULL – значения NULL; Выражение – выражения с использованием констант, переменных и функций.

2) SQL_Select – подзапросом с помощью оператора SELECT

3) SQL_Execute – результатом выполнения хранимой процедуры, т.е. выполнения команды:

EXEC ИмяХранимойПроцедуры Параметры.

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


3. Команда создания таблиц и одновременного добавления в них данных SELECT INTO.

SELECT ИмяКолонки1 AS Алиас1, …

INTO ИмяНовойТаблицы

FROM SQL_Select


Здесь:

ИмяКолонки – задает имя колонки таблицы, которая будет включена в результат,

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

ИмяНовойТаблицы – имя создаваемой таблицы. Структура и данные таблицы будут определяться типом данных и данными столбцов, выбираемых оператором SELECT.

SQL_Select – оператор SELECT.

Выполнение команды SELECT INTO по умолчанию запрещено. Для включения или выключения возможности ее выполнения используется хранимая процедура с соответствующим параметром.

EXEC SP_DBOPTION ‘SELECT INTO/BULKCOPY’, ‘ON’ | ‘OFF’


4. Обновление данных UPDATE.

UPDATE {ИмяТаблицы WITH УровеньБлокировки} | ИмяПредставления

SET ИмяКолонки1 = DEFAULT | NULL | Выражение1 , …

WHERE Условие


Здесь:

SET – ключевое слово, определяющее список изменяемых столбцов и соответствующее каждому столбцу новое значение (по-умолчанию, NULL или определяемое выражением).

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


5. Команда удаления данных DELETE.

DELETE FROM {ИмяТаблицы WITH УровеньБлокировки} | ИмяПредставления

WHERE Условие


Команда удаляет строки из указанной таблицы или представления в соответствии с выбранным в предложении WHERE условием. Если WHERE отсутствует, то удаляются все строки.


7. ПРОЕКТИРОВАНИЕ БАЗ ДАННЫХ


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




Рис. 1. Этапы жизненного цикла БД
Процесс проектирования БД представляет собой последовательность переходов от неформального словесного описания информационной структуры предметной области к формализованному описанию объектов предметной области в терминах некоторой модели. В общем случае можно выделить следующие этапы проектирования:
  1. Системный анализ и словесное описание информационных объектов предметной области.
  2. Проектирование концептуальной модели предметной области  частично формализованное описание объектов предметной области в терминах некоторой семантической модели, например, в терминах ЕR-модели.
  3. Логическое проектирование, то есть описание БД в терминах принятой логической модели данных.
  4. Физическое проектирование БД, то есть выбор эффективного размещения БД на внешних носителях для обеспечения наиболее эффективной работы приложения.

Рассмотрим более подробно этапы проектирования БД.


Анализ предметной области


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

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

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

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

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

Описание на структурированном языке базируется на следующих прави­лах:
  • бизнес-логика процесса представляется как сочетание последовательных инструкций, операций выбора и итераций;
  • глаголы являются активными и ориентированы на целевое дейст­вие.

В качестве примера рассмотрим фрагмент спецификации для процесса «Составление свод­ной ведомости по отгрузке продукции».

ПРОЦЕСС: Составление сводной ведомости.

ВХОД: Данные отчета по продукции. Документ об отгрузке, Себестоимость по цеху готовой продукции.

ВЫХОД: Сводная ведомость по отгрузке для цеха готовой продукции.

АЛГОРИТМ:

Ежедневно и ежемесячно формировать ведомость по отгрузке продукции. Для этого:
  1. Выбрать из носителя данных Товарно-транспортные накладные документы по отгрузке:
    • товарно-транспортные накладные с отметками охраны и цеха готовой продукции об отгрузке, а также со штампом магазина;
    • комплект документов, включающий Приемный акт покупателя, Акт о возврате продукции. Товарно-транспортную накладную.
  2. Сформировать ведомость по отгрузке с включением следующих атрибутов:

наименование; фасовка; количество – отгруженной продукции, возвращенной про­дукции; начислений при отгрузке продукции по стоимости меньшей, чем заявлена покупателем; удержаний при отгрузке продукции по стоимости выше заявленной покупателем,
  1. Сохранить ведомость по отгрузке на носителе данных Ведомости.
  2. Выбрать ежемесячно из носителя данных Ведомости по цеху готовой продукции и составить ведомость отгруженной продукции по ассортименту за период с включением следующих атрибутов: цех отгрузки; код; наименование фасовки; ко­личество мест; масса в кг; сумма без НДС; НДС за продукцию; торговая наценка без НДС; НДС торговой наценки. Разбить продукцию по категориям: собствен­ная; покупная; отгруженная тара - наименование, количество, сумма, амортизация.
  3. Получить из балансового отдела величину себестоимости по каждому виду про­дукции цеха готовой продукции.
  4. Осуществить проводку со счета реализованной продукции на счет 68 - по собственной, 19 - по покупной.
  5. Осуществить проводку со счета реализованной продукции на сумму себестоимости.
  6. Определить результат реализации по каждому виду продукции на 46 счете (Кредит – прибыль, Дебит – убыток).

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


Разработка концептуальной модели данных


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

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

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

Сущности соответ­ствует набор атрибутов, предназначенных для представления их свойств. Набор значений, кото­рые могут быть присвоены атрибуту, называется доменом. Атрибуты делятся на простые и составные, однозначные и многозначные, исходные и производные. Простой атрибут описывает эле­ментарное свойство сущности и не может быть декомпозирован на составные компоненты. Состав­ной атрибут состоит из независимых простых атрибутов. Однозначный атрибут принимает единст­венные значения для сущности. Многозначный атрибут содержит произвольное количество значе­ний для одной сущности. Производные атрибуты вычисляются на основе значений других атрибутов, которые могут принадлежать различным сущностям.

Ключ – атрибут или набор атрибутов, уникальным образом определяющие конкретный экземпляр сущности. Два экземпляра сущности не могут обладать одинаковыми комбинациями значений атрибутов, входящих в ключ. Каждая сущность может иметь произвольное количество ключей, которые позиционируются в качестве потенциальных (альтернативных) . Один из потенциальных ключей объявляется в качестве первичного ключа. Дополнительным требованием является отсутст­вие неопределенных значений тина NULL для атрибутов, входящих в первичный ключ. В состав ключа слабых сущностей обязательно входят ключевые атрибуты связанных с ними сущностей.

Сущности соединяются между собой поименованными связями. Степенью связи называется количество сущностей, которые участвуют в этой связи. Унарная связь имеет степень один, бинарная связь – два. Показатель кардинальности задает количество возможных связей для каждой из связанных сущностей. В зависимости от значения показателя кардинальности выделяют следующие виды связи:
  • связь типа «1:1» представляет бинарную связь, в которой каждой сущности первого из свя­занных классов сущностей соответствует единственная сущность второго класса и наоборот;
  • связь типа «1:М» представляет бинарную связь, в которой каждой сущности первого из связанных классов сущностей соответствует подмножество М сущностей второго класса. В общем случае это подмножество может быть пустым;
  • связь типа «М:N» представляет бинарную связь, в которой каждой сущности первого из связанных классов сущностей соответствует подмножество сущностей второго класса и наоборот;
  • связь тина «М:1» представляет бинарную связь, в которой каждой сущности первого из связанных классов сущностей может соответствовать единственная сущность второго класса, а ка­ждой сущности второю класса соответствует подмножество сущностей первого класса. В общем случае это подмножество может быть пустым.

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

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

Концептуальная модель содержит следующие сильные сущности: «Пользователи», «Полу­чатели», «Группы получателей», «Плательщики», «Тарифы», «Кассовые документы», «Банковские атрибуты», «Проводки», «Отчеты», «Настройки». «Отделения» и слабую сущность «Квитан­ция».

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

табельный номер,

наименование получателя,

дата первоначальной инициализации получателя,

банковский идентификационный номер,

краткое наименование,

расчетный счет,

адрес.

Сущность «Получатели» соединена с сущностью «Тип платежа» связью с кардинально­стью «один-ко- многим», т.к. один получатель может иметь несколько типов платежей. В част­ности, для ОАО «Водоканал» существует два типа платежей – «За водоснабжение» и «Прочие платежи». Степень участия сущности «Получатели» в рассматриваемой связи является полной, а сущности «Тип платежа» – частичной.

Анализируемая сущность «Получатели» соединена с сущностью «Квитанции» связью с кардинальностью «один-ко-многим». Это определяется тем, что в адрес одной организации по­ступает произвольное количество квитанций.

Сущность «Группы получателей» предназначена для представления информации об осо­бенностях, присущих подмножеству получателей. К атрибутам этой сущности относятся:

номер группы,

наименование группы,

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

момент взимания комиссии (по требованию кассового работника, непосредственно после регистрации квитанции),

документ, которым зачисляется комиссия на счет доходов банка,

момент формирования документов платежа (по требованию кассового работника, непо­средственно после регистрации квитанции),

момент печати документов.

Сущность «Группа получателей» соединена с сущностью «Получатели» связью с карди­нальностью «один-ко-многим», так как группа получателей объединяет нескольких получателей.

Степень участия сущности «Группа получателей» в рассматриваемой связи является полной, а сущности «Получатели» - частичная.

Аналогично представляется информация и об остальных сущностях и связях между ними.