Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Т - Работа с инверсными и симметричными связями #142

Closed
3 tasks done
lvb555 opened this issue Dec 12, 2021 · 0 comments
Closed
3 tasks done

Comments

@lvb555
Copy link
Owner

lvb555 commented Dec 12, 2021

Инверсная связь

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

Пример: Виды связи "Причина" и "Следствие" являются инверсными по отношению друг к другу. Поэтому, связь "Знание-А - Причина - Знание-Б" тождественна инверсной связи "Знание-Б - Следствие - Знание-А" .

Описание инверсности связи задается реквизитом "Инверсия" сущности "Виды связи", который хранит Вид связи, инверсный к текущему виду
инверсный по отношению к Виду связи этой связи.
Таким образом запись "Причина" в поле "Инверсия" содержит вид связи "Следствие".
А запись "Следствие" в поле "Инверсия" содержит вид связи "Причина".

Возможны случаи, когда реквизит "Инверсия" ссылается на саму себя. Это связи, отражающие симметричные отношения.

Симметричная связь

Например вид связи "Близкое по теме". Если знание "А" близко по теме знание "Б", то и .знание "Б" близко по теме знание "А". Таким отношениям в неориентированном графе соответствует ребро. В нашем ориентированном графе два ребра.
Поэтому, при создании связи "Знание-А - Симметричная связь - Знание-Б" нужно автоматически создавать другую связь: "Знание-Б - Симметричная связь - Знание-А"

Необходимые операции

  • В сущность "Вид связи" добавить реквизит "Инверсия" - указатель на сущность "Вид связи".
  • Админка. Вид связи. Добавить поле "Инверсия".
  • Админка. Связь. При сохранении записи, в случае если поле "Вид связи" содержит инверсию, тогда:
    Если инверсная связь еще не существует, тогда создать новую (инверсную) связь на основании текущей связи. При этом:
  1. Значения полей "Базовое знание", "Связанное знание" поменять местами.
  2. В поле "Вид связи" занести значение поля "Инверсия" из Вида связи текущей связи.
    Иначе обновить инверсную связь
  3. Значения полей "Базовое знание", "Связанное знание" поменять местами.
  4. В поле "Вид связи" занести значение поля "Инверсия" из Вида связи текущей связи.
@lvb555 lvb555 changed the title Т - Работа с инверсными связями Т - Работа с инверсными и симметричными связями Oct 20, 2023
@HstrPrn HstrPrn mentioned this issue Oct 23, 2023
@HstrPrn HstrPrn mentioned this issue Nov 1, 2023
@lvb555 lvb555 closed this as completed Dec 31, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant