
19. На основе предыдущих результатов студент строит модель.
ОБЩАЯ СХЕМА
по алгоритму Ганыкина-Онопко
- форма - юридический адрес
¦ собственности + расчетный счет
--+---------¬ + ФИО рабочих
¦предприятие+------+ табельные номера рабочих LT-T--------- + разряды рабочих
¦ L название + подписи рабочих
¦ + подписи гл. бухгалтера и ген. директора
¦ + вид оплаты
¦ L вид удержания
¦ - представитель получателя
¦ -------------¬ + единица измерения товара
L--------------+наименование+-+ подпись разрешившего отпуск ---------------+ процесса ¦ + номера первичных документов
¦ L========T==T- + источники поступления материалов
¦ ¦ ¦ L направления расхода материалов
¦ ¦ L---------------------------¬
-+------------¬ ----+--------¬ ¦
¦наименование ¦ ¦ количество ¦ ¦
¦товара/услуги¦ ¦товара в шт.+----¬ ¦
LT------------- L------------- -+------------¬ ¦
¦ ¦складирование¦ ¦
¦ - номер (код) LT=T==========- ¦
¦ ¦ склада ¦ L норма запаса ¦
-------+--+--¬ ----------------¬ ¦ ¦
¦однозначное ¦ ¦номенклатурный +--- ¦
¦соответствие¦ ¦номер материала+----¬ ¦
L==T=========- LT--------------- ¦ ¦
L марка материала L количество ¦ ¦
израсходованного ¦ ¦
материала ¦ ¦
----- ¦
--------------¬ ------------------+¬ ¦
¦дата заполне-+---------+ поступление +------------------
¦ния документа¦ ¦материала на склад+ отправитель
LT-T----------- L==================- материала
¦ документ-основание
цена товара в рублях
20. На этом шаге студент анализирует два варианта модели и принимает один из вариантов.
1.3 Оформление отчета и защита лабораторной работы N1.
В отчет по лабораторной работе входят следующие результаты:
- цель лабораторной работы;
- исходные данные:
- список запросов;
- список реквизитов, хранимых в базе для каждого запроса пользователей;
- распечатки по всем шагам алгоритма (пункты 3-19 раздела 1.2
настоящего методического указания);
- анализ полученных результатов;
В ходе защиты студент должен показать знания:
- языка модели "сущность-связь";
- доказать правильность принимаемого решения на шагах 1-19 предлагаемого алгоритма;
- защитить вариант выбранной модели "сущность-связь".
2. Методические указания к лабораторной работе N2 "Автоматизиро-
ванное построение инфологической модели на основе канонических
структур".
Данная лабораторная работа выполняется на основе программ: "CDS",
"COBRA", "CANNON".
При подготовке к данной работе студент должен, прежде всего, озна-
комиться с основными понятиями модели (см. список литературы 1). Ввиду недостатка данного источника в библиотеке ГАУ, а также большим объемом изложенного материала, студенту достаточно изучить канонические структуры, изложенные ниже.
2.1 Основные понятия канонических структур.
Для успешной работы студент должен изучить и понять следующие по-
нятия данной модели:
- каноническая схема;
- каноническая подсхема;
- каноническая запись;
- атрибуты: пересекающиеся и изолированные;
- ключи: исходный, корневой, вторичный,
сцепленный;
- транзитивная зависимость, избыточные связи;
- алгоритм конструирования.
_КАНОНИЧЕСКАЯ СХЕМА - модель данных, с помощью которой представляются существующие в реальном мире структуры данных, вне зависимости от конкретных приложений, программных и аппаратных средств, используемых для представления данных и их эксплуатации. Графичес-
кое представление данной схемы - конечный результат данной лабораторной работы. При построении схемы можно использовать следующую графику:
a) имя - КЛЮЧИ
_атрибута
б) имя - АТРИБУТ
атрибута
в) связи: 1:1 - "--------->"
1:M - "<------->>"
M:N - "<<------>>"
г) в окончательном варианте схема включает только графику в
виде а), б) и связи типа 1 "-------->" и M "-------->>" меж-
ду ключами.
_КАНОНИЧЕСКАЯ ПОДСХЕМА - часть схемы, понимается как совокупность канонических записей. Последняя включает один ключ, идентифицирую-
щий n - атрибутов.
-----------------------------------------------------------¬
¦ _
ключ --------> атрибут 1 атрибут 2 .......... атрибут n
¦ _
L--------------------------------------
_АТРИБУТ - характеристика объекта, процесса и явлений, узел на схеме, из которого не выходит не одной простой стрелки. Атрибутами являются те элементы данных, которые не являются ключами.
_ПЕРЕСЕКАЮЩИЙСЯ АТРИБУТ - это атрибут, который связан с несколькими ключами, т.е. блок, изображающий атрибут, имеет несколько указывающих на него стрелок. На результирующем каноническом графе пересекающиеся атрибуты должны отсутствовать.
Например, в ходе выполнения лабораторной работы возникла следую-
щая ситуация:
---------¬
¦--------¦
¦-- 24 --+--------------------¬
¦--------¦ ¦
L--------- ¦
----- __ ---¬
¦ ¦
¦ 17 ¦
¦ ¦
L----_ ----
---------¬ ¦
¦--------¦ ¦
¦-- 16 --+---------------------
¦--------¦
L---------
Где:
16 - Цель расхода в ходе командировки - ключ1;
17 - Величина расхода - атрибут;
24 - Табельный номер работника - ключ2.
Существует три способа исключения пересекающегося атрибута:
а) Все связи, кроме одной, заменяются эквивалентными связями с су-
ществующим ключом:
---------¬
¦--------¦
¦-- 24 --¦
¦--------¦
L----T----
¦ ---------¬
¦ ¦ ¦
¦ ¦ 17 ¦
¦ ¦ ¦
¦ L----_ ----
----- __ ---¬ ¦
¦--------¦ ¦
¦-- 16 --+---------------------
¦--------¦
L---------
б) Каждый избыточный вариант пересекающегося атрибута присоединяет-
ся к соответствующему ключу:
---------¬ ---------¬
¦--------¦ ¦ ¦
¦-- 24 --+------------------->¦ 17 ¦
¦--------¦ ¦ ¦
L--------- L---------
---------¬ ---------¬
¦--------¦ ¦ ¦
¦-- 16 --+------------------->¦ 17 ¦
¦--------¦ ¦ ¦
L--------- L---------
в) Пересекающийся атрибут превращается в ключ без атрибутов:
---------¬
¦--------¦
¦-- 24 --+--------------------¬
¦--------¦ ¦
L--------- ¦
----- __ ---¬
¦--------¦ ¦-- 17 --¦ ¦--------¦ L----_ ----
---------¬ ¦
¦--------¦ ¦
¦-- 16 --+---------------------
¦--------¦
L---------
В конкретной ситуации был выбран первый способ разрешения, причем,
была установлена новая связь 24 ---> 16.
_ИЗОЛИРОВАННЫЙ АТРИБУТ - атрибут, который не идентифицируется первичным ключом. Он отображается блоком, не имеющим одиночных стрелок, направленный к нему или от него, хотя двойные стрелки могут указывать на него. Изолированный атрибут может обрабатываться одним из следующих способов:
1. Он может быть представлен как повторяющийся атрибут в записи
переменной длины.
2. Он может быть обработан как одиночный ключ-запись, состоящая из
одного элемента.
Часто такой атрибут получается в результате ошибки при интерпрета-
ции пользовательских данных, и поэтому правомерность его наличия должна быть тщательно исследована.
_ПЕРВИЧНЫЙ КЛЮЧ - элемент данных, однозначно идентифицирующий один
или несколько элементов данных.
Элементы данных, изображаемые с помощью диаграмм, можно разделить
на две категории: первичные ключи и те, которые ими не являются. Так как первичный ключ представляет собой элемент данных, мы можем определить его с помощью диаграмм следующим образом: это узел с выходящими из него одной или несколькими однонаправленными (простыми) стрелками.
Существует одно исключение из этого определения, а именно ситуация, когда несколько элементов данных могут быть возможными ключами, т.е. несколько элементов данных идентифицируют несколько других элементов данных в группе. Например:
----------¬
¦ A +---->----T------>------T------>------¬
L----T----- -----+----¬ -----+----¬ -----+----¬
¦ ¦ C ¦ ¦ D ¦ ¦ N ¦
-----+----¬ L----T----- L----T----- L----T-----
¦ B +---->----+------>------+------>-------
L----------
A и B в данном случае эквивалентны. Они идентифицируют друг друга
и оба идентифицируют C, D,... ,N. В этой диаграмме имеет место избыточность. В этом случае удаляются связи A-->C, A-->D,... ,A-->N или, соответственно, связь B-->C, B-->D,... ,B-->N; решение, какие связи удалять, принимает разработчик.
_ИСХОДНЫЕ КЛЮЧИ - такие ключи, которые сами идентифицируют другие
первичные ключи.
_КОРНЕВОЙ КЛЮЧ - это первичный ключ, который ни каким другим клю-
чом не идентифицируется.
_ВТОРИЧНЫЙ КЛЮЧ - неоднозначно идентифицирует элемент данных, одно-
му значению первичного ключа соответствует 0, 1, или несколько значений связанного с ним элемента данных. На диаграмме атрибут с двойными выходящими из него стрелками - вторичный ключ. Вторичные ключи
не несут информации о структуре данных, а говорят специалисту о том,
как эти данные используются.
_СЦЕПЛЕННЫЙ КЛЮЧ - состоит из двух и более элементов данных. Сцеп-
ленный ключ вводится в том случае, если какой-либо элемент данных идентифицируется одновременно двумя другими элементами данных. Идентифицируемый элемент должен зависеть от всего сцепленного ключа.
_ТРАНЗИТИВНЫЕ ЗАВИСИМОСТИ :
Представление пользователя о данных, например записи, часто содер-
жит скрытые транзитивные зависимости.
Процесс удаления транзитивных зависимостей по существу эквивален-
тен преобразованию в третью нормальную форму.
Пример удаления транзитивной зависимости путем изображения атрибу-
тов пользователя не транзитивно, а непосредственно зависимыми от ключа:
----------------------------¬
---------------+-¬ ¦
¦----------------¦ --------------¬ -----_----¬ -------------¬
¦- наименование -+->¦ Табельный ¦ ¦ ФИО ¦ ¦Дата выплаты¦
¦- предприятия -¦ ¦номер работн.¦ ¦работника¦ ¦ зарплаты ¦
¦----------------¦ L-------------- L---------- L------_ ------
L--------------T-- ¦
L-------------------------------------------- ------------------------------------------------¬
---------------+-¬ ------------------¬ ¦
¦----------------¦ ¦-----------------¦ ----------¬ -------_-----¬ ¦- наименование -+->¦- Табельный -¦ ¦ ФИО ¦ ¦Дата выплаты¦
¦- предприятия -¦ ¦- номер работн. -¦ ¦работника¦ ¦ зарплаты ¦
¦----------------¦ ¦-----------------¦ L----_ ----- L------ ^^&- ------
L----------------- L--------T--------- ¦
L------------------
_ИЗБЫТОЧНЫЕ СВЯЗИ представлены в следующем виде:
----------¬ ----------¬ ----------¬
¦ X +-->--+ Y +-->--+ Z ¦
L----T----- L---------- L----T----- L--------------->----------------
Если известно, что X-->Y и Y-->Z, то это означает, что X-->Z (т.е.
для каждого значения X существует одно значение Z). Можно сказать, что X идентифицирует Y, Y идентифицирует Z, следовательно, X идентифицирует Z. Однако стрелка от X к Z не всегда бывает избыточной, так как между одними и теми же двумя элементами данных может существовать более одной связи. Поэтому, перед уничтожением связи X-->Z, необходимо изучит смысл ассоциации элементов, чтобы было возможным обеспечить связь X-->Z с помощью связей X-->Y и Y-->Z. Иногда избыточные связи могут удаляться из длинной цепи связей. Например:
----->-----T---->-----T---->-----T---->-----T---->----¬
¦ ¦ ¦ ¦ ¦ ¦
г===¦===¬ ----+---¬ ----+---¬ ----+---¬ ----+---¬ ---+----¬
¦ 1 ¦ ¦ 2 ¦ ¦ 3 ¦ ¦ 4 ¦ ¦ 5 ¦ ¦ 6 ¦
L=======- L-------- L-------- L-------- L-------- L--------
Пусть 3 и 4 элементы идентифицируются элементом 2. Следовательно,
запись может быть представлена следующим образом:
----->---------->---------->-----T---->-----T---->----¬
¦ ¦ ¦ ¦
г===¦===¬ --------¬ --------¬ ----+---¬ ----+---¬ ---+----¬
¦ 1 ¦ ¦ 2 ¦ ¦ 3 ¦ ¦ 4 ¦ ¦ 5 ¦ ¦ 6 ¦
L===T===- L--T--T-- L---T---- L----T--- L-------- L--------
¦ ¦ ¦ ¦ ¦
L - ->- - - L--->----+----->------
Если элементы данных не могут быть идентифицированы одним элементом, то используются сцепленные ключи. Отношения типа M:N между первичными ключами каноническая схема не содержит. В канонической схеме сцепленный ключ представляется в виде отдельных блоков для каждого элемента данных, являющегося компонентом сцепленного ключа.
Если процедура конструирования устанавливает связи между ключами в
одном направлении, то добавляются эквивалентные связи в обратном направлении, т.е. связь между ключами изображается двунаправленными стрелками. Теперь, если есть отношение типа M:N между ключами A:B:
г=========¬ г=========¬
¦ A ¦-<<------->>-¦ B ¦
L=========- L=========-
и путь в любом направлении предположительно может пересечься, вводиться третий ключ A+B:
г=========¬ г=========¬
¦ A ¦ ¦ B ¦
L====T====- L====T====-
¦ г=========¬ ¦
L<-->>-¦ A+B ¦-<<-->-
L=========-
АЛГОРИТМ КОНСТРУИРОВАНИЯ КАНОНИЧЕСКОЙ
СТРУКТУРЫ БАЗЫ ДАННЫХ
1. Необходимо взять первое представление пользователя о данных, представляя их в виде графика со связями между элементами данных, заданными только двумя типами ассоциаций: 1 и М.
Проверить наличие скрытых транзитивных зависимостей. Необходимо убедиться, что представление пользователя задано в третьей нормальной форме. Вынести на диаграмму только те связи, которые имеют отношения к пользователю.
2. Проверить наличие омонимов или синонимов и удалить их, если
оные присутствуют.
3. Выделить узлы атрибутов и узлы первичных ключей. Пометить пер-
вичный ключ каким-либо способом.
4. В каждой связи между ключами добавить обратную связь, если она
отсутствует в графе.
5. Выявить избыточные связи. Оценить их перед удалением, действительно-ли они являются избыточными. Произвести удаление избыточных связей.
6. Идентифицировать корневой ключ. Заново перечертить диаграмму, где корневой ключ будет помещен в вершину, а одиночные связи между ключами должны указывать направление сверху вниз, там, где это возможно. Пометить связи между первичными ключами.
7. Проверить наличие изолированных атрибутов, если таковые сущес-
твуют, то обработать их одним из трех способов:
а) может быть представлен как повторяющийся атрибут в записи пере-
менной длины;
б) может обрабатываться как одиночный ключ, т.е. запись, состоя-
щая из одного элемента данных;
в) может быть следствием ошибки возникшей при интерпретации пользовательских данных, и в этом случае ее необходимо исправить;
8. Проверить, содержит ли граф пересекающиеся атрибуты. Если со-
держит, то обработать их способом, приведенным выше.
9. Объединить элементы данных в группы так, чтобы каждая группа имела один первичный ключ и ассоциированные с ним атрибуты. Затем группу можно представить в виде прямоугольника.
10. Идентифицировать все вторичные ключи. Изобразить между прямоу-
гольниками связи, относящиеся к вторичным ключам.
2.2 ПОДГОТОВКА ИСХОДНЫХ ДАННЫХ
Исходными данными для программы канонической обработки
являются:
1. Список наименований элементов данных исходной струк-
туры.
2. Список всех значимых связей, существующих в исходной структуре, с указанием типов связей (возможные вари-
анты: 1:1, 1:М, М:1, М:N).
Для каждого элемента данных нужно назначить его индиви-
дуальный порядковый номер, начиная с 1-го.
Эти данные могут быть получены из результатов Домашнего Задания N2, выполняемого студентами ММиИОЭ по дисциплине СОЭИ в
первом семестре III курса.
2.3 Методика работы с программой "COBRA"
О ПРОГРАММЕ "COBRA"
Язык программирования: С++
Программная Среда: Borland C++ 3.1
Copyright @ by Borland International
Приложение: Turbo Vision 1.0
Copyright @ by Borland International
Hard: CPU Type - 100 MHz 486DX
Coprocessor Type - 486
Expansion Bus Type - PCI, ISA Base Memory - 640 kB
Extended Memory - 7168 kB
Sound Card - Gravis UltraSound MAX UltraSound is trademark of Advanced Gravis Computer Technology Limited
Soft: Dos Navigator (tm) Copyright @ by RIT S.R.L
~ DN - The Best Shell In The World
WDir, Copyright @ by Smth Fierce / Smth Evil PATHi (tm) Copyright @ by Andy La Rubin
РАБОТА С ПРОГРАММОЙ "COBRA"
Исполняемый файл программы называется cobra.exe
Запуск программы
Запуск программы можно произвести из операционной системы МC-DOS, набрав имя исполняемого файла в командной строке и нажав клавишу Enter.
!!! Если содержимое исполняемого файла было испорчено из-за ошибки считывания, неисправности носителя или по какой-либо другой причине, программа выдаст сообщение об ошибке и прекратит работу. В этом случае рекомендуется скопировать для дальнейшего использования оригинальную версию программы и повторить запуск.
Подготовка к работе
После запуска программы на экране появится вступительная заставка. Прочитав ее, пользователь должен нажать клавишу Enter. После этого вступительная заставка сменится текстом подсказки - указанием пользователю, какие действия он должен произвести в дальнейшем. Прочитав заставку и нажав клавишу Enter, пользователь увидит основной экран программы и сможет выбрать необходимые ему пункты меню.
ИСПОЛЬЗОВАНИЕ КЛАВИШ ДЛЯ РАБОТЫ С ПРОГРАММОЙ
Клавиша F1 - вызывает на экран информацию о
программе.
Клавиша F5 - ввод данных с клавиатуры.
Клавиша F6 - ввод данных из файла.
Клавиша F7 - запуск преобразования введенных
данных в каноническую структуру. Клавиша F10 - переход в главное меню
Комбинация клавиш Alt и X - выход из программы.
ИСПОЛЬЗОВАНИЕ ГЛАВНОГО МЕНЮ
Для того, чтобы попасть в главное меню программы, достаточно нажать клавишу F10. Сделать это нужно в момент, когда не открыто ни одного дополнительного программного окна,т.е. не происходит процессов ввода, обработки или просмотра информации.
После нажатия клавиши F10, курсор переместится в верхнюю часть экрана и укажет на один из пунктов меню. После этого пользователь, нажимая клавиши управления курсором,выбирает нужный ему пункт меню и нажимает клавишу Enter.
На экране появится еще одно меню, выбрав пункт которого, пользователь переведет программу в режим обработки полученного требования ( ввод, обработка, редактирование, просмотр данных и т.д.).
Для того, чтобы прервать процесс работы с главным меню, нужно нажать клавишу Esc.
ВВОД ИСХОДНЫХ ДАННЫХ
Для того, чтобы начать ввод исходных данных с клавиатуры, нужно выбрать пункт меню _Ввод данных
¦
_ _
_С клавиатуры _, или нажать клавишу F5.
Программа запросит имя файла, в котором будет сохранена введенная информация Нужно набрать имя файла в предложенной строке и нажать Enter. После этого программа попросит указать имена всех присутствующих в исходной структуре элементов, начиная с номера 1. Пользователь должен ввести с клавиатуры название элемента и нажать Enter. Программа запомнит введенное имя и перейдет к следующему по порядку элементу. Если пользователю понадобится вернуться к одному из ранее введенных элементов, он может воспользоваться клавишей Esc, которая возвращает программу к предыдущему указанному имени.
Таким образом пользователь вводит информацию о названиях всех элементов структуры. После окончания ввода последнего имени нужно в следующем запросе ввести цифру "0", чтобы программа завершила процесс ввода наименований.
Следующим шагом является определение связей между элементами.
В появившемся запросе существуют три строки для ввода данных. В первой строке указывается номер первого элемента из двух, участвующих в очередной вводимой связи. Указав этот номер, нужно нажать клавишу Tab, и курсор перейдет во вторую строку. Во второй строке указывается номер второго элемента. Указав его нажав Tab, нужно в третьей строке указать тип связи (ввести цифру "1" для связи 1:1, "2" - для связи 1:М, "3" - для связи М:1, "4" - для связи М:N и "0" - чтобы удалить ранее введенную связь между обозначенными элементами).
После окончания ввода информации по очередной связи нужно нажать клавишу Enter, после чего программа выдаст запрос для указания следующей связи. Если будет указана некорректная информация о связи (несуществующие номер элемента или тип связи), программа выдаст сообщение об ошибке и вернется в окно определения связи. Когда будет введена вся информация обо всех существующих в структуре связях, пользователь должен нажать клавишу Esc. На этом процесс обозначения связей будет закончен.
ПРИМЕЧАНИЕ: при редактировании информации о какой-либо из уже обозначенных связей между элементами достаточно в любом из запросов ввести новую информацию об этой связи, и старая информация будет отредактирована.
Теперь программа выведет на экран напоминание о том, в каком файле была сохранена введенная информация и подскажет, что необходимо сделать дальше, чтобы продолжить работу.
Ввод данных из файла
Если пользователю понадобиться вновь воспользоваться ранее введенной информацией о структуре, он может считать данные из созданного программой файла. Для этого нужно выбрать пункт меню:
_Ввод данных
¦
_
_Из файла , или нажать клавишу F6.
В появившемся запросе будут указаны все имеющиеся в текущей директории файлы с данными для программы. Пользователь должен использовать клавишу TAB и клавиши управления курсором, чтобы выделить имя требуемого файла, и затем нажать ENTER.
После этого программа перейдет в режим редактирования информации, содержащейся в считанном файле.
Обработка введенных данных
Для того чтобы программа произвела преобразование введенных данных в структуру канонического типа, пользователь должен выбрать пункт меню :
_Обработка
¦
_
_Выполнить , или нажать F7.
Процесс обработки не требует участия пользователя. Продолжительность обработки зависит от быстродействия машины и
объема введенных данных. На медленных компьютерах этот процесс может занять несколько минут, а на сравнительно быстрых будет завершен за 10-15 секунд. Во время работы на экране отображается прогресс ее выполнения.
После завершения работы программа сообщит, в каком файле был сох-
ранен результат и выведет этот файл на экран для просмотра.
Если в процессе преобразования были обнаружены недочеты в исходных данных, например, изолированные атрибуты или атрибуты, не определяющиеся связью с ключом 1:1, то в файл с результатами будут занесены предупреждения и рекомендации по исправлению исходной структуры.
Во время просмотра результатов можно пользоваться клавишами управ-
ления курсором и клавишами PageUp, PageDown для осуществления скрол-
линга экрана в нужном направлении.
Для окончания просмотра нужно нажать Esc.
Форма вывода результата
Результирующая каноническая структура выводится в форме каноничес-
ких записей.
Каждая запись содержит ключ (с указанием функции) и список определяемых им атрибутов (с указанием типов связей). Отдельно указываются связи, направленные к элементам других канонических записей.
Форма вывода сцепленных ключей
Сцепленные ключи выводятся отдельными каноническими записями. Каждая запись может содержать два или более элементов, образующих сцеп-
ленный ключ. Элементы ключа прибавляются к записи по мере их присоединения к сцепленному ключу, т.е. если пользователю понадобиться восстановить на бумаге всю структуру ключа, он может воспользоваться следующим способом. Сначала нарисовать два первых элемента и объединить их в сцепленный ключ, обозначив связи М:1 от ключа к его элементам. Потом нарисовать третий элемент, объединить его с уже существующим ключом, и так продолжать до тех пор, пока не будут включены все элементы.
_ 1+2+3
PainBrush !!! (page43) _ 1+2
3 1 2
Р Е З У Л Ь Т А Т Ы Р А Б О Т Ы П Р О Г Р А М М Ы
~ C O B R A ~
-----------------------¬
-- ВНИМАНИЕ !!! L--------------------------¬
¦ Исходная структура содержала 4 элементов, L----------------------¬
¦ которые не определялись не одним из ключей. ¦
¦ (так как не было не одного элемента, связанного сними связью типа 1:1) ¦
¦ В идеале, каноническая структура не должна содержать таких элементов. ¦
¦ Возможно, были допущены ошибки при определении связей. ¦
¦ Рекомендуем исправить исходные данные ( постараться найти ¦
¦ и обозначить связи 1:1 или, что менее приемлимо, М:1, ¦
L¬ направленные к этим элементам ) и повторить обработку. ---------------- L----------------------------------------------------------
Номера этих элементов:
11; 20; 21; 27;
-----------------------¬
-- ВНИМАНИЕ !!! L--------------------------¬
¦ Исходная структура содержала 28 элементов, L----------------------¬
¦ определенных только связями М:1. ¦
¦ В идеале, каноническая структура не должна содержать таких элементов. ¦
¦ Рекомендуем исправить исходные данные L-¬
¦ (постараться найти и обозначить связи 1:1, направленные к этим элементам)¦ L¬ и затем повторить обработку. ¦
L---------------------------------------------------------------------------
Номера этих элементов:
4; 5; 6; 7; 8; 9; 10; 12; 13; 14; 16; 17; 19; 25; 26; 28; 29; 30; 31; 32; 33
-----------------------¬
-- ВНИМАНИЕ !!! L--------------------------------------¬
¦ Каноническая запись # 2 не имеет связей с другими записями. ¦
¦ В канонической структуре такого быть не должно. ¦
L¬ Исправьте исходные данные и повторите процедуру обработки. ¦ L--------------------------------------------------------------
Если вас устраивает получившийся вариант канонической структуры, нарисуйте схему этого варианта на бумаге: Нарисуйте отдельно каждый из ключей, обведите его название прямоугольной рамкой и подчеркните. Затем названия корневых ключей подчеркните прямой чертой; названия первичных ключей - волнистой линией; названия исходных ключей - прерывистой линией. Теперь для каждого из ключей нарисуйте по сторонам от него связанные с ним атрибуты. Соедините ключи и атрибуты стрелками соответствующими типу связи ( <------> для связи 1:1, <----->> для 1:М, <<------> для М:1 ). Названия атрибутов обведите овальными рамками. Потом нарисуйте все указанные в схеме связи между ключами
( аналогично связям ключей с атрибутами ).
Имя для сцепленного ключа составляется из суммы имен всех входя-
щих в него элементов ( Имя1 + Имя2 + ... + ИмяN ).
Для сцепленных ключей нарисуйте их структуру: под названием сцепленного ключа нарисуйте две его составляющие: первая - сцепленный ключ с именем, как у предыдущего, но без последнего составляющего элемента; вторая - последний элемент сцепленного ключа. Нарисуйте связи М:1 от сцепленного ключа к составляющим. Теперь туже процедуру проделайте с только что полученным ~укороченным~ сцепленным ключом и продолжайте, пока в сцепленном ключе не останется только один элемент.
На этом построение канонической схемы будет закончено.
г=======================================================================¬ ¦ К А Н О Н И Ч Е С К А Я С Т Р У К Т У Р А ¦
L=======================================================================-
---------------------------¬
¦ КАНОНИЧЕСКАЯ ЗАПИСЬ # 1 ¦ г===¦==========================¦======================================¬ ¦ Номер истории болезни N 2 | ПЕРВИЧНЫЙ КЛЮЧ ¦
¦---------------------------------------------------------------------¦
¦ а т р и б у т ы тип связи ¦
¦ ¦
¦ +----> Диагноз N 1 M:1 ¦
¦ +----> ФИО больного N 3 1:1 ¦
¦ +----> Дата рождения больного N 4 M:1 ¦
¦ +----> Исход лечения N 5 M:1 ¦
¦ +----> Дата начала лечения N 6 M:1 ¦
¦ +----> Дата окончания лечения N 7 M:1 ¦
¦ +----> Сопутствующее заболевание N 8 M:1 ¦
¦ +----> Способ лечения N 9 M:1 ¦
¦ +----> Рекомендации N 10 M:1 ¦
¦ +----> Адрес больного N 18 1:1 ¦
¦---------------------------------------------------------------------¦
¦ с в я з и с к л ю ч а м и тип связи ¦
¦ ¦
¦ СЦЕПЛЕННЫЙ ________ КЛЮЧ # 1 M:1 ¦
¦ СЦЕПЛЕННЫЙ ________ КЛЮЧ # 2 1:M ¦
¦ СЦЕПЛЕННЫЙ ________ КЛЮЧ # 3 1:M ¦
¦ СЦЕПЛЕННЫЙ ________ КЛЮЧ # 4 1:M ¦
¦ СЦЕПЛЕННЫЙ ________ КЛЮЧ # 5 1:M ¦
L=====================================================================-
---------------------------¬
¦ КАНОНИЧЕСКАЯ ЗАПИСЬ # 2 ¦ г===¦==========================¦======================================¬ ¦ ФИО сотрудника N 11 | КОРНЕВОЙ КЛЮЧ ¦
¦---------------------------------------------------------------------¦
¦ а т р и б у т ы тип связи ¦
¦ ¦
¦ +----> Должность сотрудника N 12 M:1 ¦
¦ +----> Количество отработанных часов N 13 М:1 ¦
¦ +----> Разряд сотрудника N 14 M:1 ¦
¦---------------------------------------------------------------------¦
¦ с в я з и с к л ю ч а м и тип связи ¦
¦ ¦
¦ НЕ ИМЕЕТ СВЯЗЕЙ С ДРУГИМИ КЛЮЧАМИ ¦
L=====================================================================-
и так далее по всей структуре.
Графическое отражение канонической структуры
Нарисовать отдельно отдельно каждый из ключей, обвести его назва-
ние прямоугольной рамкой. Затем названия корневых ключей подчеркнуть прямой чертой; названия первичных ключей - волнистой линией; названия исходных ключей - прерывистой линией.
Теперь для каждого из ключей нарисовать по сторонам от него все связанные с ним атрибуты. Соединить ключи и атрибуты стрелками соответствующими типу связи ( <------> для связи 1:1, <----->> для 1:М, <<------> для М:1 ).
Названия атрибутов обвести овальными рамками.
Потом нарисовать все указанные в схеме связи между ключами (анало-
гично связям ключей с атрибутами).
Имя для сцепленного ключа составляется из суммы имен всех входя-
щих в него элементов ( Имя1 + Имя2 +... + ИмяN ).
Способы изображения сцепленных ключей описан ранее в разделе Фор-
ма вывода сцепленных ключей.