Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
536.pdf
Скачиваний:
1
Добавлен:
15.11.2022
Размер:
2.31 Mб
Скачать

• атрибут «Имя сотрудника» не очень хорош для потенциального ключа, так как среди служащих на предприятии могут быть, к примеру, два Иванов Петровых;

атрибут «Номер страхового полиса сотрудника» является уникаль­ ным, но проблема в том, что СОТРУДНИК может не иметь такового;

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

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

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

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

Если сущности в IDEF1X диаграмме связаны, связь передает ключ (или набор ключевых атрибутов) дочерней сущности. Эти атрибуты назы­ ваются внешними ключами. Внешние ключи определяются как атрибуты первичных ключей родительского объекта, переданные дочернему объекту через их связь. Передаваемые атрибуты называются мигрирующими.

5.5.Классификация сущностей в IDEF1X. Зависимые и независимые сущности

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

Дочерняя сущность, уникальность которой зависит от атрибута внеш­ него ключа, называется зависимой сущностью. В примере на рис. 6 сущ­ ность СОТРУДНИК является зависимой сущностью потому, что его идеи*

тификация зависит от сущности ОТДЕЛ. В обозначениях IDEF1X зависи­ мые сущности представлены в виде закругленных прямоугольников.

Зависимые сущности далее классифицируются на сущности, которые не могут существовать без родительской сущности, и сущности, которые не могут быть идентифицированы без использования ключа родителя (сущности, зависящие от идентификации). Сущность СОТРУДНИК при­ надлежит ко второму типу зависимых сущностей, так как сотрудники мо­ гут существовать и без отдела.

Напротив, существуют ситуации, в которых сущность зависит от су­ ществования другой сущности. Рассмотрим две сущности: ЗАПРОС, ис­ пользуемый для отслеживания запросов покупателей, и ПОЗИЦИЯ ЗА­ ПРОСА, который отслеживает отдельные элементы в ЗАПРОСЕ. Связь между этими двумя сущностями может быть выражена в виде ЗАПРОС <содержит> один или несколько ПОЗИЦИЙ ЗАПРОСА. В этом случае ПОЗИЦИЯ ЗАПРОСА зависит от существования ЗАКАЗА.

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

5.6. Типы связей между сущностями. Идентифицирующие и не идентифицирующие связи

В IDEF1X концепция зависимых и независимых сущностей усилива­ ется типом взаимосвязей между двумя сущностями. Если вы хотите, чтобы внешний ключ передавался в дочернюю сущность (и в результате создавал зависимую сущность), то можете создать идентифицирующую связь ме­ жду родительской и дочерней сущностью.

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

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

Неидентифицирующие связи между объектами отображаются пунк­ тирной линией. Так как переданные ключи в неидентифицирующей связи не являются составной частью первичного ключа дочерней сущности, то этот вид связи не проявляется ни в одной идентифицирующей зависимо­ сти. В этом случае и ОТДЕЛ, и СОТРУДНИК рассматриваются как неза­ висимые сущности.

Тем не менее взаимосвязь может отражать зависимость существова­ ния, если бизнес-правило для взаимосвязи определяет, что внешний ключ не может принимать значение NULL. Если внешний ключ должен сущест­ вовать, то это означает, что запись в дочерней сущности может существо­ вать только при наличии ассоциированной с ним родительской записи.

5.7. Преимущества IDEF1X

Основным преимуществом IDEF1X, по сравнению с другими много­ численными методами разработки реляционных баз данных, такими как ER и ENALIM, является жесткая и строгая стандартизация моделирования. Установленные стандарты позволяют избежать различной трактовки по­ строенной модели.

5.8.Модель «гсклад» в нотации IDEF1X

Взаключение рассмотрения методологии IDEF1X приведем рассмот­ ренную ранее (см. п. 4.1) модель базы данных для склада (рис. 8).

Город

Тип документа

Склад

 

Остаток

 

ИД остатка

 

 

 

Код склада

 

 

 

 

 

 

 

 

 

Название

 

Код склада (FK)

 

 

 

 

Код группы (FK)

 

 

 

Реквизиты

 

 

 

 

 

Код мат.цен. (FK)

 

 

 

УГ

 

 

 

 

 

Количество

 

 

 

I

 

 

 

 

 

Цена

 

 

 

______ I

 

 

Клиент

 

Документ

 

 

Перемещение

 

 

 

ИД перемещения

!ИД клиента

 

Дата

 

 

Дата (FK)

 

 

Код типа документа (FK)

 

! Название

К -----------

 

Номер (FK)

Номер

 

 

ИД города (FK)

Ч

i

Код мат.цен. (FK)

!ИД банка (FK)

 

Код склада (FK)

7-

Код типа документа (FK)

! Реквизиты

 

ИД клиента (FK)

 

 

Код группы (FK)

I

 

 

 

 

Количество

 

 

 

 

Цена

 

 

 

 

 

I

 

 

 

 

 

I

Банк

 

 

 

 

<!>

 

Группа мат.цен.

 

Код группы (FK)

 

 

Код группы

I

 

 

 

 

Код мат.цен.

 

 

 

 

 

 

 

Название

1

 

Название

 

 

 

 

 

Рис. 8. IDEF1X диаграмма - «склад»

6.SQL (Structured System Language)

6.1.Структура запроса, основные ключевые слова и операторы

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

В SQL используется приблизительно тридцать операторов (мы будем рассматривать намного меньше). Каждый оператор «просит» СУБД вы­ полнить определенное действие, например, прочитать данные, создать таблицу или довести в таблицу новые данные. Все операторы SQL имеют одинаковую структуру, которая показана на рис. 9.

Глагол

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

DELETE FROM ДОКУМЕНТ WHERE ДАТА>’ l .03.2000’

Ключевые слова

Имя столбца

\Константа

Рис. 9. Синтаксис SQL

Каждый оператор SQL начинается с глагола, т.е. ключевого слова, описывающего действие, выполняемое оператором. Типичными глаголами являются SELECT (выбрать), CREATE (создать), INSERT (добавить), DE­ LETE (удалить). После глагола идет одно или несколько предложений. Предложение описывает данные, с которыми работает оператор, или со­ держит уточняющую информацию о действии, выполняемом оператором. Каждое предложение также начинается с ключевого слова, такого как WHERE (где), FROM (откуда), HAVING (имеющий). Конкретная структу­ ра и содержимое предложения могут изменяться. Многие предложения содержат имена таблиц и столбцов; некоторые из них могут содержать до­ полнительные ключевые слова, константы и выражения.

6.1.1. Список основных операторов SQL:

Оператор

Описание

Обработка данных

 

SELECT(Bbi6npaTb)

Считывает данные из БД

ГМ8ЕКТ(вставлять)

Добавляет новые строки в БД

ОЕЕЕТЕ(удалять)

Удаляет строки из БД

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