Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
Методология моделирования IDEF1X.
Для описания логической модели реляционной базы данных существует специальная нотация, которая называется IDEF1X. Это одна из нотаций семейства IDEF – семейство моделей, используемых для описания информационных моделей систем. В это семейство входит IDEF0 – для описания бизнес процессов, IDEF3 – для описания систем документооборота, IDEF5 – для описания БЗ.
- сущности изображаются в виде прямоугольников с прямыми и закругленными углами. Прямоугольники с закругленными углами представляют зависимые сущности, уникальные идентификаторы которых включают внешний ключ, определяющий связь с другой сущностью. Независимые сущности (обычные прямоугольники) в первичном ключе не содержат вторичный. Содержание первичного ключа в прямоугольнике отчеркивается. Над прямоугольником пишется имя сущности. В нижней части прямоугольника указываются все остальные атрибуты. Связи изображаются в виде линий: сплошных и пунктирных. Точка означает конец «много». Возможно уточнение количества экземпляров. Нотация IDEF1X положена в основу Case-средства ER Win. Дадим основные элементы нотации:
Нотация
| Название
| Значение
| Отпуск
Код отпуска
Код клиента (FK)
| Независимая сущность
| Сущность, в уникальный идентификатор которой не входит связь с другой сущностью.
| Строка отпуска
Код отпуска (FK)
Номер строки
Количество
Код детали (FK)
| Зависимая сущность
| Сущность, в уникальный идентификатор которой входит связь с другой сущностью.
| Прямая с кругом на конце
| Идентифицирующая связь
| Связь между сущностями, являющаяся частью уникального идентификатора.
| Пунктирная с точкой на конце
| Неидентифицирующая связь
| Связь между сущностями, не являющаяся частью уникального идентификатора.
| Прямая с точкой и буквой Р
| 1…n
|
| Прямая с точкой и буквой Z
| 0…1
|
| Отрезок с жирными точками на концах
| M:N
|
| Две прямые с кругом над ними
| Полное наследование
| Сущность родитель является супертипом для потомков, которые все должны быть указаны
| Прямая с кругом над ней
| Неполное наследование
| Не все потомки могут быть указаны
| Ромб и прямая с точкой
| Агрегация (если ромб заштрихован, то каскадное удаление)
|
|
24 сентября 2012 г.
Рассмотрим в нотации IDEF1X модель проектной организации.
Данная модель позволяет охарактеризовать семантику основных элементов БД. В ней можно выделить стержневые сущности, которые соответствуют основным понятиям предметной области: служащий и проект. В модели используется 2 «справочника»: должность и отдел – которые связаны со стержневыми сущностями отношением М:1 со стержнем (на стержне конец «много», то есть много экземпляров стержня соответствует одному экземпляру справочника).
Трудовой стаж является характеристической. Она уточняет свойства стержня «служащий». Характеристическая сущность связана со стержнем отношением 1:М. Сущность «участие» называется ассоциацией между стержнями «сотрудник» и «проект», то есть это связь М:М и является бизнес-событием предметной области. Можно выделить сущностную и несущностную ассоциацию. Сущностная кроме 2 первичных ключей связываемых сущностей содержит другие атрибуты, несущностная содержит только 2 первичных ключа и на концептуальной модели может не изображаться.
Рассмотрим для примера «расписание занятий».
Фрагмент базы ГИБДД.
Перейдем к рассмотрению модели БД тестовой информационной системы «склад деталей». Нарисуем фрагмент логической модели БД.
В модели 2 стержня: деталь и поставщик – один справочник – материал и бизнес-событие поставка реализуется посредством ассоциативной сущности между деталью и поставщиком. При этом эта сущность будет независима, так как используется счетчик кода поставки. Если сделать зависимую сущность, то заводится сущность с ключами код детали, код поставщика, дата поставки.
Рассмотрим содержимое тестовой БД.
DETAIL
| DETAIL_CODE (PK)
| DETAIL_NAME
| DETAIL_WEIGHT
| MATERIAL_CODE
| D1
| БОЛТ
|
| М2
| D2
| ВИНТ
|
| М5
| D3
| МУФТА
|
| М9
| D4
| ГАЙКА
|
| М2
|
MATERIAL
| MATERIAL_CODE (PK)
| MATERIAL_NAME
| M2
| СТАЛЬ
| M3
| МЕДЬ
| M5
| АЛЮМИНИЙ
| M9
| ЧУГУН
|
SUPPLIER
| SUPPLIER_CODE
| SUPPLIER_NAME
| SUPPLIER_CITY
| S1
| ИВАНОВ
| ИВАНОВО
| S2
| ПЕТРОВ
| МОСКВА
| S3
| СИДОРОВ
| МОСКВА
| S4
| СЕРОВ
| КИРОВ
|
ORDER
| ORDER_ID
| SUPPLIER_CODE
| DETAIL_CODE
| ORDER_QANTITY
| ORDER_DATE
|
| S1
| D1
|
| 01.01.04
|
| S1
| D2
|
| 01.01.04
|
| S1
| D3
|
| 01.02.04
|
| S1
| D4
|
| 01.02.04
|
| S1
| D1
|
| 01.02.04
|
| S1
| D2
|
| 01.02.04
|
| S2
| D1
|
| 01.01.04
|
| S2
| D2
|
| 01.03.04
|
| S3
| D2
|
| 01.04.04
|
| S4
| D1
|
| 01.05.04
|
Операции с реляционной моделью: 4 специальных и 4 теоретико-множественных.
Объединение, пересечение, исключение – работают, когда отношения, участвующие в них, идентичны, и их атрибуты построены на одних и тех же доменах. Это бинарные операции.
- объединение UNION (ИЛИ). В результате получается новое отношение. Степень отношения (количество атрибутов) = степени исходных, а мощность лежит в интервале (МАХ (М1, М2); М1+М2). SELECT DETAIL_CODE FROM DETAIL d WHERE d.WEIGHT>10 UNION SELECT DETAIL_CODE FROM ORDER o WHERE o.QUANTITY>200 (вывести список деталей, вес которых больше 10, а также деталей, которых было заказано больше 200 за раз).
- пересечение INTERSECT (И). Получается новое отношение степень которого равна степени исходных, а мощность лежит в интервале (0; MIN (M1, M2)). SELECT DETAIL_CODE FROM DETAIL d WHERE d.WEIGHT>10 INTERSECT SELECT DETAIL_CODE FROM ORDER o WHERE o.QUANTITY<200 (вывести список деталей, вес которых больше 10 и которых было заказано меньше 200).
- исключение EXCEPT. Получается отношение, степень которого сохраняется, а мощность в интервале (0; М1). Вывести список деталей, вес которых больше 10, за исключением тех, которых было заказано меньше 500 – SELECT DETAIL_CODE FROM DETAIL d WHERE d.WEIGHT>10 EXCEPT SELECT DETAIL_CODE FROM ORDER o WHERE SUM(o.QUANTITY)<500 GROUP BY DETAIL_CODE. SUM (D1) = 800, D2 = 1100, D3 = 400, D4 = 200. Как уже было сказано, выше рассмотренные операции работают с идентичными отношениями, атрибуты которых построены на одних доменах. В наших примерах это отношения, состоящие из одного атрибута DETAIL_CODE. В результате первого запроса получается первое отношение, второго – второе, в результате – третье отношение. Данные теоретико-множественные отношения могут работать сразу с двумя отношениями одинаковой структуры. Например, необходимо соединить 2 отношения, в которых хранится информация о деталях из разных заводов. Или можно заливать справочники одинаковых структур из разных частей базы.
- декартово произведение CROSS JOIN – множество всех сочетаний строк пересекаемых отношений. Эта операция уже не требует идентичности атрибутов связываемых отношений. Можно пересекать отношения любой структуры. В результате получается отношение, степень которого равна сумме степеней, а мощность равна произведению мощностей. Выполним декартово отношение таблицы «деталь» и «материал». SELECT * FROM DETAIL CROSS JOIN MATERIAL & SELECT * FROM DETAIL, MATERIAL.
РЕЗУЛЬТАТ
| DETAIL_CODE
| DETAIL_NAME
| DETAIL_WEIGHT
| MATERIAL_CODE
| MATERIAL CODE *
| MATERIAL_NAME
| D1
| БОЛТ
|
| М2
| М2
| СТАЛЬ
| D1
| БОЛТ
|
| М2
| М3
| МЕДЬ
| D1
| БОЛТ
|
| М2
| М5
| АЛЮМИНИЙ
| D1
| БОЛТ
|
| М2
| М9
| ЧУГУН
| D2
| ВИНТ
|
| М5
| М2
| СТАЛЬ
| D2
| ВИНТ
|
| М5
| М3
| МЕДЬ
| ВСЕГО:
| 16 СТРОК
|
|
|
|
| Эта операция является основой навигации в реляционной базе данных, при этом для выборки с помощью специальных операций выбираются записи, у которых совпадают первичные и вторичные ключи. Среди 16 записей корректно будет только 4.
Например, чтобы выбрать все имена поставщиков, которые поставляют гайку, мы должны сделать декартово произведение 3 таблиц: деталь, поставщик и поставка – и выбрать только те строчки, у которых сочетаются код детали и код поставщика.
Специальные операции:
- проекция – унарная операция, предназначенная для уменьшения степени отношений (выбор нужных столбцов). При этом, степень результата определяется заданным списком атрибутов, а мощность остается прежней. Например, выбрать фамилии всех поставщиков: SELECT SUPPLIER_NAME FROM SUPPLIER (SELECT s.SUPPLIER_NAME FROM SUPPLIER s). Звездочка означает «все поля». Запрос SELECT * FROM SUPPLIER позволяет выбрать всю таблицу.
- ограничение – выборка определенных строк отношения по заданному условию. Условие записывается в конъюнктивной нормальной форме. (<терм>) И (<терм> ИЛИ <терм> ИЛИ <терм>). Операция унарная и понижает мощность отношения. С точки зрения SQL эта опция WHERE. <условие>::== <терм>/ <группа термов>. Пример: выбрать всех поставщиков, место которых начинается с М: SELECT SUPPLIER_NAME FROM SUPPLIER WHERE SUPPLIER.CITY LIKE ‘M%’. Выбрать всех поставщиков, выполнивших поставки в январе 2004 года – SELECT SUPPLIER_CODE, DETAIL_CODE, ORDER_QUANTITY FROM ORDER WHERE ORDER_DATE BETWEEN ’01.01.04’ AND ’31.01.04’. Примечание: здесь сочетаются операции проекции и ограничения, делается проекция таблицы ORDER на три столбца, заданных в SELECT и ограничивается таблица ORDER по условию, заданному в WHERE.
- объединение – бинарная операция, являющаяся основой навигации по реляционной БД (обычно в SQL-запросах применяется совокупность операций ограничения). Операция ограничения задается в опции FROM <имя табл1> [<INNER/>] JOIN <имя табл2> ON <условие отбора> или FROM <имя табл1> [<CROSS/>] JOIN <имя табл2> ON <условие отбора> или FROM <имя табл1> [<FULL OUTER/>] JOIN <имя табл2> ON <условие отбора> или FROM <имя табл1> [<LEFT/>] JOIN <имя табл2> ON <условие отбора> или FROM <имя табл1> [<RIGHT/>] JOIN <имя табл2> ON <условие отбора> или FROM <имя табл1> [<UNION/>] JOIN <имя табл2> ON <условие отбора>
- внутреннее объединение (INNER JOIN) – эта операция позволяет объединить 2 таблицы посредством декартова произведения, из которого удаляются те строки, которые не удовлетворяют заданному условию. В поздних версиях INNER опускается. Выбрать список имен деталей с названиями материалов, из которых они сделаны – SELECT DETAIL.DETAIL_NAME FROM DETAIL INNER JOIN MATERIAL ON DETAIL.MATERIAL_CODE = MATERIAL.MATERIAL_CODE. Примечание: в результате запроса выполняется декартово произведение «деталь» и «материал» (см. предыдущую лекцию), в результате которого получается отношение 16 строк * 8 столбцов, далее выполняется ограничение таблицы по условию, которое задано в опции ON. Этот запрос можно записать двумя вариантами: SELECT d.DETAIL_NAME FROM m.MATERIAL_NAME FROM DETAIL d, MATERIAL m d INNER JOIN m ON d.MTERIAL_CODE = m.MATERIAL_CODE; SELECT d.DETAIL_NAME, m.MATERIAL_NAME FROM DETAIL d, MATERIAL m WHERE d.MATERIAL_CODE = m.MATERIAL_CODE. Внутреннее объединение является объединением по умолчанию, поэтому может быть исключена из опции FROM, в ней через запятую перечисляются все объединяемые отношения.
- внешнее полное объединение (объединение, сохраняющее информацию) FULL OUTER – объединение 2 таблиц, содержит все строки внутреннего объединения таблиц, дополненное строками таблиц, которые не связались в результате внутреннего объединения со значениями NULL. Шаги внешнего объединения: создать внутреннее объединение; каждую строку первой таблицы, которая не имеет связи ни с одной строкой второй таблицы, добавить в результат запроса, приписывая всем столбцам второй таблицы значение NULL; каждую строку второй таблицы, которая не имеет связи ни с одной строкой первой таблицы добавить в результат запроса, присвоив всем столбцам первой таблицы значение NULL; результирующая таблица будет внешним объединением. Построить внешнее объединение «деталь» и «материал» – SELECT d.DETAIL_NAME, m.MATERIAL_NAME FROM DETAIL d, MATERIAL m d FULL JOIN m ON d.MTERIAL_CODE = m.MATERIAL_CODE. Примечание: так как справочник материалов включает позиции, из которых нет деталей, то добавилась строка NULL – медь, а поскольку связь деталь-материал идет по вторичному и первичному ключу, то не добавилось ни одной строки, в которой в материалах стоял NULL. Следует заметить, что в условии отбора могут использоваться атрибуты, не являющиеся первичными и вторичными ключами. Из этого объединения вытекают левое и правое.
- левое внешнее объединение – все строки внутреннего объединения + расширенные значением NULL строки таблицы 1. Левое внешнее объединение для условия равенства вторичного и первичного ключа = внутреннее объединение, так как справочник материалов хранит первичный ключ для кода материала в таблице деталей, поэтому все детали должны иметь код материала, и все они свяжутся в левом внешнем объединении.
- правое внешнее объединение – все строки внутреннего + расширенные NULL строки таблицы 2. В нашем случае правое будет равно полному внешнему.
- расширенный запрос на объединение – содержит все строки таблиц 1 и 2, расширенные значениями NULL. В нашем случае будет 8 строк. Операции внешнего объединения часто бывают очень полезны при обработке ведомственных реестров.
- операция деления – она используется в реляционной исчислении, на уровне SQL не реализована. Реляционное исчисление – математический аппарат, который формулирует преобразование декларативного запроса в совокупность операций реляционной алгебры. Он положен в основу алгоритма оптимизации запроса в СУБД. По сути эта операция – это квантор всеобщности. Например, разделить таблицу деталей на таблицу материалов. В результате получится только те детали, которые сделаны из всех материалов.
Знания:
На уровне представлений:
- трехуровневое представление информации в интегрированных БД
- концептуальное моделирование предметной области, основанное на модели сущность–связь
- логическое моделирование БД в терминах сетевой, иерархической и реляционной БД.
На уровне воспроизведения:
- знание подходов к концептуальному моделированию предметной области по IDEF1X, UML
- определение модели данных с позиций структуры, операций, ограничений целостности
- математический аппарат, положенный в основу реляционной модели, теория нормализации.
На уровне понимания:
- различия в подходах к моделированию бизнес-понятий и событий предметной области
- преобразование концептуальной модели предметной области в соответствующую модель БД, обоснование целесообразности применения соответствующей модели.
Умения:
- проектирование концептуальной модели на основе существующих подходов к информационному моделированию
- разработка логической модели БД.
Навыки:
- проектирование структуры БД на основе нотаций IDEF1X и UML (возможно с использованием CASE-средств).
|