IMS DB - логическая база данных
В базе данных IMS есть правило, согласно которому у каждого типа сегмента может быть только один родитель. Это ограничивает сложность физической базы данных. Многие приложения DL / I требуют сложной структуры, которая позволяет сегменту иметь два родительских типа. Чтобы преодолеть это ограничение, DL / I позволяет администратору баз данных реализовывать логические отношения, в которых сегмент может иметь как физических, так и логических родителей. Мы можем создавать дополнительные отношения в одной физической базе данных. Новая структура данных после реализации логической взаимосвязи известна как логическая база данных.
Логическая связь
Логическая связь имеет следующие свойства -
Логическая связь - это путь между двумя сегментами, которые связаны логически, а не физически.
Обычно между отдельными базами данных устанавливается логическая связь. Но возможна связь между сегментами одной конкретной базы данных.
На следующем изображении показаны две разные базы данных. Одна - это база данных студентов, а другая - база данных библиотеки. Мы создаем логическую связь между сегментом «Книги, выданные» из базы данных учеников и сегментом «Книги» из базы данных библиотеки.
Вот как выглядит логическая база данных, когда вы создаете логические отношения -
Логический дочерний сегмент
Логический дочерний сегмент - основа логической связи. Это физический сегмент данных, но для DL / I кажется, что у него есть два родителя. Сегмент "Книги" в приведенном выше примере имеет два родительских сегмента. Сегмент выпущенных книг является логическим родителем, а сегмент библиотеки - физическим родителем. Одно вхождение логического дочернего сегмента имеет только одно вхождение логического родительского сегмента, а одно вхождение логического родительского сегмента может иметь множество вхождений логического дочернего сегмента.
Логические близнецы
Логические близнецы - это вхождения типа логического дочернего сегмента, которые все подчинены одному экземпляру типа логического родительского сегмента. DL / I делает логический дочерний сегмент похожим на реальный физический дочерний сегмент. Это также известно как виртуальный логический дочерний сегмент.
Типы логических отношений
Администратор базы данных создает логические отношения между сегментами. Для реализации логической взаимосвязи администратор баз данных должен указать ее в DBDGEN для задействованных физических баз данных. Есть три типа логических отношений -
- Unidirectional
- Двунаправленный виртуальный
- Двунаправленный физический
Однонаправленный
Логическое соединение идет от логического потомка к логическому родителю и не может быть наоборот.
Двунаправленный виртуальный
Это позволяет доступ в обоих направлениях. Логический дочерний элемент по своей физической структуре и соответствующий виртуальный логический дочерний элемент можно рассматривать как парные сегменты.
Двунаправленный физический
Логический ребенок - это физически сохраненный подчиненный как своим физическим, так и логическим родителям. Для прикладных программ он выглядит так же, как двунаправленный виртуальный логический дочерний элемент.
Соображения по программированию
Соображения по программированию для использования логической базы данных следующие:
Вызовы DL / I для доступа к базе данных остаются такими же, как и для логической базы данных.
Блок спецификации программы указывает структуру, которую мы используем в наших вызовах. В некоторых случаях мы не можем определить, что используем логическую базу данных.
Логические отношения добавляют новое измерение в программирование баз данных.
Вы должны быть осторожны при работе с логическими базами данных, так как две базы данных интегрированы вместе. Если вы изменяете одну базу данных, те же изменения должны быть отражены в другой базе данных.
Спецификации программы должны указывать, какая обработка разрешена в базе данных. Если правило обработки нарушено, вы получите непустой код состояния.
Составной сегмент
Логический дочерний сегмент всегда начинается с полного сцепленного ключа целевого родителя. Это известно как конечный родительский составной ключ (DPCK). Вам необходимо всегда кодировать DPCK в начале области ввода-вывода вашего сегмента для логического дочернего элемента. В логической базе данных объединенный сегмент устанавливает соединение между сегментами, которые определены в разных физических базах данных. Объединенный сегмент состоит из следующих двух частей -
- Логический дочерний сегмент
- Целевой родительский сегмент
Логический дочерний сегмент состоит из следующих двух частей -
- Конкатенированный родительский ключ назначения (DPCK)
- Логические дочерние пользовательские данные
Когда мы работаем с конкатенированными сегментами во время обновления, можно добавить или изменить данные как в логическом дочернем, так и в целевом родительском элементе с помощью одного вызова. Это также зависит от правил, установленных администратором баз данных для базы данных. Для вставки установите DPCK в правильном положении. Для замены или удаления не изменяйте DPCK или данные поля последовательности ни в одной из частей конкатенированного сегмента.