База данных

Автор работы: Пользователь скрыл имя, 06 Января 2014 в 21:03, лекция

Описание работы

Системы управления базами данных (СУБД) – это специализированные программные продукты, позволяющие:
1) постоянно хранить сколь угодно большие (но не бесконечные) объемы данных;
2) извлекать и изменять эти хранящиеся данные в том или ином аспекте, используя при этом так называемые запросы;

Файлы: 1 файл

1.docx

— 453.70 Кб (Скачать файл)

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

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

Учащиеся  – родительское отношение, объединяющее в себе информацию об атрибутах всех остальных отношений:

 

Школьники  – дочернее отношение:

 

Студенты  – второе дочернее отношение:

 

Аспиранты  – третье дочернее отношение:

 

 

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

Также мы видим, что различные  коды учащихся в классе сущностей  «Учащиеся» могут соответствовать  различным дочерним классам сущностей. Так, про учащегося с кодом  «1» Заботина Николая в родительском отношении неизвестно ничего, кроме  его имени, а всю остальную  информацию (кто он, школьник, студент  или аспирант) можно узнать только обратившись к соответствующему дочернему классу сущностей (определяется по коду).

Аналогичным образом необходимо работать с остальными учащимися, чьи  коды указаны в родительском классе сущностей «Учащиеся».

5. Композиция

 

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

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

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

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

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

1) ссылка на агрегат  участвует в идентификации компонентов;

2) эти компоненты не  могут существовать вне агрегата.

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

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

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

 

Итак, рассмотрим только что  построенную диаграмму.

Что мы в ней видим?

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

Теперь разберемся с кратностями  связей, соединяющих родительский и  оба дочерних класса. Так как мы имеем дело с не полностью идентифицирующими  связями, то кратности присутствуют такие: «один» и «много». Кратность  «один» присутствует на родительском конце обеих связей и символизирует  то, что в списке всех имеющихся  корпусов (а класс сущностей «Корпуса»  является именно таким списком) каждый номер может встретиться только один, (и не более того) раз. А, в  свою очередь, среди атрибутов классов  «Аудитории» и «Лифты» каждый номер корпуса может встретиться  много раз, так как аудиторий (или  лифтов) больше, чем корпусов, и в  каждом корпусе – несколько и  аудиторий, и лифтов. Таким образом, при перечислении всех аудиторий  и лифтов мы неминуемо будем повторять  номера корпусов.

И, наконец, как и при  рассмотрении предыдущего вида связи, запишем фрагменты операторов создания базовых отношений (или, что одно и то же, классов сущностей) «Аудитории»  и «Лифты», причем сделаем это  с определением правил поддержания  ссылочной целостности типа cascade.

Итак, этот оператор будет  выглядеть следующим образом:

 

Create table Аудитории

primary key (№ корпуса,  № аудитории)

foreign key (№ корпуса) references Корпуса (№ корпуса)

on update cascade

on delete cascade

 

Create table Лифты

primary key (№ корпуса, № лифта)

foreign key (№ корпуса) references Корпуса (№ корпуса)

on update cascade

on delete cascade;

 

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

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

Корпуса  – родительское отношение имеет следующий вид:

 

Аудитории  – дочерний класс сущностей:

 

Лифты  – второй дочерний класс сущностей родительского класса «Корпуса»:

 

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

6. Агрегация

 

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

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

1) обязательно не идентифицирующими  связями;

2) необязательно не идентифицирующими  связями.

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

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

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

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

Пусть наша будущая диаграмма  описывает маркированные компоненты автомобилей (а именно двигатель  и шасси). При этом, будем считать, что списывание автомобиля предполагает и списывание шасси вместе с ним, но не предполагает одновременное списывание двигателя.

Итак, наша ключевая диаграмма  имеет следующий вид:

 

Итак, что же мы видим на этой ключевой диаграмме?

Во-первых, связь родительского класса сущностей «Автомобили» с дочерним классом сущностей «Двигатели» является не обязательно не идентифицирующей, потому что атрибут «№ автомобиля» допускает среди своих значений Null-значения. В свою очередь, Null-значе-ния этот атрибут допускает по той причине, что списывание двигателя, по условию не зависит от списывания всего автомобиля и, следовательно, при списывании автомобиля происходит не обязательно. Также мы видим, что первичный ключ «№ двигателя» класса сущностей «Автомобили» мигрирует в неключевой атрибут «№ двигателя» класса сущностей «Двигатели». И при этом данный атрибут приобретает статус внешнего ключа. А первичным ключом в этом классе сущностей «Двигатели» является атрибут «Маркер двигателя», который не ссылается ни на какой атрибут родительского отношения.

Во-вторых, связь родительского класса сущностей «Двигатели» и дочернего класса сущностей «Шасси» – это обязательно не идентифицирующая связь, потому что атрибут внешнего ключа «№ автомобиля» не допускает среди своих значений Null-значения. Это, в свою очередь, происходит потому, что по условию известно, что списывание автомобиля предполагает обязательное одновременное списывание и шасси. Здесь, так же, как и в случае предыдущей связи, первичный ключ родительского класса сущностей «Двигатели» мигрирует в неключевой атрибут «№ автомобиля» дочернего класса сущностей «Шасси». При этом первичным ключом этого класса сущностей является атрибут «Маркер шасси», который не ссылается ни на какой атрибут родительского отношения «Двигатели».

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

 

Create table Двигатели

primary key (Маркер двигателя)

foreign key (№ автомобиля) references Автомобили (№ автомобиля)

on update cascade

on delete set Null

 

Create table Шасси

primary key (Маркер шасси)

foreign key (№ автомобиля) references Автомобили (№ автомобиля)

on update cascade

on delete cascade;

 

Мы видим, что правило  поддержания ссылочной целостности  мы использовали везде одно – cascade, так как еще раньше признали его  наиболее рациональным из всех. Однако на этот раз мы использовали (помимо правила cascade) еще и правило поддержания  ссылочной целостности set Null. Причем использовали мы его при следующем условии: если какое-то значение первичного ключа «№ автомобиля» из родительского класса сущностей «Автомобили» будет удалено, то значению ссылающегося на него внешнего ключа «№ автомобиля» дочернего отношения «Двигатели» будет присвоено Null-значение.

7. Унификация  атрибутов

 

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

Например, в случае, когда  сотрудник может работать в организации, числясь не более чем в одном  отделе, после унификации атрибута «Код организации» получим следующую  ключевую диаграмму:

 

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

1) первый раз с маркером  PFK из класса сущностей «Организация» при установлении не полностью идентифицирующей связи;

2) и второй раз, с  маркером FK с условием допустимости Null-значений из класса сущностей «Отделы» при установлении не обязательно не идентифицирующей связи.

При унификации атрибут «Код организации» получает статус атрибута первичного / внешнего ключа, поглощающего статус атрибута внешнего ключа.

Построим новую ключевую диаграмму, демонстрирующую сам  процесс унификации:

 

Таким образом и произошла  унификация атрибутов.

 

Лекция  № 13. Экспертные системы и продукционная  модель знаний

1. Назначение  экспертных систем

 

Для ознакомления с таким  новым для нас понятием, как экспертные системы  мы, для начала, пройдемся по истории создания и разработки направления «экспертные системы», а потом определим и само понятие экспертных систем.

В начале 80-х гг. XX в. в исследованиях по созданию искусственного интеллекта сформировалось новое самостоятельное направление, получившее название экспертных систем . Цель этих новых исследований по экспертным системам состоит в разработке специальных программ, предназначенных для решения особых видов задач. Что это за особый вид задач, потребовавший создания целой новой инженерии знаний? К этому особому виду задач могут быть отнесены задачи из абсолютно любой предметной области. Главное, что отличает их от задач обычных, – это то, что человеку-эксперту решить их представляется очень сложным заданием. Тогда и была разработана первая так называемая экспертная система  (где в роли эксперта выступал уже не человек, а машина), причем экспертная система получает результаты, не уступающие по качеству и эффективности решениям, получаемым обычным человеком – экспертом. Результаты работы экспертных систем могут быть объяснены пользователю на очень высоком уровне. Данное качество экспертных систем обеспечивается их способностью рассуждать о собственных знаниях и выводах. Экспертные системы вполне могут пополнять собственные знания в процессе взаимодействия с экспертом. Таким образом, их можно с полной уверенностью ставить в один ряд с вполне оформившимся искусственным интеллектом.

Информация о работе База данных