Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Концептуальное моделирование

.pdf
Скачиваний:
29
Добавлен:
11.06.2015
Размер:
1.38 Mб
Скачать

Анохин А.Н., Тенякова Р.В. Базы данных. Учебное пособие по курсу «Базы данных» для студентов направлений 230100, 230200.

Обнинск: ИАТЭ, 2010

©Анохин А.Н., Тенякова Р.В., 2010 г.

©Обнинский государственный технический университет атомной энергетики (ИАТЭ), 2010 г.

Внимание! Данный файл – это черновик учебного пособия. Поэтому:

1.Большинство ссылок на рисунки и таблицы некорректны. Рисунок нужно находить по смыслу - как правило, он расположен рядом с текстом, который на него ссылается.

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

1.ОСНОВНЫЕ ПОНЯТИЯ БАЗ ДАННЫХ

1.1.База данных и автоматизированная система

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

Рис. 1. Виды обеспечения автоматизированной системы

С системных позиций АС представляет собой совокупность тринадцати видов обеспечения (рис. 1) – технического, программного, информационного, интеллектуального, математического, организационного, методического, правового, кадрового, диалогового, лингвистического, эргономического, метрологического. Система перестает

2

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

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

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

Рис. 2. Структура информационного процесса

1.2.База данных и предметная область

Существуют различные определения понятия «база данных». Классик теории баз данных К. Дейт трактует это понятие двояко:

1)как «подобие электронной картотеки, т.е. хранилище для некоторого набора занесенных в компьютер данных»;

2)как некоторый набор перманентных (постоянных) данных, используемых прикладными системами какого-либо предприятия.

3

Согласно определению, данному в [2], база данных – это совокупность специальным образом организованных данных, хранимых в памяти вычислительной системы и отображающих состояние объектов и их взаимосвязей в рассматриваемой предметной области1.

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

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

Теперь взглянем на базу данных с другой стороны на простом примере. Оператор атомной станции получает команду на подъем мощности реактора. Ему нужно выяснить состояние реактора и стержней управления, затем принять решение о том, на какой стержень воздействовать и произвести это воздействие. Очевидно, что оператору не удастся заглянуть в реактор и воочию убедиться, в каком он состоянии. Да и что он может увидеть: ни температуру, ни нейтронный поток невозможно «увидеть» глазами. Чтобы воссоздать состояние реактора, оператор обращается к базе данных, в которую данные поступают со специальных датчиков. Иначе говоря, база данных для оператора – это заменитель или виртуальная модель самого реактора. Аналогично, база метеорологических данных помогает специалисту увидеть состояние погоды в регионе, не объезжая этот регион, база антропометрических данных позволяет спроектировать рабочие места для конкретных людей, без участия самих этих людей.

Таким образом, мы приходим к важному выводу, что база данных

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

Для ответа на него обратимся к понятию адекватности модели. Адекватность – это степень точности с которой модель воссоздает мо-

1 В ГОСТ [5] используется понятие «проблемная область»

4

делируемый объект. Однако нужно ли абсолютно точно повторять этот объект? Например, для исследования аэродинамических качеств в испытательной трубе макет автомобиля является адекватным, если он точно повторяет его геометрические очертания, фактуру поверхности и вес. При этом не требуется, чтобы кресла в салоне были обиты кожей и была установлена стереосистема. Однако если мы анализируем потребительские качества автомобиля и его эргономичность, то салон должен быть воспроизведен максимально точно, в то время как кузов, двигатель, трансмиссия и другие элементы вовсе необязательны. Таким образом, об адекватности модели обычно говорят «не вообще»¸ а

всвете решения определенных прикладных задач.

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

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

1.3.Базовые понятия информационного моделирования

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

Данные – это закодированное описание фактов, событий, явлений и объектов реального мира. Код может быть таким – 183,9; Светит солнце; идет дождь, таким – 1001011101001011001011010101110 или та-

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

Сами по себе данные далеко не всегда говорят человеку о чемлибо и не несут никакой смысловой нагрузки. Например, мало кто с уверенностью скажет: что означает число 183,9, упомянутое выше.

5

Однако, достаточно сказать, что это – рост человека в см, и все становится понятно. Объяснение смысла данных называется интерпрета-

цией (или семантикой).

Интерпретация данных чрезвычайно важна. Без нее мы никогда не сможем разобраться в том, что хранится на компьютерном диске, например в записи 1393ИВАНОВАВМ32178923. Однако, все прояснится через два шага:

на первом шаге мы разделим запись на отдельные данные, т.е. зададим структуру данных

1 3 9 3 ИВАНОВАВМ 3 2 1 7 8 9 2 3

на втором шаге мы укажем, какие свойства и факты описаны с помощью этих данных

1 3 9 3 ИВАНОВАВМ 3 2 1 7 8 9 2 3

Номер

Фамилия и

Пол

Номер

Домашний

зачетной

инициалы

 

комнаты в

телефон

книжки

 

 

общежитии

 

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

Свойство объекта Объект

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

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

единица информации := <объект, свойство, значение> (например, домашний телефон студента 78923).

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

6

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

единица информации := <объект, свойство, значение, время>

температура воздуха

в 12:00 23.02.2008 +2ОС

Информация, восприятие которой невозможно без указания времени, называется динамической, в противном случае информация – стати-

ческая.

Информацию можно зафиксировать с помощью средств измерения или наблюдения, а можно и вывести логическим путем. Например, если <температура тела больше 38 ОС> и <состояние горла – болит>, то <название болезни – ангина>. В данном случае мы сформулировали правило, которое позволяет на основании двух единиц информации получать третью. Это правило и подобные ему умозаключения называются знаниями.

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

7

2.КОНЦЕПТУАЛЬНОЕ МОДЕЛИРОВАНИЕ

1.4.Абстракция

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

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

1.4.1. Обобщение

Обобщение – это синтез абстрактного объекта из других, конкретных объектов, обладающих некоторым общим признаком. Получившийся в результате обобщения объект называется классом. Например, различные объекты на рис. 1 обобщаются в классы «кресло», «стул», «стол». Можно также заметить, что кресла, объединяясь со стульями, образуют класс «предметов для сидения», которые в свою очередь вместе со шкафами, столами и другими предметами образуют класс «мебель». Таким образом, можно сделать вывод, что обобщение – это многоуровневое явление, в котором справедливо такое понятие, как «уровень абстракции».

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

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

8

дается набор объектов и предлагается найти общий признак и выбрать

Рис. 3. Многоуровневое обобщение

объект, дополняющий этот набор. Например, в верхней части рис. 2

 

представлен набор объектов, а в нижней – варианты дополнения этого

 

набора. Каким будет первый ответ большинства людей? Правильно,

 

вариант «а» – велосипед, т.к. он продолжает ряд транспортных

 

средств. Однако, если подумать, то все перечисленные объекты сдела-

 

ны из металла, поэтому вариант «б» – шуруп также справедлив, т.к. он

 

тоже сделан из металла. Если проанализировать внимательно, то мож-

 

но понять, что все представленные в верхнем ряду объекты являются

 

сложными техническими системами, к числу которых принадлежит и

 

атомная станция, представленная в варианте «в». Таким образом, каж-

 

дый из предложенных вариантов ответа – правильный. Все зависит от

 

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

 

создатели многочисленных тестов, которыми современные чиновники

 

от образования любят проверять знания студентов.

 

 

Исходный ряд

 

 

 

 

 

 

 

Мебель

 

 

 

 

 

Мебель для

 

 

 

 

 

сидения

 

 

 

 

Стол

Стул

Кресло

а)

б)

в)

 

 

 

 

 

 

Варианты продолжения

 

 

 

 

Рис. 4.

Разные принципы обобщения

 

 

 

 

Обобщению могут подлежать не только предметы, но и отдельные

 

 

 

их свойства. Например, красный, синий, зеленый и др. образуют поня-

 

 

 

тие «цвет»; дерево, металл, бетон … – «материал»; Иванов, Петров,

 

 

 

Сидоров … – «фамилия»; мужской, женский – «пол».

 

 

 

 

1.4.2. Агрегация

 

 

 

 

 

Вторым способом построения абстракций является агрегация (от

 

 

 

лат. aggregatio – присоединение) – объединение элементов в одну сис-

 

 

 

тему. В отличие от обобщения, агрегируемые объекты могут не обла-

 

 

 

дать общим свойством. Важно другое. Агрегируемые объекты, соеди-

 

 

 

няясь и взаимодействуя друг с другом определенным способом, обра-

 

 

9

10

 

 

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

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

Рис. 5. Составные части агрегата

Итак, агрегация – это соединение объектов в единое целое, в результате чего возникает новое свойство. В теории систем такое явление называется «целостность». Так же как и обобщение, агрегация – многоуровневый процесс. Приглядимся к составным частям велосипеда. Практически каждая из них сама является агрегатом. Колесо состоит из обода, камеры, шины, спиц, оси и др.

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

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

11

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

Обычное Шипованное

 

 

 

 

 

 

 

Литое

Без спиц

Рама

 

………

 

 

 

 

 

Колесо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Является

 

 

Является

 

 

 

 

 

 

Является

 

 

 

 

 

 

 

частью

 

частью

 

 

частью

 

 

 

 

 

 

 

 

 

Является

 

Является

 

Велосипед

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Является

 

Является

Является

 

Детский

 

 

 

 

 

 

 

Ретро

Женский

Складной

Семейный

Рис. 6. Сочетание обобщения и агрегации

12

1.4.3. Отличие обобщения и агрегации

Процессы обобщения и агрегации легко различимы еще по одному признаку. При обобщении экземпляр с классом связывается словом «является». Например, детский велосипед является велосипедом, теплоход является транспортным средством, кресло является мебелью для сиденья. В английском варианте в качестве аналога слова «является» выступает «is a». Очень важное значение имеет неопределенный артикль, который указывает на обобщающее значение следующего за ним существительного. При агрегации элементы связаны с агрегатом словосочетанием «является частью». Например, рама является частью велосипеда, столешница является частью стола и т.д. Английским аналогом является словосочетание «is part of».

Итак, запомним основные правила (рис. 5). Обобщение – это объединение подобных экземпляров в класс. Экземпляр связан с классом словом «является». Класс наследует свойства экземпляров. Агрегация

– это соединение элементов в систему. Элементы связаны с системой словом «является частью». Система является носителем нового свойства. Обобщение и агрегация – многоуровневые и взаимодополняющие процессы.

 

Класс

Система (агрегат)

 

 

 

 

 

 

 

Является

Является

 

 

 

 

частью

(is-a)

 

 

(is-part-of)

 

 

 

 

 

Общий признак

Взаимодействие

Экземпляр

Элемент

а)

б)

Рис. 7. Процессы абстрагирования: а – обобщение, б – агрегация

1.4.4. Формальное представление абстракций

Обобщение и агрегация имеют также и формальное математиче-

13

ское представление, основанное на теории множеств. Рассмотрим сначала формальное представление обобщения.

Известно, что любое множество можно задать двумя способами: 1) перечислить все элементы этого множества, например:

{

,

,

, ,

,

};

2)определить правило принадлежности этому множеству (иначе говоря, некоторое определить свойство, которым непременно должен обладать каждый экземпляр множества), например «геометрическая фигура».

Другой пример: перечисление множества – {1, 2, 3, 4, 5, …}, правило принадлежности – «натуральное число».

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

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

Самый простой случай декартова произведения – это произведение двух множеств. Пусть даны два множества X и Y. Декартово (или прямое) произведение этих множеств есть такое множество X×Y, элементами которого являются упорядоченные пары <x, y> для всевозможных x X и y Y:

X×Y ={ x, y | x X, y Y}.

Например, декартово произведение двух рассмотренных выше множеств – геометрических фигур и натуральных чисел (для простоты сократим эти множества до трех-четырех элементов) выглядит так:

F×N ={

,3 ;

,4 ;

,5 ;

,3 ;

,4 ;

,5 ;

 

 

,3 ;

,4 ;

,5 ;

,3 ;

,4 ;

,5 },

где F={

, ,

, } – множество геометрических фигур, N={3, 4,

5} – множество натуральных чисел, В другом примере (его увидят лишь читатели электронной версии

данного пособия) перемножим

14

множество автомобилей A={

 

,

}

на множество цветов С={

,

}.

 

Результат можно представить как множество:

 

A×C={

,

;

,

;

 

,

;

,

,

а можно и гораздо проще:

 

 

 

 

;

;

;

.

Легко увидеть, что количество элементов декартова произведения равно произведению числа элементов перемножаемых множеств. В первом примере это 4×3=12, во втором – 2×2=4.

В общем случае понятие декартова произведения применимо к n множествам D1, D2, … Dn. Декартово произведение этих множеств:

D1×D2×…×Dn ={ d1i, d2 j, …, dnk | d1i D1, d2 j D2, dnk Dn}.

Элемент декартова произведения d1i, d2 j, …, dnk называется

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

Введем теперь понятие отношения. Формально, отношение – это подмножество декартова произведения:

15

R D1×D2×…×Dn.

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

R (F=N) = {

,3 ;

,4 ;

,4 },

R (F>N) ={

,3 ;

,3 ;

,3 ; ,4 ; ,5 },

где F=N означает, что число углов фигуры равно натуральному числу, F>N – число углов фигуры больше натурального числа.

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

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

Таблица 1. Представление отношения в виде таблицы

Геометрическая фигура

Натуральное число

 

3

 

 

 

4

 

 

 

4

 

 

Абстракции играют огромную роль не только в структурировании

16

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

1.5.Структурные элементы данных

1.5.1. Атрибут, домен

Обычно база данных содержит информацию о различных объектах предметной области. Например, в предметной области «Университет» традиционно присутствуют такие объекты, как СТУДЕНТ, ПРЕПОДАВАТЕЛЬ, ГРУППА, ФАКУЛЬТЕТ и др. Каждый объект обладает набором свойств. Например, свойствами объекта ГРУППА являются Шифр группы, Специальность и Год набора. Свойство может принимать различные значения, например Шифр группы может быть А-06, ИНФ-08 и др. 2 Описывая это, мы затронули два очень важных понятия в структурировании данных – атрибут и домен.

Атрибут (от лат. attributio – приписывание) – это свойство некоторого объекта предметной области, о котором необходимо хранить информацию в базе данных. Например, свойствами или атрибутами объекта АВТОМОБИЛЬ являются Марка, Цвет, Государственный номер и

др. Каждое свойство может принимать определенные значения. Например, значениями свойства (атрибута) Цвет являются синий, красный, желтый и т.д. Множество допустимых значений атрибута называется доменом. Говоря математическим языком, домен есть область определения атрибута.

С точки зрения теории множеств, атрибут есть имя, принимающее значения на некотором множестве возможных значений. Иначе говоря, атрибут – это название, т.е. интенсионал множества, а домен – его расширение. Следовательно, атрибут является обобщением своего домена: Цвет = {синий, красный, желтый}. Этот вывод имеет очень важный смысл. Являясь обобщением и интенсионалом множества значений, атрибут обязан передавать семантику этих значений и отражать

2Здесь и далее названия сущностей будут выделяться шрифтом и регистром, атрибуты – только шрифтом, а значения атрибутов (данные) – курсивом, связи – полужирным начертанием.

17

тот смысл, который связывает их воедино. Формулируя название атрибута, разработчик базы данных обязан задумываться о том, насколько четко и адекватно это название передает смысл описываемого свойства объекта. Именно поэтому следует избегать таких жаргонных названий атрибутов, как ФИО, ID и т.п.

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

ный атрибут, например Название спектакля, Название театра, Номер поезда, Номер билета.

1.5.2.Типы данных

Сточки зрения хранения данных и языков программирования, домен можно условно сопоставить с понятием типа данных. Современные СУБД предоставляют разработчику широкую палитру типов данных, которая представлена в табл. 2.

Таблица 2. Основные типы данных

Тип данных 3

Длина

Комментарий

Числовые

 

 

Целое (integer, smallint)

2 Б

Целые числа

от –32 768 до 32 767

 

 

Короткое целое (байт, short integer,

1 Б

Целые числа от 0 до 255

tinyint)

 

 

Длинное целое (long integer, int)

4 Б

Целые от –2 147 483 648

до 2 147 483 647

 

 

Вещественное с фиксированной точ-

2-16 Б

Целые и дробные числа

кой (действительное, number, decimal)

от –1038 до 1038

Вещественное с плавающей точкой

4 Б

Действительные числа

(одинарное с плавающей точкой,

с Е от –38 до 38

float, real, single)

 

 

 

Вещественное двойной точности с

8 Б

Действительные числа

плавающей точкой (двойное с пла-

с Е от –308 до 308

вающей точкой, long float, double)

 

 

 

3В скобках перечислены возможные названия этого типа данных, принятые в различных СУБД и средах проектирования

18

Символьные

Строка символов фиксированной

до

 

длины (текстовый, characters, char-

 

acter string, char, string)

255 Б

 

 

 

 

Строка символов переменной дли-

до

Задается максимальная

ны (variable characters, varchar, text)

64 КБ

длина

Строка символов неопределенной

до 1-

Максимальная длина

длины (memo, text, long characters,

long var characters)

2

ГБ

ограничивается СУБД

 

 

 

Двоичные

 

 

 

Логический (boolean, bit)

1

бит

да/нет, истина/ложь,

 

 

 

вкл/выкл, 1/0

Байт (byte)

1

Б

256 возможных кодов

Двоичное фиксированной длины

до

 

(binary)

8

КБ

 

Двоичное переменной длины

до 1-

Максимальная длина

(long binary, bitmap, image)

2

ГБ

задается или ограничи-

 

 

 

вается СУБД

Прочие

 

 

 

OLE-ссылка

до

Ссылка на внедренный

1

ГБ

или связанный объект

 

Гиперссылка

до

URL-ссылка и, возможно,

2

КБ

текст, подсказки и т.п.

 

Счетчик (counter, serial)

4

Б

Целые числа

от 1 до 2 147 483 647

 

 

 

Денежный (money, currency)

4-8 Б

Хранится вещественное с

 

 

 

фиксированной точкой

 

 

 

 

Процентный

4

Б

Хранится вещественное с

фиксированной точкой

 

 

 

 

 

 

Экспоненциальный

4-8 Б

Числа выводятся в экс-

 

 

 

поненциальной нотации.

Дата и время (date, time)

8

Б

 

Уникальный глобальный идентифи-

16 Б

 

катор (GUID)

 

 

 

Вто время, как большинство типов данных совпадает с принятыми

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

19

Основной особенностью таких типов является то, что значение, которое видит пользователь, не совпадает с реальным, физически хранимым. К таким типам относятся:

денежный, позволяющий представлять хранящееся вещественное число с фиксированной точкой в виде денежной суммы с разделителями разрядов и символом валюты (например, хранится 1835,5, а отображается 1.835,50 €);

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

дата и время, преобразующий хранящееся число в различные форматы даты и времени (например, 15 ноября 1976).

Наряду с этим, в ряде СУБД присутствуют специальные типы данных, исполняющие служебную роль в базе данных:

счетчик – автоматически приращиваемое целое число, используемый обычно для создания ключа отношения;

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

OLE-ссылка – поле, позволяющее связать или внедрить объект, созданный другой программой, например: битовый рисунок, звук, видеоролик и др.

Рассмотрим теперь на примере, как соотносятся понятия домена и типа данных. Формально говоря, домен – это логическое понятие, а тип данных – физическое. Например, разработчик может указать, что атрибут Рост объекта СОТРУДНИК определен на домене целых чисел (иначе говоря, на типе данных integer). В этом случае домен совпал с одним из стандартных типов данных, принятых в СУБД и можно утверждать, что тип данных – это домен. Однако, абсолютный рекорд роста составляет 272 см, следовательно домен разумно ограничить этой цифрой сверху и каким-то положительным значением, например, 70 см снизу. В этом случае домен – это не просто тип данных, но и ограничения, накладываемые на значения. Создав такой домен, мы можем присвоить ему некоторое имя, например – Integer_70-272, и затем использовать для определения самых различных атрибутов.

В наложении ограничений можно пойти дальше. Например, указав тип данных char(7), мы можем просто перечислить все допустимые значения этой строки символов: мужской, женский. Очевидно, что таким образом мы задали домен для атрибута Пол. Такие домены называются перечисляемыми доменами или доменами, определенными пользователем.

20