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

Иерархическая модель данных

Иерархическая модель данных — представление базы данных в виде древовидной (иерархической) структуры, состоящей из объектов (данных) различных уровней.

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

Содержание

Примеры

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

В этой модели запрос, направленный вниз по иерархии, прост (например: какие заказы принадлежат этому покупателю); однако запрос, направленный вверх по иерархии, более сложен (например, какой покупатель поместил этот заказ). Также, трудно представить не-иерархические данные при использовании этой модели.

Иерархической базой данных является файловая система, состоящая из корневого каталога, в котором имеется иерархия подкаталогов и файлов.

Структурная часть иерархической модели

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

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

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

Управляющая часть иерархической модели

В рамках иерархической модели выделяют языковые средства описания данных (ЯОД) и средства манипулирования данными (ЯМД). Каждая физическая база описывается набором операторов, обусловливающих как её логическую структуру, так и структуру хранения БД. При этом способ доступа устанавливает способ организации взаимосвязи физических записей.

Определены следующие способы доступа:

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

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

Примеры типичных операторов поиска данных

Примеры типичных операторов поиска данных с возможностью модификации:

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

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

Известные иерархические СУБД

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

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

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

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

Источник

Информационные системы с базами данных

Обзор основных моделей данных

Иерархическая модель

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

Между исходным узлом и порожденными узлами по условию модели существует связь «один-ко-многим» (или «многие-к-одному»).

Иерархия должна удовлетворять следующим условиям:

К основным недостаткам иерархической модели можно отнести:

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

Предположим, что каждый преподаватель может читать несколько дисциплин, а каждый студент также может изучать несколько дисциплин.

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

При такой организации данных достаточно легко получать ответы на запросы типа «выдать информацию о сдаче экзаменов студентами по различным дисциплинам». Однако при ответе на вопрос, какие преподаватели принимают экзамены по ВТ, необходимо просмотреть все записи порожденных узлов для каждого корневого узла. Для этого вопроса более подходит модель, в которой корневым узлом является преподаватель (Табельный номер преподавателя, ФИО, ученое звание, кафедра), а порожденным является студент (номер студента, ФИО, номер группы, дисциплина, дата сдачи, оценка, зачет).

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

Основной единицей обработки здесь является запись, к которой применимы операции ЗАПОМНИТЬ, МОДИФИЦИРОВАТЬ, УДАЛИТЬ, ИЗВЛЕЧЬ, НАЙТИ. В операциях создания и уничтожения связей для этой модели нет необходимости потому, что все связи предопределены заранее древовидной структурой отношений. Операция «найти» сводится к одной из трех процедур обхода дерева.

Источник

IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов.

Иерархическая база данных. Иерархическая модель данных

Здравствуйте, уважаемые посетители моего скромного блога для начинающих вебразработчиков и web мастеров ZametkiNaPolyah.ru. Продолжаем рубрику Заметки о MySQL, в которой уже были публикации: Нормальные формы и транзитивная зависимость, избыточность данных в базе данных, типы и виды баз данных, настройка MySQL сервера и файл my.ini, MySQL сервер, установка и настройка, Архитектура СУБД и архитектура баз данных, Сетевая база данных, сетевая модель данных. Я продолжаю рассматривать различные модели данных, и сегодня мы поговорим про иерархическую модель данных или иначе – иерархическую базу данных.

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

Иерархическая модель данных

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

иерархическая модель данных организует данные в виде чего. иерархическая модель данных организует данные в виде чего фото. картинка иерархическая модель данных организует данные в виде чего. смотреть фото иерархическая модель данных организует данные в виде чего. смотреть картинку иерархическая модель данных организует данные в виде чего.

Иерархическая база данных. Иерархическая модель данных.

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

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

Точно такие же особенности присуще иерархической СУБД, то есть базы данных, имеющие иерархическую структуру, умеют очень быстро находить и выбирать информацию и отдавать ее пользователю. Но структура иерархической модели данных не позволяет столь же быстро перебирать информацию. Ну, это видно из рисунка, представленного выше. Допустим, что нам необходимо найти все записи, содержащие слово «сотрудник». Как будет поступать иерархическая СУБД в этом случае? А поступать она будет следующим образом: свой поиск она начнет с корневого элемента иерархической модели данных, проверив его, она начнет проверять его связи, если связей будет несколько, то она пойдет проверять в крайний левый дочерний элемент, расположенный на уровень ниже.

Затем иерархическая СУБД проверит содержимое этого элемента и его связи, если связей опять будет несколько, то она отправится опять-таки в крайний левый дочерний элемент, чтобы проверить его содержимое, проверив его содержимое она увидит, что у этого узла нет дочерних элементов и вернется в родительский узел этого узла, чтобы проверить, есть ли у него еще дочерние элементы. И так постепенно, узел за узлом, спуская и поднимаясь по иерархии узлов СУБД переберет все узлы и выдаст нам все записи, в которых есть слово «сотрудник». Ну, думаю, что с иерархической моделью данных мы более-менее разобрались (если не разобрались, то пишите в комментарии), можно приступить к рассмотрению структуры иерархической базы данных.

Структура иерархической базы данных

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

иерархическая модель данных организует данные в виде чего. иерархическая модель данных организует данные в виде чего фото. картинка иерархическая модель данных организует данные в виде чего. смотреть фото иерархическая модель данных организует данные в виде чего. смотреть картинку иерархическая модель данных организует данные в виде чего.

Иерархическая база данных. Иерархическая модель данных.

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

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

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

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

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

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

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

Управление иерархическими данными

У иерархической модели данных существует два средства управления данными: языковые средства описания данных (ЯОД) и языковые средства манипулирования данными (ЯМД). Физическая структура иерархической базы данных описывает: логическую структуру иерархической модели данных и саму структуру хранения базы данных.

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

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

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

Примеры типичных операторов поиска данных с возможностью модификации:

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

Источник

Иерархическая модель данных что собой представляет?

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

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

Классификация СУБД с точки зрения архитектуры

Известно, что они бывают:

иерархическая модель данных организует данные в виде чего. иерархическая модель данных организует данные в виде чего фото. картинка иерархическая модель данных организует данные в виде чего. смотреть фото иерархическая модель данных организует данные в виде чего. смотреть картинку иерархическая модель данных организует данные в виде чего.

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

иерархическая модель данных организует данные в виде чего. иерархическая модель данных организует данные в виде чего фото. картинка иерархическая модель данных организует данные в виде чего. смотреть фото иерархическая модель данных организует данные в виде чего. смотреть картинку иерархическая модель данных организует данные в виде чего.

Основные определения рассматриваемой сферы

Для удобства они сведены в таблицу ниже.

Основной термин

Трактовка

СУБД – система управления базами данных

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

СУБЗ – система управления базами знаний

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

Электронные хранилища определенной информации, доступ к ним производится посредством 1-го (нескольких) компьютеров.

Хранилища знаний, которые представлены в специальном форматизированном виде.

Иерархическая модель данных: история создания, пример

Далее необходимо уделить внимание графическому представлению данной модели.

иерархическая модель данных организует данные в виде чего. иерархическая модель данных организует данные в виде чего фото. картинка иерархическая модель данных организует данные в виде чего. смотреть фото иерархическая модель данных организует данные в виде чего. смотреть картинку иерархическая модель данных организует данные в виде чего.

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

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

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

иерархическая модель данных организует данные в виде чего. иерархическая модель данных организует данные в виде чего фото. картинка иерархическая модель данных организует данные в виде чего. смотреть фото иерархическая модель данных организует данные в виде чего. смотреть картинку иерархическая модель данных организует данные в виде чего.

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

Сюда можно отнести следующее:

Теперь для сравнения стоит рассмотреть все остальные модели.

Сетевая модель

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

Сети чаще всего представляются математической структурой, именуемой как направляемый граф. Он оснащен простой структурой: состоит из узлов либо точек, которые соединены ребрами либо стрелками. В рамках контекста моделей данных точки могут быть представлены в виде типов записей данных, вышеупомянутые ребра – взаимосвязей «один-ко-многим», «один-к-одному». Графическая структура позволяет произвести простые представления отношений иерархии.

иерархическая модель данных организует данные в виде чего. иерархическая модель данных организует данные в виде чего фото. картинка иерархическая модель данных организует данные в виде чего. смотреть фото иерархическая модель данных организует данные в виде чего. смотреть картинку иерархическая модель данных организует данные в виде чего.

Реляционная модель

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

Известны два подхода к ее проектированию:

иерархическая модель данных организует данные в виде чего. иерархическая модель данных организует данные в виде чего фото. картинка иерархическая модель данных организует данные в виде чего. смотреть фото иерархическая модель данных организует данные в виде чего. смотреть картинку иерархическая модель данных организует данные в виде чего.

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

иерархическая модель данных организует данные в виде чего. иерархическая модель данных организует данные в виде чего фото. картинка иерархическая модель данных организует данные в виде чего. смотреть фото иерархическая модель данных организует данные в виде чего. смотреть картинку иерархическая модель данных организует данные в виде чего.

Недостатки и достоинства иерархической модели

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

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

Управление иерархическими данными

Иерархическая модель базы данных имеет 2 средства управления ими:

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

Способ доступа может быть:

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

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

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

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

Заключение

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

Источник

Иерархическая модель базы данных требует, чтобы каждая дочерняя запись имела только одного родителя, тогда как каждая родительская запись может иметь одну или несколько дочерних записей. Чтобы получить данные из иерархической базы данных, необходимо пройти по всему дереву, начиная с корневого узла. Эта модель признана первой моделью базы данных, созданной IBM в 1960-х годах.

СОДЕРЖАНИЕ

История

Примеры иерархических данных, представленных в виде реляционных таблиц

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

employee стол

EmpNoИмяФамилияНомер отдела
100АльмухтарХан10-л
101ГауравСони10-л
102СиддхартхаСони20-Б
103СиддхантСони20-Б
computer стол

Серийный номерТипПользователь EmpNo
3009734-4Компьютер100
3-23-283742Монитор100
2-22-723423Монитор100
232342Принтер100

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

Рассмотрим следующую структуру:

EmpNoОбозначениеОтчеты
10Директор
20Старший менеджер10
30Машинистка20
40Программист20

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *