Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Окончательный вариант..docx
Скачиваний:
3
Добавлен:
06.09.2019
Размер:
150.78 Кб
Скачать

3.2.2. Объекты

В процессе концептуального проектирования предметная область рассмат­ривается как объектная система, которая имеет следующие составляющие:

□ объект;

□ средство;

время;

связь.

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

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

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

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

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

Атрибутэто поименованная характеристика объекта, с помощью которой моделируется его свойство. Каждому объекту присущи свои атрибуты. Например, объект КНИГА должен иметь такие атрибуты: наименование

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

Если для некоторого экземпляра объекта значение некоторого атрибута не определено, то этот атрибут для данного экземпляра объекта имеет пустое значение. На диаграммах атрибуты объекта соединяются с ним линиями (рис. 3.4).

Значения каждого атрибута выбираются из соответствующего множества значений, включающего все потенциальные значения, которые могут быть присвоены атрибуту. Это множество значений называется доменом. Так, на­пример, допустим, что количество товара определяется в единицах и может варьироваться от нуля до 1 000 единиц. Следовательно, набор допустимых значений для данного атрибута можно определить как набор целых чисел от 0 до 1 000.

4.1.2. Домен

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

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

Следует отметить также семантическую нагрузку понятия домена: данные считаются сравнимыми только в том случае, когда они относятся к одному домену. В нашем примере значения доменов "Номера пропусков" и "Номера групп" относятся к типу целых чисел, но не являются сравнимыми. Заметим, что в большинстве реляционных СУБД понятие домена не используется, хотя в Oracle V.7 оно уже поддерживается.

Ключи

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

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

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

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

Рассмотрим, например, такую таблицу:

паспорта

Фамилия

Имя

Отчество

Должность

123456

Иванов

Иван

Иванович

Директор

234567

Петров

Петр

Иванович

Его зам

345678

Сидорова

Мария

Ивановна

Секретарша

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

Понятно, что отчество не может быть потенциальным ключом - есть совпадения. Фамилия - может, если только мы не планируем появления новых строк в таблице. Можно взять комбинацию фамилии и должности, врядли у нас будет два директора-однофамильца. Номер паспорта также подходит на роль потенциального ключа. Я думаю вы поняли мою мысль - к каждой конкретной таблице потенциальнх ключей может быть много. Выбор потенциального ключа - дело программиста. Тот же номер паспорта может не подойти, если мы ожидаем кого-нибудь с поддельным паспортом ;) Выбор делается каждый раз заново для каждой ситуации.

[an error occurred while processing this directive]

Первичные ключи.Итак с потенциальными ключами определились. Первичный ключ - это один из потенциальных ключей. Тот, который нам больше понравится. Вам какой больше нравиться? В реальной ситуации, новичок выберет номер паспорта. А что выберет профессионал? Профессионал добавит еще одно поле-счетчик, которое будет содержать уникальное для каждой записи значение. В Delphi такой тип поля называется AutoIncrement, в SQL Server есть целых 2 варианта - TimeStamp и свойтсво Identity поля. Подробнее этот момент мы рассмотрим в уроках по в взаимодействию с SQL Server'ом. Про полезность введения дополнительного поля, так называемого "суррогатного ключа", можно почитать

здесь. Мы ведь собрались стать профессионалами? Вот и поучимся у умных людей.  Лиричекое отступление - умный человек, а тем более профессионал никогда не скажет "Я и так все знаю, ничему меня не научишь". Потому что он знает - всегда есть чему учиться.

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

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

Код работника

Вид движения

Сумма

1

Оклад

100

1

Премия

30

1

Налоги

-25

2

Оклад

90

...

...

...

Код работника

Фимилия

Имя

Отчество

1

Иванов

Иван

Иванович

2

Петров

Петр

Иванович

3

Сидорова

Мария

Ивановна

В первой таблице - с деньгами - столбец "Код работника" называетсявнешним ключом. Ясно, что он не может существовать без соответствующей строки из второй таблицы, в которой столбец "Код работника" - уже знакомый нам обычный первичный ключ. Вторая таблица - с фамилиями - является как бы "справочником фамилий" для первой. Хотя чистая реляционная теория требует, чтобы внешние ключи всегда ссылались на первичные ключи, мы это требование низведем до простой рекомендации: бывают ситуации, когда одна и та же таблица может служить справочником разным другим, причем в разном качестве. А первичный ключ, как мы знаем, пожет быть только один.

Ссылочная целостность.В предыдущем параграфе мы обошли вопрос "А что будет, если не найдется работника с кодом, который мы использовали?" Ничего хорошего не будет. Такой ситуации надо всячески избегать.  Ссылочной целостностью, по-английски Refential Integriyr, называется такое состояние, когда у нас все что надо правильно находится. Контроль ссылочной целостности - обеспечение такого состояния. А если пользователь захочет удалить одно из работников? По ситуации смотреть надо - когда просто запретить такие действия, когда удалить все соответствующие записи из другой таблицы (так называемое "каскадное удаление"). Этот момент очень важен - ни при каких ситуациях нельзя допускать нарушения ссылочной целостности.

Пример

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

Система управления базами данных (СУБД) — совокупность языковых и программных средств, предназначенных для создания, ведения и совмест­ного использования БД многими пользователями.

Автоматизированная информационная система (АИС) — это система, реали­зующая автоматизированный сбор, обработку, манипулирование данны­ми, функционирующая на основе ЭВМ и других технических средств и включающая соответствующее программное обеспечение (ПО) и персо­нал. В дальнейшем в этом качестве будет использоваться термин информаци-I онная система (ИС), который подразумевает понятие автоматизированная.

ИС может функционировать самостоятельно или служить компонентом бо­лее сложной системы.

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

 Запись или строка

 Поле или столбец

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

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

  • Таблица «Клиенты», в которой перечислены клиенты организации и их адреса.

  • Каталог продаваемых товаров, включающий цены и изображения каждого из них.

  • Таблица «Задачи», в которой отслеживаются задачи и сроки их выполнения.

  • Перечень оборудования или складских запасов.