Кубанский государственный университет
Опубликован: 24.12.2013 | Доступ: свободный | Студентов: 681 / 8 | Длительность: 24:28:00
Лекция 1:

Введение в базы данных

Лекция 1: 1234567 || Лекция 2 >

1.1.3 Записи, типы данных, наборы записей

Данные хранятся обычно в виде записей. Пример простой записи:

(10, 'ACCOUNTING', 'NEW YORK').

Заметим, что для работы с ней необходимо разобраться с семантикой, то есть с системой смыслов, связанных с этой записью. Это запись чего? Что такое "ACCOUNTING" Может быть название книги об учёте? A "NEW YORK" —это место её издания? А что тогда обозначает число 10? В действительности имелось в виду, что приведенная запись входит в набор записей с именем "ОТДЕЛЫ" (рисунок 1.1). Первое поле записи —номер отдела, второе поле — это название отдела, а третье обозначает город, в котором отдел находится.

Простая запись иерархия глубины 1

Рис. 1.1. Простая запись иерархия глубины 1

Уточним термины:

  1. Записью в базах данных называют минимальную уникально идентифицируемую единицу независимого хранения данных, образованную иерархией полей. Говоря более просто, запись состоит из набора связанных полей, который можно сохранять, изменять и удалять как единое целое.
  2. Схема записи — это описание внутренней структуры записи.
  3. Поле записи — именованный элемент данных, являющийся частью структуры записи базы данных или файла данных. Поле может состоять из других полей. Как правило, поле записи характеризует атрибут (свойство) объекта, описываемого записью.
  4. Обычно, но не всегда, поля типизированы. Существуют базы, в которых все данные представляются в виде текстовых записей.
  5. Значения полей называются элементами данных.
  6. Ключевыми называют поля записи, задание которых позволит однозначно выбрать запись. Такой набор полей называют первичным ключом.

В примере, приведённом выше, поле "номер отдела" — ключ. Если вам кажется, что ключ можно было выбрать и по-другому, то вы правы.

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

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

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

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

Почему мы говорим, что любая запись образуется иерархией полей? Даже простая запись, приведенная выше, представляется деревом глубины 1 (рисунок 1.1). Для записей со сложной структурой это тем более справедливо. В качестве примера такой структуры рассмотрим запись "сотрудник", с составным полем "адрес":

сотрудник(1101, Пирогов Олег Николаевич, лаборант, адрес(999000, НьюМосква, Длинная, 140, 5), 4000)

Дерево схемы этой записи изображено на рисунке 1.2.

 Запись, представимая иерархией уровня 2

Рис. 1.2. Запись, представимая иерархией уровня 2

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

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

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

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

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

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

  • простые типы данных;
  • структурированные типы данных;
  • ссылочные типы данных.

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

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

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

Интервальные типы выделены из-за двух своих особенностей. Само название "интервальный" дано потому, что операции вроде разности дают результат, выводящий за рамки базисного типа. Так, разность между двумя датами, например, "30 декабря" и "29 декабря", есть один день. Это не дата, а число. Вторая особенность в том, что некоторые операции над данными интервальных типов смысла не имеют. Что означала бы сумма тех же дат, 30 и 29 декабря?

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

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

Не повезло в базах логическому типу. Очень часто он отсутствует. Поэтому приходится представлять его, например, числовым типом со значениями 1 как TRUE и 0 как FALSE.

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

Ссылочные типы данных используются в объектных базах для определения ссылочных атрибутов, представляемых так называемыми объектными ссылками. Подобными конструкциями мы займёмся при изучении объектных моделей данных в "Объектные модели данных" .

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

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

Пример: Домен вычислимого поля "возраст (человека)" характеризуется условием (возраст>0 и возраст<120). На нём с помощью условия возраст<7 можно определить домен "возраст воспитанника детского сада".

Термин "вычислимое поле" означает, что данные не хранятся в базе, а вычисляются на основе данных хранимых полей. Возраст отнесён к этому виду полей именно потому, что он имеет привычку постоянно меняться.

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

Пример структуры набора записей приведен на рисунке 1.3. Цифра после имени типа, например Текст(20), означает допустимое число символов.

 Структура набора записей

Рис. 1.3. Структура набора записей

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

Лекция 1: 1234567 || Лекция 2 >