Советы

Семантические модели данных. Семантическая модель знаний

Семантические модели данных. Семантическая модель знаний

Логическая модель знаний.

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

Фреймовая модель знаний .

Фрейм (англ. frame - каркас или рамка) предложен М. Минским в 1970-е гг. как структура знаний для восприятия пространственных сцен. Эта модель имеет глубокое психологическое обоснование. Под фреймом понимается абстрактный образ или ситуация. Фреймом называется также и формализованная модель для отображения образа. Различают фреймы-образцы, или прототипы, хранящиеся в базе знаний, и фреймы-экземпляры, которые создаются для отображения реальных ситуаций на основе поступающих данных. Модель фрейма является достаточно универсальной, поскольку позволяет отобразить все многообразие знаний о мире через: - фреймы-структуры, для обозначения объектов и понятий (заем, залог, вексель); - фреймы-роли (менеджер, кассир, клиент); - фреймы-сценарии (банкротство, собрание акционеров); - фреймы-ситуации (тревога, авария, рабочий режим устройства) и др. Основным преимуществом фреймов как модели представления знаний является способность отражать концептуальную основу организации памяти человека, а также ее гибкость и наглядность. Специальные языки представления знаний в сетях фреймов FRL (Frame Representation Language) и другие позволяют эффективно строить промышленные ЭС. Широко известны такие фреймоориентированные экспертные системы, как ANALYST, МОДИС.

Термин семантическая означает "смысловая", а сама семантика - это наука, устанавливающая отношения между символами и объектами, которые они обозначают, т.е. наука, определяющая смысл знаков. Семантическая сеть - это ориентированный граф, вершины которого - понятия, а дуги - отношения между ними. Характерной особенностью семантических сетей является обязательное наличие трех типов отношений: - класс - элемент класса; - свойство - значение; - пример элемента класса. Проблема поиска решения в базе знаний типа семантической сети сводится к задаче поиска фрагмента сети, соответствующего некоторой подсети, соответствующей поставленному вопросу. Основное преимущество этой модели - в соответствии современным представлениям об организации долговременной памяти человека. Недостаток модели - сложность поиска вывода на семантической сети. Для реализации семантических сетей существуют специальные сетевые языки, например NET и др. Широко известны экспертные системы, использующие семантические сети в качестве языка представления знаний - PROSPECTOR, CASNET, TORUS.



По форме описания знания подразделяются на:

Декларативные (факты) - это знания вида "А есть А". Декларативные знания подразделяются на объекты, классы объектов и отношения. Объект - это факт, который задается своим значением. Класс объектов - это имя, под которым объединяется конкретная совокупность объектов-фактов. Отношения - определяют связи между классами объектов и отдельными объектами, возникшие в рамках предметной области.

Процедурные - это знания вида "Если А, то В". К процедурным знаниям относят совокупности правил, которые показывают, как вывести новые отличительные особенности классов или отношения для объектов. В правилах используются все виды декларативных знаний, а также логические связки. При обработке правил следует отметить рекурсивность анализа отношений, т.е. одно правило вызывает глубинный поиск всех возможных вариантов объектов БЗ.

Граница между декларативными и процедурными знаниями очень подвижна, т.е. проектировщик может описать одно и то же как отношение или как правило.

Для моделирования предметных областей широкое распространение получили реляционные СУБД. Их использование в самых разнообразных приложениях показывает, что реляционная модель данных достаточно универсальна. Однако проектирование реляционной БД в терминах отношений часто представляет собой очень сложный и неудобный для проектировщика процесс.

При этом ограниченность реляционной модели данных проявляется в следующих аспектах:

· Модель не обеспечивает достаточных средств представления смыслового содержания данных. Семантика реальной предметной области должна независимым от модели способом отображаться в сознание проектировщика. В частности, это относится к проблеме представления ограничений целостности;

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

Хотя весь процесс проектирования происходит на основе учета зависимостей, реляционная модель не обеспечивает каких-либо средств для представления этих зависимостей.

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

Потребности проектировщиков БД в более удобных и мощных средствах моделирования предметной области реализуются при использовании

= семантических моделей данных =

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

Главным назначением семантических моделей является обеспечение возможности выражения семантики данных.

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

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

Известны два подхода:

· на основе явного представления концептуальной схемы как исходной информации для компилятора;



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

Третья возможность , которая пока только выходит за пределы исследовательских и экспериментальных проектов, – это работа с БД в семантической модели, то есть СУБД, основанные на семантических моделях данных.

При этом снова рассматриваются два варианта:

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

· прямая реализация СУБД, основанная на какой-либо семантической модели данных.

Наиболее близко ко второму подходу находятся современные объектно-ориентированные СУБД, модели данных которых по многим параметрам близки к семантическим моделям (хотя в некоторых аспектах они более мощны, а в некоторых – более слабы).

Основные понятия модели «Entity - Relationship».

Семантическая модель данных Entity - Relationship – модель "Сущность - Связи " (ER-модель).

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

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

Основными понятиями ER-модели являются:



«сущность – связь – атрибут».

Сущность – это реальный или представляемый объект, информация о котором должна сохраняться и быть доступна. В диаграммах ER-модели сущность представляется в виде прямоугольника, содержащего имя сущности. При этом имя сущности – это имя типа, а не некоторого конкретного экземпляра этого типа. Сущность «АЭРОПОРТ», с примерными объектами «Шереметьево» и «Хитроу», приведена на рис. 2.24.

Рис. 2.24. Сущность – АЭРОПОРТ с примерными объектами: Шереметьево и Хитроу

Для большей выразительности и лучшего понимания имя сущности может сопровождаться примерами конкретных объектов этого типа.

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

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

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

Связь представляется в виде линии, связывающей две сущности или ведущей от сущности к ней же самой. При этом в месте "стыковки" связи с сущностью используются трехточечный вход в прямоугольник сущности, если для этой сущности в связи может использоваться много (many) экземпляров сущности, и одноточечный вход, если в связи может участвовать только один экземпляр сущности.

Обязательный конец связи изображается сплошной , а необязательный прерывистой линией.

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

В примере, изображенном на рис. 2.25, связь между сущностями БИЛЕТ и ПАССАЖИР связывает билеты и пассажиров. При этом конец сущности с именем "для" позволяет связывать с одним пассажиром более одного билета, причем каждый билет должен быть связан с каким-либо пассажиром. Конец сущности с именем "имеет" означает, что каждый билет может принадлежать только одному пассажиру, причем пассажир не обязан иметь хотя бы один билет.

Рис. 2.26. Рекурсивная связь, связывающая сущность ЧЕЛОВЕК

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

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


Нормальные формы ER-схем.

Как и в реляционных схемах БД, в ER-схемах вводится понятие нормальных форм. Заметим, что формулировки нормальных форм ER-схем делают более понятным смысл нормализации реляционных схем.

Приведем краткие и неформальные определения трёх первых нормальных форм:

· устраняются повторяющиеся атрибуты или группы атрибутов, т.е. производится выявление неявных сущностей, "замаскированных" под атрибуты;

· устраняются атрибуты, зависящие только от части уникального идентификатора, эта часть уникального идентификатора определяет отдельную сущность.

· устраняются атрибуты, зависящие от атрибутов, не входящих в уникальный идентификатор. Эти атрибуты являются основой отдельной сущности.

К числу более сложных элементов модели относятся следующие:

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

· Связи "many-to-many". Иногда бывает необходимо связывать сущности таким образом, что с обоих концов связи могут присутствовать несколько экземпляров сущности (наприме, все члены кооператива сообща владеют имуществом кооператива ). Для этого вводится разновидность связи "многие – со –

многими".

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

· Каскадные удаления экземпляров сущностей. Некоторые связи бывают настолько сильными (в случае связи "один – ко – многим"), что при удалении опорного экземпляра сущности (соответствующего концу связи "один") нужно удалить и все экземпляры сущности, соответствующие концу связи "многие". Соответствующее требование "каскадного удаления" можно сформулировать при определении сущности.

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


Эти и другие более сложные элементы модели данных "Сущность – Связи" делают ее существенно более мощной, но одновременно несколько усложняют ее использование. При реальном использовании ER-диаграмм для проектирования БД необходимо ознакомиться со всеми возможностями.

Разберем один из упомянутых элементов – подтип сущности .

Сущность может быть разделена на два или более взаимно исключающих подтипа. Каждый из них включает общие атрибуты и/или связи. Эти общие атрибуты и/или связи явно определяются один раз на более высоком уровне. В подтипах могут определяться собственные атрибуты и/или связи. В принципе «подтипизация» может продолжаться на более низких уровнях, но опыт показывает, что в большинстве случаев оказывается достаточно двух-трех уровней.

Сущность , на основе которой определяются подтипы, называется супертипом. Подтипы должны образовывать полное множество, т. е. любой экземпляр супертипа должен относиться к некоторому подтипу. Иногда для полноты приходится определять дополнительный подтип ПРОЧИЕ .

Пример – супертип ЛЕТАТЕЛЬНЫЙ АППАРАТ – приведён на рис. 2.27.

Иногда удобно иметь два или более разных разбиения сущности на подтипы.

Например, сущность ЧЕЛОВЕК может быть разбита на подтипы по профессиональному признаку (ПРОГРАММИСТ, ДОЯРКА и т. д.), а может –

по половому признаку (МУЖЧИНА, ЖЕНЩИНА).

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

Рассматривая систему относительно построения ИС, более полно это определение можно пояснить на основе понятия мо­дели.

Пусть А и В - два произвольных множества. Функция f, одно­значно ставящая в соответствие каждому элементу элемент f(а) В, называется отображением множества А в множество В и обозначается как f: АВ.

Элемент f(а)=b называется значением элемента а при ото­бражении f, или образом а; А - область определения, В - область значений отображения f.

Если есть элементы , не являющиеся образом никакихэлементов , то отображение f называется отображением «в» в В.

Если f(А) = В, то отображение f называется отображением «на» В.

Функция - множество элементов из А, образы которых принадлежат В, называется прообразом множества В, то есть

В общем случае может не быть отображением «в» или «на» А, так как функция может быть неоднозначной.

Отображение f называется взаимно однозначным, если каж­дый элемент множества В является образом не более чем одного элемента из А. Отображение f множества А на (в) В называется гомоморфиз­мом множеств, если выполняется условие (а 1 , а 2 , ... , a n) f (а 1 ,), f (а 2 ,) f (а 3 ,) f (а 4 ,) ..... f (а n ,), где

Изоморфизм множества А на В является взаимно однознач­ным гомоморфизмом, т. е. (a 1 , а 2 ,.. , a k) А <=> (f (а 1 ,) f (а 2)..,

Введенные понятия позволяют определить модель как изомор­физм А в , где А - множество фиксированных элементов пред­метной области с исследуемыми связями, отношениями между эти­ми элементами, - абстрактное множество, задаваемое кортежем

=<{M}, P 1 ,Р 2 ,…, Р n > , (1)

{M} – множество элементов модели, соответствующих элементам предметной области, называемое носителем модели;

Р 1 , Р 2 ,..., Р n - предикаты, отображающие наличие того или иного отношения между элементами предметной области.

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

Носитель модели является содержательной областью преди­катов Р 1, Р 2 ,...,Р n . Предикаты называются сигнатурой модели .

Выбор носителя и сигнатуры при построении модели опреде­ляется предметом исследования.

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

Системой называется кортеж



S = < >. (2)

Подмодель, определяющая поведение системы. Иногда эта подмодель может рассматриваться как «черный ящик», о котором известно лишь то, что на определенные воздействия он реагирует опреде­ленным образом;

Подмодель, определяющая структуру системы при ее внутреннем рассмотрении;

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

1, если преобразование существует при взаимно однозначном соответствии между элементами носите­лей моделей и , в противном случае = 0. Наличие предиката целостности позволяет говорить о том, что система - это семантическая модель, имеющая внутреннюю интерпретацию.

Подмодель может быть представлена в виде кортежа, вклю­чающего пять объектов:

х = x(t) - входной сигнал, то есть конечное множество функций времени t: <х 0 (0, ..., x k (t)>;

у = y(t) - выходной сигнал, представляющий собой конечное множе­ство функций у = < y 1 ..., у n >;

z= z(t) - переменная состояния модели , также характеризующаяся конечным множеством функций z= < z 1 (t)…z n (t) >, знание которых в заданный момент времени позволяет определить значения выходных характеристик модели – функционалы (глобальные уравнения системы), задающие текущие значения выходного сигнала у(t) и внутреннего состояния z(t)

y(t) = g(z(t),x(t)); (4)

z(t) = f(z(t 0), x(τ)), τ . (5)

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

Кроме выражения (2) систему задают тремя аксиомами.

Аксиома 1. Для системы определены пространство состо­яний Z, в которых может находиться система, и параметрическое пространство Т, в котором задано поведение системы.

В связи с этим математические описания вида (3) приня­то называть динамическими системами, так как они отражают способность систем изменять состояния z (t) в параметрическом пространстве Т.

В отличие от динамических статические сис­темы таким свойством не обладают. В качестве параметрического пространства обычно рассматривается временной интер­вал от нуля до бесконечности.

Аксиома 2 . Пространство состояний Z содержит не менее двух элементов. Эта аксиома отражает естественное представле­ние о том, что сложная система может находиться в разных со­стояниях.

Аксиома 3 . Система обладает свойством функциональной эмерджентности.

Эмерджентностъ (целостность) - это такое свойство систе­мы S, которое принципиально не сводится к сумме свойств эле­ментов, составляющих систему, и не выводится из них:

где: - i-я характеристика системы S; т - общее количество характеристик.

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

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

Упражнения

1. Опишите в виде черного ящика известный Вам бытовой прибор.

2. Рассмотрите примеры функционирования известной Вам системы.

3. Докажите системность дерева, Солнечной системы, озера и других объектов.

Литература:

1. Богданов А.А. Всеобщая организационная наука (тектология)/ в 3 т. - М., 1905-1924

2. Винер Н. Кибернетика. М.: Сов. радио. 1968.

3. Пригожин И., Стенгерс И. Порядок из хаоса. М.: Прогресс, 1986.

4. Уемов А.И. Системный подход и общая теория систем. М.: Мысль, 1978

5. Шэннон Р. Имитационное моделирование систем искусство и наука. М.: Мир, 1978

Семантическая сеть -- информационная модель предметной области, имеющая вид ориентированного графа, вершины которого соответствуют объектам предметной области, а дуги (рёбра) задают отношения между ними. Объектами могут быть понятия, события, свойства, процессы. Таким образом, семантическая сеть является одним из способов представления знаний. В названии соединены термины из двух наук: семантика в языкознании изучает смысл единиц языка, а сеть в математике представляет собой разновидность графа -- набора вершин, соединённых дугами (рёбрами). В семантической сети роль вершин выполняют понятия базы знаний, а дуги (причем направленные) задают отношения между ними. Таким образом, семантическая сеть отражает семантику предметной области в виде понятий и отношений.

Идея систематизации на основе каких-либо семантических отношений предлагалась ещё учёными ранней науки. Примером этого может служить биологическая классификация Карла Линнея 1735 г. Если рассматривать её как семантическую сеть, то в данной классификации используется отношение подмножества, современное AKO.

Прародителями современных семантических сетей можно считать экзистенциальные графы, предложенные Чарльзом Пирсом в 1909 г. Они использовались для представления логических высказываний в виде особых диаграмм. Пирс назвал этот способ «логикой будущего».

Важным начинанием в исследовании сетей оказали работы немецкого психолога Отто Зельца 1913 и 1922 гг. В них для организации структур понятий и ассоциаций, а также изучения методов наследования свойств он использовал графы и семантические отношения. Исследователи Дж. Андерсон (1973), Д. Норман (1975) и другие использовали эти работы для моделирования человеческой памяти и интеллектуальных свойств.

Компьютерные семантические сети были детально разработаны Ричардом Риченсом в 1956 году в рамках проекта Кембриджского центра изучения языка по машинному переводу. Процесс машинного перевода подразделяется на 2 части: перевод исходного текста в промежуточную форму представления, а затем эта промежуточная форма транслируется на нужный язык. Такой промежуточной формой как раз и были семантические сети.

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

Основной формой представления семантической сети является граф. Понятия семантической сети записываются в овалах или прямоугольниках и соединяются стрелками с подписями -- дугам. Это наиболее удобно воспринимаемая человеком форма. Её недостатки проявляются, когда мы начинаем строить более сложные сети или пытаемся учесть особенности естественного языка.

Классификация семантических сетей:

Для всех семантических сетей справедливо разделение по арности и количеству типов отношений.

По количеству типов, сети могут быть однородными и неоднородными. Однородные сети обладают только одним типом отношений (стрелок), например, таковой является вышеупомянутая классификация биологических видов (с единственным отношением AKO). В неоднородных сетях количество типов отношений больше двух. Классические иллюстрации данной модели представления знаний представляют именно такие сети. Неоднородные сети представляют больший интерес для практических целей, но и большую сложность для исследования.

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

Помимо концептуальных графов существуют и другие модификации семантических сетей, это является ещё одной основой для классификации (по реализации).

При проектировании баз данных используются семантическое моделирование для создания концептуальной модели предметной области и отражение ее спецификаций в среде конкретной СУБД. Однако зачастую полученная концептуальная схема базы данных существенно отличается от первоначальной концептуальной модели.
В 70-е годы реляционная модель данных возникла как ответ на потребность в простой СУБД, соответствующей уровню развития компьютерной технологии своего времени. Реляционная база данных - это совокупность отношений, содержащих всю информацию, которая должна храниться в БД; пользователи могут воспринимать такую базу данных как совокупность таблиц.Сегодня гораздо важнее удобство проектирования и эксплуатации баз данных, а то, что когда-то казалось простым, математически строгим и логичным, стало восприниматься как неудобное. Семантическое расширение реляционной модели
Большая часть данных, возникающих в ходе деятельности, например, предприятия, представляется в виде электронных и бумажных документов. С точки зрения манипулирования этими данными все аспекты хозяйственной деятельности либо являются документооборотом, либо могут быть формально к нему сведены. Сегодня доминирующее положение занимают реляционные СУБД, которые обеспечивают удобный способ хранения информации в виде таблиц.Структуру данных большинства реальных документов можно представить как произвольное иерархическое дерево с горизонтальными связями. Документы полностью хранятся в одной ячейке таблицы реляционной базы либо разбиваются на множество таблиц, а некоторые таблицы из разных документов объединяются. Однако в реляционной базе данных мы уже имеем дело с другими документами, поэтому алгоритм обработки реального документа нельзя сделать основой алгоритма программного кода хранимой процедуры. Реальные документы снова появляются лишь на уровне приложения. Здесь, по сути, мы имеем дело не с отображением, а с перепроектированием документов и, соответственно, документооборота.Как известно, целью реляционного подхода было преодоление ограничений ранних систем — иерархических и сетевых. Реляционная модель достаточна для моделирования предметных областей, но само проектирование базы в терминах отношений часто оказывается очень сложным. Потребность проектировщиков в более удобных и мощных средствах представления предметной области вызвала появление семантического моделирования .Основная цель исследований в этой области состоит в том, чтобы сделать СУБД более «разумными», максимально отражающими особенности прикладной области. Если в основу СУБД будет положена модель данных, более соответствующая семантике предметной области, то и построенные на ее основе базы данных будут больше соответствовать реальным системам, а проектирование баз данных значительно упростится. Семантическое моделирование представляет собой моделирование структуры данных, опираясь на смысл этих данных. В качестве инструмента семантического моделирования используются различные варианты диаграмм сущность-связь (ER - Entity-Relationship). Первый вариант модели сущность-связь был предложен в 1976 г. Питером Пин-Шэн Ченом. В дальнейшем многими авторами были разработаны свои варианты подобных моделей (нотация Мартина, нотация IDEF1X, нотация Баркера и др.). Кроме того, различные программные средства, реализующие одну и ту же нотацию, могут отличаться своими возможностями.По сути, все варианты диаграмм сущность-связь исходят из одной идеи - рисунок всегда нагляднее текстового описания. Все такие диаграммы используют графическое изображение сущностей предметной области, их свойств (атрибутов), и взаимосвязей между сущностями.Основные понятия ER-диаграмм (близко к нотации Баркера)Определение 1. Сущность - это класс однотипных объектов, информация о которых должна быть учтена в модели.Каждая сущность должна иметь наименование, выраженное существительным в единственном числе.Примерами сущностей могут быть такие классы объектов как "Поставщик", "Сотрудник", "Накладная".Каждая сущность в модели изображается в виде прямоугольника с наименованием:Определение 2. Экземпляр сущности - это конкретный представитель данной сущности.Например, представителем сущности "Сотрудник" может быть "Сотрудник Иванов".Экземпляры сущностей должны быть различимы, т.е. сущности должны иметь некоторые свойства, уникальные для каждого экземпляра этой сущности .Определение 3. Атрибут сущности - это именованная характеристика, являющаяся некоторым свойством сущности.Наименование атрибута должно быть выражено существительным в единственном числе (возможно, с характеризующими прилагательными).Примерами атрибутов сущности "Сотрудник" могут быть такие атрибуты как "Табельный номер", "Фамилия", "Имя", "Отчество", "Должность", "Зарплата" и т.п.Атрибуты изображаются в пределах прямоугольника, определяющего сущность:Определение 4. Ключ сущности - это неизбыточный набор атрибутов, значения которых в совокупности являются уникальными для каждого экземпляра сущности. Неизбыточность заключается в том, что удаление любого атрибута из ключа нарушается его уникальность.Сущность может иметь несколько различных ключей.Ключевые атрибуты изображаются на диаграмме подчеркиванием:Определение 5. Связь - это некоторая ассоциация между двумя сущностями. Одна сущность может быть связана с другой сущностью или сама с собою.Связи позволяют по одной сущности находить другие сущности, связанные с нею.Например, связи между сущностями могут выражаться следующими фразами - "СОТРУДНИК может иметь несколько ДЕТЕЙ", "каждый СОТРУДНИК обязан числиться ровно в одном ОТДЕЛЕ".Графически связь изображается линией, соединяющей две сущности:Каждая связь имеет два конца и одно или два наименования. Наименование обычно выражается в неопределенной глагольной форме: "иметь", "принадлежать" и т.п. Каждое из наименований относится к своему концу связи. Иногда наименования не пишутся ввиду их очевидности.Каждая связь может иметь один из следующих типов связи:Связь типа один-к-одному означает, что один экземпляр первой сущности (левой) связан с одним экземпляром второй сущности (правой). Связь один-к-одному чаще всего свидетельствует о том, что на самом деле мы имеем всего одну сущность, неправильно разделенную на две.Связь типа один-ко-многим означает, что один экземпляр первой сущности (левой) связан с несколькими экземплярами второй сущности (правой). Это наиболее часто используемый тип связи. Левая сущность (со стороны "один") называется родительской, правая (со стороны "много") - дочерней.Связь типа много-ко-многим означает, что каждый экземпляр первой сущности может быть связан с несколькими экземплярами второй сущности, и каждый экземпляр второй сущности может быть связан с несколькими экземплярами первой сущности. Тип связи много-ко-многим является временным типом связи , допустимым на ранних этапах разработки модели. В дальнейшем этот тип связи должен быть заменен двумя связями типа один-ко-многим путем создания промежуточной сущности.Каждая связь может иметь одну из двух модальностей связи :Модальность "может" означает, что экземпляр одной сущности может быть связан с одним или несколькими экземплярами другой сущности, а может быть и не связан ни с одним экземпляром.Модальность "должен" означает, что экземпляр одной сущности обязан быть связан не менее чем с одним экземпляром другой сущности.Связь может иметь разную модальность с разных концов.Описанный графический синтаксис позволяет однозначно читать диаграммы, пользуясь следующей схемой построения фраз:Каждый экземпляр СУЩНОСТИ 1 МОДАЛЬНОСТЬ СВЯЗИ НАИМЕНОВАНИЕ СВЯЗИ ТИП СВЯЗИ экземпляр СУЩНОСТИ 2 .Каждая связь может быть прочитана как слева направо, так и справа налево. Например,
Слева направо: "каждый сотрудник может иметь несколько детей".
Справа налево: "Каждый ребенок обязан принадлежать ровно одному сотруднику".Разработкa простой ER-модели При разработке ER-моделей мы должны получить следующую информацию о предметной области:*Список сущностей предметной области.
*Список атрибутов сущностей.
*Описание взаимосвязей между сущностями.ER-диаграммы удобны тем, что процесс выделения сущностей, атрибутов и связей является итерационным. Разработав первый приближенный вариант диаграмм, мы уточняем их, опрашивая экспертов предметной области. При этом документацией, в которой фиксируются результаты бесед, являются сами ER-диаграммы.Например, проектируемая система должна выполнять следующие действия:Хранить информацию о покупателях.
Печатать накладные на отпущенные товары.
Следить за наличием товаров на складе.Выделим все существительные в этих предложениях - это будут потенциальные кандидаты на сущности и атрибуты, и проанализируем их (непонятные термины будем выделять знаком вопроса):Покупатель - явный кандидат на сущность.
Накладная - явный кандидат на сущность.
Товар - явный кандидат на сущность
(?)Склад - а вообще, сколько складов имеет фирма? Если несколько, то это будет кандидатом на новую сущность.
(?)Наличие товара - это, скорее всего, атрибут, но атрибут какой сущности?
Сразу возникает очевидная связь между сущностями - "покупатели могут покупать много товаров" и "товары могут продаваться многим покупателям". Первый вариант диаграммы выглядит так:Куда поместить сущности "Накладная" и "Склад" и с чем их связать? Спросим себя, как связаны эти сущности между собой и с сущностями "Покупатель" и "Товар"? Покупатели покупают товары, получая при этом накладные, в которые внесены данные о количестве и цене купленного товара. Каждый покупатель может получить несколько накладных. Каждая накладная обязана выписываться на одного покупателя. Каждая накладная обязана содержать несколько товаров (не бывает пустых накладных). Каждый товар, в свою очередь, может быть продан нескольким покупателям через несколько накладных. Кроме того, каждая накладная должна быть выписана с определенного склада, и с любого склада может быть выписано много накладных. Таким образом, после уточнения, диаграмма будет выглядеть следующим образом:Пора подумать об атрибутах сущностей:Каждый покупатель является юридическим лицом и имеет наименование, адрес, банковские реквизиты.
Каждый товар имеет наименование, цену, а также характеризуется единицами измерения.
Каждая накладная имеет уникальный номер, дату выписки, список товаров с количествами и ценами, а также общую сумму накладной. Накладная выписывается с определенного склада и на определенного покупателя.
Каждый склад имеет свое наименование.Снова выпишем все существительные, которые будут потенциальными атрибутами, и проанализируем их:Юридическое лицо - термин риторический, мы не работаем с физическими лицами. Не обращаем внимания.
Наименование покупателя - явная характеристика покупателя.
Адрес - явная характеристика покупателя.
Банковские реквизиты - явная характеристика покупателя.
Наименование товара - явная характеристика товара.
(?)Цена товара - похоже, что это характеристика товара. Отличается ли эта характеристика от цены в накладной?
Единица измерения - явная характеристика товара.
Номер накладной - явная уникальная характеристика накладной.
Дата накладной - явная характеристика накладной.
(?)Список товаров в накладной - список не может быть атрибутом. Вероятно, нужно выделить этот список в отдельную сущность.
(?)Количество товара в накладной - это явная характеристика, но характеристика чего? Это характеристика не просто "товара", а "товара в накладной".
(?)Цена товара в накладной - опять же это должна быть не просто характеристика товара, а характеристика товара в накладной. Но цена товара уже встречалась выше - это одно и то же?
Сумма накладной - явная характеристика накладной. Эта характеристика не является независимой. Сумма накладной равна сумме стоимостей всех товаров, входящих в накладную.
Наименование склада - явная характеристика склада.С возникающим понятием "Список товаров в накладной" все довольно ясно. Сущности "Накладная" и "Товар" связаны друг с другом отношением типа много-ко-многим. Такая связь, как мы отмечали ранее, должна быть расщеплена на две связи типа один-ко-многим. Для этого требуется дополнительная сущность. Этой сущностью и будет сущность "Список товаров в накладной". Связь ее с сущностями "Накладная" и "Товар" характеризуется следующими фразами - "каждая накладная обязана иметь несколько записей из списка товаров в накладной", "каждая запись из списка товаров в накладной обязана включаться ровно в одну накладную", "каждый товар может включаться в несколько записей из списка товаров в накладной", " каждая запись из списка товаров в накладной обязана быть связана ровно с одним товаром". Атрибуты "Количество товара в накладной" и "Цена товара в накладной" являются атрибутами сущности " Список товаров в накладной".Точно также поступим со связью, соединяющей сущности "Склад" и "Товар". Введем дополнительную сущность "Товар на складе". Атрибутом этой сущности будет "Количество товара на складе". Таким образом, товар будет числиться на любом складе и количество его на каждом складе будет свое.Теперь можно внести все это в диаграмму:Концептуальные и физические ER-модели Разработанный выше пример ER-диаграммы является примером концептуальной диаграммы. Это означает, что диаграмма не учитывает особенности конкретной СУБД. По данной концептуальной диаграмме можно построить физическую диаграмму, которая уже будут учитываться такие особенности СУБД, как допустимые типы и наименования полей и таблиц, ограничения целостности и т.п. Приведенный физический вариант диаграммы может выглядеть, например, следующим образом:На данной диаграмме каждая сущность представляет собой таблицу базы данных, каждый атрибут становится колонкой соответствующей таблицы. Обращаем внимание на то, что во многих таблицах, например, "CUST_DETAIL" и "PROD_IN_SKLAD", соответствующих сущностям "Запись списка накладной" и "Товар на складе", появились новые атрибуты, которых не было в концептуальной модели - это ключевые атрибуты родительских таблиц, мигрировавших в дочерние таблицы для того, чтобы обеспечить связь между таблицами посредством внешних ключей.Таким образом, реальным средством моделирования данных является не формальный метод нормализации отношений, а так называемое семантическое моделирование.В качестве инструмента семантического моделирования используются различные варианты диаграмм сущность-связь (ER - Entity-Relationship).Диаграммы сущность-связь позволяют использовать наглядные графические обозначения для моделирования сущностей и их взаимосвязей.Сущности, определенные в концептуальной диаграмме становятся таблицами, атрибуты становятся колонками таблиц (при этом учитываются допустимые для данной СУБД типы данных и наименования столбцов), связи реализуются путем миграции ключевых атрибутов родительских сущностей и создания внешних ключей .Основное достоинство метода состоит в том, модель строится методом последовательных уточнений первоначальных диаграмм.Не рассматривались более сложные аспекты построения диаграмм, такие как подтипы, роли, исключающие связи, непереносимые связи, идентифицирующие связи и т.п.