Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Паттерны Объектно-Реляционного структурирования Identity Field, Foreign Key Mapping, Association Table Mapping и др. кратко

Лекция



Привет, Вы узнаете о том , что такое паттерны, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое паттерны, объектно-реляционного структурирования, identity field, foreign key, mapping , association table mapping , настоятельно рекомендую прочитать все из категории Проектирование веб сайта или программного обеспечения.

  • Identity Field (Поле первичного ключа)
  • Foreign Key Mapping (Разметка внешних ключей)
  • Association Table Mapping (Разметка таблиц связей)
  • Dependent Mapping (Управление распределением подчиненных сущностей)
  • Embedded Value (Объединенное свойство)
  • Serialized LOB (Сериализованный LOB)
  • Single Table Inheritance (Наследование с единой таблицей)
  • Class Table Inheritance (Наследование с таблицами классов)
  • Concrete Table Inheritance (Наследование с таблицами конечных классов)
  • Inherritance Mappers (Наследуемые распределители)

Identity Field (Поле первичного ключа)

Паттерны Объектно-Реляционного структурирования Identity Field, Foreign Key Mapping, Association Table Mapping и др.

Паттерн проектирования Identity Field

Описание Identity Field

Хранит первичный ключ из БД в объекте, чтобы обеспечивать соответствие между объектом и строкой в БД.

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

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

Foreign Key Mapping (Разметка внешних ключей)

Паттерны Объектно-Реляционного структурирования Identity Field, Foreign Key Mapping, Association Table Mapping и др.

Паттерн проектирования Foreign Key Mapping

Описание Foreign Key Mapping

Представляет отношения по внешним ключам между таблицами в виде отношений между объектами

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

Разметка внешних ключей сводит ссылку на объект к внешнему ключу в БД.

Association Table Mapping (Разметка таблиц связей)

Паттерны Объектно-Реляционного структурирования Identity Field, Foreign Key Mapping, Association Table Mapping и др.

Паттерн проектирования Association Table Mapping

Описание Association Table Mapping

Сохраняет соответствие в виде таблицы с внешними ключами к таблицам, которые объединены этим соответствием.

Объекты с легкостью могут управлять наборами из нескольких значений при использовании коллекций в качестве собственных свойств. Об этом говорит сайт https://intellect.icu . Реляционные базы данных не предоставляют такой возможности и ограничиваются полями с одним значением. При разметке соответствия "один ко многим", можно использовать паттерн Foreign Key Mapping (Разметка внешних ключей), используя внешний ключ для однозначного соответствия. Но отношения "многие ко многим" не могут обеспечить этого, потому что нет однозначной сущности на которую ссылался бы внешний ключ.

Решением здесь является классическое разрешение, используемое в реляционных БД годами: создание дополнительной таблицы, для хранения множественных связей. Тогда использование Association Table Mapping позволит разметить многозначные поля через связующую таблицу

Dependent Mapping (Управление распределением подчиненных сущностей)

Паттерны Объектно-Реляционного структурирования Identity Field, Foreign Key Mapping, Association Table Mapping и др.

Паттерн проектирования Dependent Mapping

Описание Dependent Mapping

Один класс предоставляет mapping (распределение) и для основного класса и для зависимого.

Некоторые объекты существуют только в контексте других объектов. Песни из альбома могут быть загружены или сохранены в любой момент, когда альбом загружен или сохранен. Если они не используются другими таблицами в БД, то можно упростить процесс маппинга, переложив маппинг песен на объект-маппер альбомов. Такое поведение называется Dependent Mapping(Управление распределением подчиненных сущностей)

Embedded Value (Объединенное свойство)

Паттерны Объектно-Реляционного структурирования Identity Field, Foreign Key Mapping, Association Table Mapping и др.

Паттерн проектирования Embedded Value

Описание Embedded Value

Записывает объект в несколько полей таблицы другого объекта.

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

Паттерн Embedded Value (Объединенное свойство) распределяет значения полей объекта в поля таблицы объекта-владельца.

На схеме представлен объект "Место работы" (Employment) со ссылками на объекты диапазона дат и денег. В таблице, хранящей объект "место работы", объекты дат и денег раскладываются на отдельные поля, но не хранятся в отдельных таблицах.

Serialized LOB (Сериализованный LOB)

Паттерны Объектно-Реляционного структурирования Identity Field, Foreign Key Mapping, Association Table Mapping и др.

Паттерн проектирования Serialized LOB

Описание Serialized LOB

Хранение графа связей объектов в БД посредством сериализации их в один large object (LOB).

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

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

Объекты не нуждаются в представлении в виде связанных записей в таблице. Есть другая форма представления - сериализация, когда весь граф объектов записывается в один LOB (large object).

Single Table Inheritance (Наследование с единой таблицей)

Паттерны Объектно-Реляционного структурирования Identity Field, Foreign Key Mapping, Association Table Mapping и др.

Паттерн проектирования Single Table Inheritance

Описание Single Table Inheritance

Представление всех классов из иерархии наследования в виде одной таблицы в БД, содержащей столбцы для всех полей различных классов.

Реляционные БД не поддерживают наследование, по этому, записывая данные об объектах в БД, мы вынуждены придумывать, как отобразить наследование в таблицах. Конечно, мы стараемся минимизировать JOIN'ы, которые мнговенно появятся, если наследование реализовывать несколькими таблицами в БД. Паттерн Single Table Inheritance (наследование с единой таблицей) записывает все поля всех классов иерархии в одну таблицу.

Class Table Inheritance (Наследование с таблицами классов)

Паттерны Объектно-Реляционного структурирования Identity Field, Foreign Key Mapping, Association Table Mapping и др.

Паттерн проектирования Class Table Inheritance

Описание Class Table Inheritance

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

Одно из самых заметных несоответствий между объектной и реляционной моделью - отсутствие в РБД поддержки наследования. Иногда необходима структура БД, точно соответсвующая объектной модели и позволяющая наращивать дерево наследования. Паттерн Class Table Inheritance (Наследование с таблицами классов) предоставляет такие возможности, используя одну таблицу на один класс из структуры наследования.

Concrete Table Inheritance (Наследование с таблицами конечных классов)

Паттерны Объектно-Реляционного структурирования Identity Field, Foreign Key Mapping, Association Table Mapping и др.

Паттерн проектирования Concrete Table Inheritance

Описание Concrete Table Inheritance

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

Проблема объектно-реляционного взаимодействия заключается в отсутствии поддержки наследования в РБД. Если рассматривать таблицы с объектной точки зрения, есть смысл записывать каждый объект в отдельную запись в БД. Такой подход реализует паттерн Concrete Table Inheritance, в котором каждому конкретному классу из иерархии наследования соответствует своя таблица.

Inherritance Mappers (Наследуемые распределители)

Паттерны Объектно-Реляционного структурирования Identity Field, Foreign Key Mapping, Association Table Mapping и др.

Паттерн проектирования Inherritance Mappers

Описание Inherritance Mappers

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

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

Не смотря на то, что нюансы такого поведения могут видоизменяться в зависимости от схемы работы с деревом насделования ( Single Table Inheritance, Class Table Inheritance или Concrete Table Inheritance), общая струтура одинакова для них всех.

Вау!! 😲 Ты еще не читал? Это зря!

Анализ данных, представленных в статье про паттерны, подтверждает эффективность применения современных технологий для обеспечения инновационного развития и улучшения качества жизни в различных сферах. Надеюсь, что теперь ты понял что такое паттерны, объектно-реляционного структурирования, identity field, foreign key, mapping , association table mapping и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Проектирование веб сайта или программного обеспечения

Из статьи мы узнали кратко, но содержательно про паттерны
создано: 2017-07-31
обновлено: 2021-03-13
14



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


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

Проектирование веб сайта или программного обеспечения

Термины: Проектирование веб сайта или программного обеспечения