Получите бесплатно 4 курса для лёгкого старта работы в IT
Получить курсы бесплатно
ГлавнаяБлогАтрибуты данных: разбираемся в деталях
Атрибуты данных
6 835
Время чтения: 15 минут

Атрибуты данных: разбираемся в деталях

6 835
Время чтения: 15 минут
Сохранить статью:
Сохранить статью:

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

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

В статье рассказывается:

  1. Понятие и место атрибута
  2. Примеры атрибутов
  3. Виды атрибутов
  4. Методы исполнения атрибутов
  5. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.
    Бесплатно от Geekbrains

Понятие и место атрибута

При описании процесса организации систем управления базами данных (СУБД) с древовидной структурой используются такие понятия, как элемент, агрегат, запись, групповое отношение, БД.

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

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

Понятие и место атрибута
Понятие и место атрибута

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

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

Примеры атрибутов

Приведем пример, в котором минимальная единица структуры БД получила атрибуты: Name, Code, Subcategory, StandardCost, ListPrice и FilePhoto. Атрибуты выступают описанием полей БД. При этом любой отдельный элемент представляется отдельной записью значений атрибута.

Примеры атрибутов
Примеры атрибутов

В примере объект БД Product включает:

  • атрибуты в свободном виде Name, Code, StandardCost и ListPrice;
  • атрибут с учетом подмножества Subcategory;
  • метаданные описания файла FilePhoto.
Узнай, какие ИТ - профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!

Скачивайте и используйте уже сегодня:

Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

pdf иконка

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

pdf 3,7mb
doc 1,7mb
Уже скачали 27986 pdf иконка

Объект Subcategory применяется как минимальная единица записи на основании подмножества сущности Product. В свою очередь объект Category применяется как минимальная единица записи на основании подмножества сущности Subcategory. Аналогично с объектом Product, сущности Category и Subcategory безусловно включают атрибуты Name и Code.

Виды атрибутов

Строковые поля

Чтобы рассмотреть атрибуты базы данных составим табличный документ

StrDesc
Id INTEGER Первичный ключ
TypeId INTEGER REFERENCES ObjType(Id) Указатель типа объекта базы данных
Code CHAR(10) Краткое название параметра
ItemName CHAR(30) Полное название параметра (используется только в отношении интерфейса)

При БД все объекты получают свой набор свойств, присущих определенному типу. Так, объект типа «EMPLOYEE» включает следующие свойства строк:

«FAMILY» — фамилия

«FIRSTNAME» — имя

«LASTNAME» — отчество

«ADDRESS» — адрес

«EMAIL» — e-mail

Строку Objects.ItemName для работников заполняет сервер программы в виде комбинация атрибутов FAMILY + FIRSTNAME + LASTNAME.

Виды атрибутов
Виды атрибутов

Хранение атрибутов осуществляется в табличной форме:

Strings
Id INTEGER Первичный ключ
TypeId INTEGER REFERENCES StrDesc(Id) Ссылка на тип параметра
ObjectId INTEGER REFERENCES Objects(Id) Ссылка на объект
Value VARCHAR(255) Значение параметра

Для вывода списка работников, у которых есть электронная почта может вводиться запрос:

SELECT O.ItemName, S.Value

FROM Objects O

INNER JOIN ObjType OT ON O.TypeId = OT.Id

INNER JOIN Strings S ON O.Id = S.ObjectId

INNER JOIN StrDesc SD ON S.TypeId = SD.Id

WHERE OT.Code = ‘EMPLOYEE’

AND SD.TypeId = OT.Id

AND SD.Code = ‘EMAIL’

Чтобы вывести список работников с данными e-mail (если такие присутствуют), необходимо изменить запрос:

SELECT O.ItemName, S.Value

FROM Objects O

INNER JOIN ObjType OT ON O.TypeId = OT.Id

LEFT JOIN Strings S ON O.Id = S.ObjectId

LEFT JOIN StrDesc SD ON S.TypeId = SD.Id

WHERE OT.Code = ‘EMPLOYEE’

AND SD.TypeId = OT.Id

AND SD.Code = ‘EMAIL’

Дарим скидку от 60%
на обучение «Аналитик больших данных» до 05 мая
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей
Забронировать скидку

При создании для разных типов объектов атрибутов с идентичными данными в поле Code можно получить довольно любопытный результат. Допустим, объекты EMPLOYEE (работник) и FIRM (компания) имеют одинаковые атрибуты строк: ‘EMAIL’. В этом случае по одному запросу можно вывести список адресов по всем доступным в базе данных почтовым реквизитам.

Виды атрибутов
Виды атрибутов

SELECT O.ItemName, OT.ItemName, S.Value

FROM Objects O

INNER JOIN ObjType OT ON O.TypeId = OT.Id

INNER JOIN Strings S ON O.Id = S.ObjectId

INNER JOIN StrDesc SD ON S.TypeId = SD.Id

WHERE SD.Code = ‘EMAIL’

ORDER BY OT.ItemName, O.ItemName

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

Числовые атрибуты

Чтобы упростить ситуацию предположим, что хранение всех числовых атрибутов организовано с использованием одного типа данных (к примеру, DECIMAL(20,4). Такой подход удобен при использовании серверов типа MONE.

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

PropDesc
Id INTEGER Первичный ключ
TypeId INTEGER REFERENCES ObjType(Id) Ссылка на класс объекта
Code CHAR(10) Краткое наименование параметра
ItemName CHAR(30) Полное название параметра (используется только в отношении интерфейса)

А сами атрибуты — в таблице:

Properties
Id INTEGER Первичный ключ
TypeId INTEGER REFERENCES PropDesc(Id) Ссылка на тип параметра
ObjectId INTEGER REFERENCES Objects(Id) Ссылка на объект
Value DECIMAL(20,4) Значение параметра. Тип данных MONEY удобно хранить на поддерживающих его серверах (аналоги Currency в Delphi).

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

Числовые атрибуты
Числовые атрибуты

Хронологические атрибуты

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

Status
Id INTEGER Первичный ключ
TypeId INTEGER REFERENCES ObjType(Id) Ссылка на тип объекта
Code CHAR(10) Краткое название состояния
ItemName CHAR(30) Полное название параметра (используется только в отношении интерфейса)

Например, для человека допустимые состояния могут включать:

  • «WASBORN» — Дата рождения
  • «EMPLOYEED» — Принят на должность
  • «DISMISS» — Уволен
Только до 6.05
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:
ТОП-100 площадок для поиска работы от GeekBrains
20 профессий 2023 года, с доходом от 150 000 рублей
Чек-лист «Как успешно пройти собеседование»
Чтобы получить файл, укажите e-mail:
Введите e-mail, чтобы получить доступ к документам
Подтвердите, что вы не робот,
указав номер телефона:
Введите телефон, чтобы получить доступ к документам
Уже скачали 52300

В этом случае можно обеспечить принцип, при котором каждое состояние объекта будет появляться неоднократно. К примеру, работник принят на должность, уволен и снова принят.

Хронология изменений сохраняется в табличной форме:

History
Id INTEGER Первичный ключ
StatusId INTEGER REFERENCES Status(Id) Ссылка на тип состояния
ObjectId INTEGER REFERENCES Objects(Id) Ссылка на объект
ItemDate DATETIME Дата изменения состояния

В процессе изменения состояний в таблице History появляется запись, отсылающая к конкретному состоянию и времени его появления. Так при приеме на работу в истории появляется запись с датой и ссылкой на состояние EMPLOYEED. После увольнения появляется ссылка на состояние DISMISS, а при повторном приеме на должность — EMPLOYEED. Для получения перечня работников, которые числятся на определенную дату может использоваться следующий вид запросов:

SELECT O.ItemName, H.ItemDate AS Employeed

FROM Objects O

INNER JOIN ObjType OT ON O.TypeId = OT.Id

INNER JOIN History H ON H.ObjectId = O.Id

INNER JOIN Status S ON H.StatusId = S.Id

WHERE OT.Code = ‘EMPLOYEE’

AND S.Code = ‘EMPLOYEED’

AND H.ItemDate = (SELECT MAX(H1.ItemDate)

FROM History H1

INNER JOIN Status S1 ON H1.StatusId = S1.Id

WHERE H1.ObjectId = O.Id

AND H.ItemDate <= :DateParam

AND S1.Code IN (‘EMPLOYEED’, ‘DISMISS’))

Атрибуты с ограниченным числом значений

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

EnumDesc
Id INTEGER Первичный ключ
TypeId INTEGER REFERENCES ObjType(Id) Ссылка на тип объекта
Code CHAR(10) Краткое наименование состояния
ItemName CHAR(30) Полное название параметра (используется только в отношении интерфейса)

Вторая — определяет возможные значения для перечислимого типа:

EnumValues
Id INTEGER Первичный ключ
DescId INTEGER REFERENCES EnumDesc(Id) Ссылка на тип перечисления
Code CHAR(10) Краткое название значения
ItemName CHAR(30) Полное название параметра (используется только в отношении интерфейса)

Третья — непосредственно хранит значения, связанные с объектом:

Enums
Id INTEGER Первичный ключ
ValueId INTEGER REFERENCES EnumValues(Id) Ссылка на значение
ObjectId INTEGER REFERENCES Objects(Id) Ссылка на объект

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

TypeId Code ItemName
Ссылка на ObjType для типа «FIRM» OWNERFORM Форма собственности

И в EnumValues:

DescId Code ItemName
Ссылка на EnumDesc для ИЧП Индивидуальное частное предприятие
типа «OWNERFORM» ООО Общество с ограниченной ответственностью

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

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

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

Методы исполнения атрибутов

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

Вызов способа (метода) исполнения внешним воздействием на состояние данных. Различают 4 таких метода: Create, Set, Get и Update.

Методы исполнения атрибутов
Методы исполнения атрибутов

Первый метод из этого списка соответствует мета-классу и применяется для любого объекта класса. Его параметром выступает описатель IDC целевого класса. С помощью способа Create объекты создаются, как сопутствующие атрибутам указанного класса элементы. При этом класс регистрируется в табличной форме аллокации DAT за вслед за свободным описателем IDO.

Методы Set, Get и Update относятся мета-атрибутам. Они используются для работы со значениями объектов данных. Метод атрибута Set присваивает значения, Get обеспечивает его выборку, а Update инициирует переформирование производного значения, которое хранится в БД.

Идентификация целевого значения в методах атрибута обеспечивается описателем IDO. При этом, сам целевой объект доступен только для атрибута класса (путь к этому атрибуту указан в описателях IDC+IDA модели данных).

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

Поскольку при выполнении методов: Create, Set или Update меняется состояние значений, то вызов данных может происходить только в рамках сессии транзакции. При вызове любого из указанных методов происходит атомарное внешнее воздействие на БД. Такой процесс несложно формализовать в вид транзакции и сохранить в журнале.

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

Оцените статью
Рейтинг: 3
( голосов 2 )
Поделиться статьей
Добавить комментарий

Сортировать:
По дате публикации
По рейтингу
До конца акции осталось
0 дней 00:00:00
Дарим скидку 64% на обучение «Разработчик»
  • Получите новую профессию с гарантией трудоустройства
  • Начните учиться бесплатно, 3 месяца обучения в подарок
Забронировать скидку на обучение
Забрать подарок

Получите подробную стратегию для новичков на 2023 год, как с нуля выйти на доход 200 000 ₽ за 7 месяцев

Подарки от Geekbrains из закрытой базы:
Осталось 17 мест

Поздравляем!
Вы выиграли 4 курса по IT-профессиям.
Дождитесь звонка нашего менеджера для уточнения деталей

Иван Степанин
Иван Степанин печатает ...