Статистические данные, корректность программного обеспечения

Автор работы: Пользователь скрыл имя, 28 Октября 2012 в 11:45, курсовая работа

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

Целью данной работы является рассмотрение способов конструирования программ.
Для наиболее оптимального изучения и рассмотрения поставлены следующие задачи:
1) изучить семантические модели данных;
2) рассмотреть ER-модели и диаграммы;
3) рассмотреть и привести пример задачи, решенной с помощью конструирования программ операционный семантики;
4) Применить их на практике в программном продукте БД "Бухгалтерия"

Содержание работы

Введение
3
1 Операционная семантика
4
1.1 Основные понятия
4
1.2 Семантические модели данных
5
1.3 Семантическая модель Entity-Relationship
9
1.4 Основные понятия ER-модели
10
1.5 Уникальные идентификаторы типов сущности
14
1.6 Нормальные формы ER-диаграмм
17
1.7 Первая нормальная форма ER-диаграммы
18
1.8 Вторая нормальная форма ER-диаграммы
20
1.9 Третья нормальная форма ER-диаграммы
22
2 Конструирование программного обеспечения
23
2.1 Постановка задачи
24
2.2 Проектирование решения
27
2.3 Кодирование алгоритма
29
2.4 Сопровождение программы
29
2.5 Программная документация
30
2.6 Проектирование приложений для работы с базами данных
31
Заключение
32
Список литературы
33

Файлы: 1 файл

Способы конструкцирования программ операционный семантики баз данных.docx

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

На рисунке изображена сущность  АЭРОПОРТ с примерными экземплярами «Шереметьево» и «Хитроу». Эта примитивная диаграмма тем не менее несет важную информацию. Во-первых, она показывает, что в базе данных будут содержаться однотипные структуры данных (экземпляры сущности), описывающие аэропорты. Во-вторых, поскольку в жизни существует несколько точек зрения на аэропорты (например, точка зрения пилота, точка зрения пассажира, точка зрения администратора) и этим точкам зрения соответствуют разные структуры данных, то приведенные примеры аэропортов позволяют несколько сузить допустимый набор точек зрения. В нашем случае приведены примеры международных аэропортов, так что, скорее всего, имеется точка зрения пассажира или пилота международных авиарейсов.

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

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

Связь представляется в виде ненаправленной линии, соединяющей две сущности или ведущей от сущности к ней  же самой. При этом в месте «стыковки» связи с сущностью используются:

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

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

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

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

Лаконичная устная трактовка изображенной диаграммы состоит в следующем: каждый БИЛЕТ предназначен для одного и только одного ПАССАЖИРА; каждый ПАССАЖИР может иметь один или более БИЛЕТОВ. На следующем примере изображена рекурсивная связь, связывающая сущность  МУЖЧИНА с ней же самой. Конец связи с именем «сын» определяет тот факт, что несколько людей могут быть сыновьями одного отца. Конец связи с именем «отец» означает, что не у каждого мужчины должны быть сыновья.

Лаконичная устная трактовка изображенной диаграммы состоит в следующем: каждый МУЖЧИНА является сыном одного и только одного МУЖЧИНЫ; каждый МУЖЧИНА может являться отцом одного или более МУЖЧИН. Атрибутом сущности является любая деталь, которая служит для уточнения, идентификации, классификации, числовой характеристики или выражения состояния сущности. Имена атрибутов заносятся в прямоугольник, изображающий сущность, под именем сущности и изображаются малыми буквами, возможно, с примерами. Пример типа сущности  ЧЕЛОВЕК с указанными атрибутами показан на рисунке. С технической точки зрения атрибуты  типа сущности в ER-модели похожи на атрибуты отношения в реляционной модели данных. И в том, и в другом случаях введение именованных атрибутов вводит некоторую типовую структуру данных, имя которой совпадает с именем типа сущности в случае ER-модели или с именем переменной отношения в случае реляционной модели. Этой типовой структуре должны следовать все экземпляры типа сущности или все кортежи отношения. Но имеется и важное отличие. Напомним, что в реляционной модели данных атрибут определяется как упорядоченная пара <имя_атрибута, имя_домена> (или <имя_атрибута, имя_базового_типа_данных>, если понятие домена не поддерживается). Заголовок отношения, определяемый как множество таких пар, представляет собой полный аналог структурного типа данных в языках программирования.

При определении атрибутов типа сущности в ER-модели указание домена атрибута не является обязательным, хотя это и  возможно (см. ниже). Обсудим, чем вызвана  эта возможность «ослабленного» определения атрибутов. Прежде всего, как отмечалось в разделе «Введение», семантические модели данных используются для построения концептуальных схем БД, и эти схемы преобразуются  в реляционные схемы БД, которые  поддерживаются той или иной СУБД. Несмотря на то что в настоящее  время типовые возможности РСУБД  в основном стандартизованы (на основе стандарта языка SQL), детали базового набора типов данных и средств  определения доменов в разных системах могут различаться. Поскольку  производители CASE-средств проектирования реляционных БД стремятся не связывать  обеспечиваемые ими возможности  семантического моделирования с  конкретной реализацией СУБД, они  стимулируют откладывание строгого определения типов атрибутов  до стадии полного определения реляционной  схемы. Кроме того, напомним, что при определении атрибута отношения допускается использование имен атрибутов, совпадающих с именами своих доменов (это два разных пространства имен, и наличие одинаковых имен у атрибутов и доменов не вызывает коллизий). Поэтому при определении атрибутов типов сущности можно так подбирать их имена, что они в дальнейшем будут подсказывать, какие домены у этих атрибутов имеются в виду. Пониманию предполагаемой сути доменов способствует и возможность указания примеров значений атрибутов. Например, на рисунке имеется атрибут год рождения, в качестве примерного значения которого указано «1976». Это подсказывает, что в реляционной схеме при определении соответствующего атрибута наиболее естественным базовым типом данных будет темпоральный тип «ДАТА», значения которого задают дату с точностью до года.

1.5 Уникальные идентификаторы типов сущности

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

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

Приведем несколько примеров. На рисунке показан тип сущности  КНИГА, пригодный для использования в базе данных книжного склада. При издании любой книги в любом издательстве (кроме пиратских, которыми мы для простоты пренебрежем) ей присваивается уникальный номер – ISBN. Понятно, что значение атрибута  isbn будет уникально идентифицировать партию книг на складе. Кроме того, конечно, в качестве уникального идентификатора годится и комбинация атрибутов <автор, название, номер издания, издательство, год издания>.

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

На рисунке диаграмма включает три связанных типа сущности. Профессора обладают знаниями в нескольких учебных дисциплинах. Преподавание каждой дисциплины доступно нескольким профессорам. Другими словами, между сущностями  ПРОФЕССОР и ДИСЦИПЛИНА определена связь «многие ко многим». Каждый профессор может готовить курсы по любой доступной ему дисциплине. Каждой дисциплине может быть посвящено несколько учебных курсов. Но каждый профессор может готовить только один курс по любой доступной ему дисциплине, и каждый курс может быть посвящен только одной дисциплине. Тем самым, каждый экземпляр типа сущности  КУРС уникально идентифицируется экземпляром сущности  ПРОФЕССОР и экземпляром сущности  ДИСЦИПЛИНА, т. е. парой связей с именами концов  ГОТОВИТСЯ и ПОСВЯЩЕН на стороне сущности  КУРС. Заметим, что сущности  ПРОФЕССОР и ДИСЦИПЛИНА  связями не идентифицируются.

Наконец, на рисунке приведен пример типа сущности, уникальный идентификатор которого является комбинацией атрибутов и связей. Это несколько уточненный вариант сущности с рекурсивной связью с рисунком. У каждого человека могут быть дети, и у каждого человека имеется отец. Тогда, если предположить, что близнецам, появившимся на свет одновременно, не дают одинаковых имен, то уникальным идентификатором типа сущности  ЧЕЛОВЕК может быть комбинация атрибутов <дата рождения, ФИО> и связь с именем конца РЕБЕНОК.

1.6 Нормальные формы ER-диаграмм

Как и в случае схем реляционных  баз данных, для ER-диаграмм вводится понятие нормальных форм, причем их смысл очень близко соответствует  смыслу нормальных форм отношений. Заметим, что определения нормальных форм ER-диаграмм делают более понятным смысл  нормализации схем отношений. Мы приведем только очень краткие и неформальные определения трех первых нормальных форм. Конечно, можно было бы ввести дальнейшие нормальные формы ER-диаграмм, аналогичные нормальной форме Бойса-Кодда, 4NF и 5NF, но на практике к такой нормализации обычно не прибегают, а общие идеи после ознакомления с лекцией 8 должны быть понятны и так.

1.7 Первая нормальная форма ER-диаграммы

В первой нормальной форме ER-диаграммы  устраняются атрибуты, содержащие множественные  значения, т. е. производится выявление  неявных сущностей, «замаскированных» под атрибуты.  На рисунке показана диаграмма, в которой тип сущности  АЭРОПОРТ не удовлетворяет требованию первой нормальной формы. Здесь для нас несущественны атрибуты сущности  АВИАРЕМОНТНОЕ ПРЕДПРИЯТИЕ, но сущность  АЭРОДРОМ помимо атрибутов, отражающих собственные характеристики аэродромов (длина взлетно-посадочной полосы, число ангаров и т.д.) содержит атрибут, множественное значение которого характеризует самолеты, приписанные к этому аэродрому. Очевидно, что самолеты нуждаются в ремонте, т. е. должны обслуживаться некоторым авиаремонтным предприятием. Но поскольку самолеты являются частью сущности  АЭРОДРОМ, единственным способом фиксации этого факта на диаграмме является проведение связи «многие ко многим» между типами сущности  АЭРОДРОМ и АВИАРЕМОНТНОЕ ПРЕДПРИЯТИЕ. Таким образом выражается то соображение, что для ремонта разных самолетов, приписанных к одному аэродрому, могут использоваться разные транспортные предприятия, и каждое транспортное предприятие может обслуживать несколько аэродромов.

Чем плоха эта ситуация? Прежде всего, тем, что скрывается тот факт, что авиаремонтное предприятие  ремонтирует самолеты, а не аэродромы. Наша же связь на самом деле означает, что любой аэродром из группы аэродромов обслуживается любым авиаремонтным  предприятием из группы таких предприятий. Проблема состоит именно в том, что  значением атрибута «самолеты» является множество экземпляров типа сущности  САМОЛЕТ, и этот тип сущности сам обладает атрибутами и связями. Ситуацию исправляет ER-диаграмма, показанная на рисунке. Здесь мы выделили тип сущности  САМОЛЕТ. Связь между сущностями  АЭРОДРОМ и САМОЛЕТ показывает, что к одному аэродрому приписывается несколько самолетов. Связь между сущностями  САМОЛЕТ и АВИАРЕМОНТНОЕ ПРЕДПРИЯТИЕ означает, что каждый самолет из группы самолетов (группу самолетов могут составлять, например, все самолеты одного типа) обслуживается любым транспортным предприятием из некоторой группы таких предприятий. ER-диаграмма на рисунке находится в первой нормальной форме и, как мы видим, лучше отображает реальную ситуацию.

1.8 Вторая нормальная форма ER-диаграммы

Во второй нормальной форме устраняются  атрибуты, зависящие только от части  уникального идентификатора. Эта  часть уникального идентификатора определяет отдельную сущность. На рисунке показана диаграмма, на которой тип сущности  ЭЛЕМЕНТ РАСПИСАНИЯ не удовлетворяет требованиям второй нормальной формы. На этой диаграмме у сущности  ЭЛЕМЕНТ РАСПИСАНИЯ имеются следующие свойства. Элементы расписания предназначены для сохранения данных о рейсах самолетов, вылетающих в течение дня. Некоторыми важными характеристиками рейса являются номер рейса, аэропорт вылета, аэропорт назначения, дата и время вылета, бортовой номер самолета, тип самолета. Если говорить про российские авиационные компании, то (1) у каждого рейса имеется заранее приписанный ему номер (уникальный среди всех других имеющихся номеров рейсов), (2) не все рейсы совершаются каждый день, поэтому характеристикой конкретного рейса является дата и время его совершения, (3) бортовой номер самолета определяется парой <номер рейса, дата-время вылета>. Имеется связь «многие к одному» между сущностями  ЭЛЕМЕНТ РАСПИСАНИЯ и ГОРОД. Экземпляры типа сущности  ГОРОД характеризуют город, в который прибывает данный рейс.

Информация о работе Статистические данные, корректность программного обеспечения