Работа и разработка идут хорошо когда есть:

  1. От чего отталкиваться(основа).
  2. К чему стремиться(идея, проект и т.д.)

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

image

Элементы: теоретическая часть


Элемент(объект) – это единица: материальная, абстрактная или условная.

Контейнеры и объекты


Элементы делятся на: контейнер(К), контейнерный объект(КО) и объект(О).

image

  1. Контейнер (К) – элемент, который может содержать в себе другие элементы – контейнерные объекты(КО) или объекты(О). Сам контейнер не может находиться внутри чего-либо.
  2. Контейнерный Объект (КО) – элемент, который может содержать в себе другие элементы – контейнерные объекты(КО) и объекты(О), и в тоже время сам может находиться внутри контейнерного объекта(КО) или контейнера(К).
  3. Объект (О) – элемент, который не может содержать внутри себя другие элементы, но сам может находиться внутри контейнерного объекта(КО) или контейнера(К).

Относительность


Каждый из элементов можно рассмотреть отдельно:

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

    image
  2. Как Контейнерный объект. Тогда во внимание принимается, и то, внутри чего находится элемент, и то, что находится внутри него самого.

    image
  3. Объект. Когда мы рассматриваем элемент как О, тогда мы непосредственно переходим к его типу и свойствам, не забывая при этом об элементе внутри которого он может находиться. Если обращаться к рассмотрению книги как объекта, то мы начинаем рассматривать ее параметры: длина, толщина, ширина, автор, название и т.д.
    image

Типы и Свойства


Каждый элемент имеет свой тип.

image

Тип элемента – это определенный набор свойств элемента.

Так же можно сказать, что у элемента есть список(набор) свойств. У этого списка есть название и, говоря «тип элемента», мы подразумеваем(имеем ввиду) название этого списка.

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

Для примера приведем список свойств элемента:

  1. Ширина
  2. Длина
  3. Радиус
  4. Длина окружности
  5. Высота
  6. Толщина
  7. Слух
  8. Зрение
  9. Периметр
  10. Площадь
  11. Площадь окружности

Каждый из типов элемента приведенных выше имеет свой набор свойств. Так, например элемент тип: квадрат, обладает свойствами 1, 2, 9 и 10, а тип: окружность свойствами 3, 4 и 11. Свойства 10 и 11 это составные свойства, поэтому они идут отдельно друг от друга.

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

Вслед за свойствами тянуться величины: см, мм, км, кг, секунда, минута, часы, Hz, Ом и т.д.

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

Взаимодействия


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

image

image

image

Взаимодействия иначе называются пересечения (cross).

Возьмем два элемента E1 и E2. При пересечении, E1 и E2 могут оказывать друг на друга некое влияние:

  1. E1 оказывает влияние на E2.
  2. E2 оказывает влияние на E1.
  3. E1 и E2 оказывают друг на друга равное влияние или никакого.

Если рассмотреть пример с адресом приведенный выше, то, если принять Иванова Ивана Иваныча за E1, а его квартиру за E2, то нам подойдет первый вариант взаимодействия, т.к. Иван Иваныч может продать свою квартиру. Квартира же не моет оказать влияние на Иваныча.

А если за E1 принять Работника, а за E2 работу, тогда вариант 3, т.к. Работник работает и он получает за это деньги, и работник может быть уволен с работы или сам уволиться.
Помимо влияния выделяется взаимодействие: K, KO и O:

  1. K и K.
  2. K и KO.
  3. K и O.
  4. KO и KO.
  5. KO и O.
  6. O и O.

Какое у всего этого практическое применение?


Начнем с того, что каждый элемент имеет свой идентификатор (ID), знает своего родителя (parent), имеет свой тип (type), и порядок отображения внутри родителя (sort).

image

Если хранить эту информацию в Базе данных, то таблица будет выглядеть следующим образом:
id(int) parent(int) type(int) sort(int)
1 NULL 1 0
2 1 2 0
3 2 3 0

Собственно у типов элементов должна быть своя таблица-справочник:
id(int) title(vchar) name(vchar)
1 Треугольник triangle
2 Круг Circle
3 Квадрат square

За типами потянется список свойств:
id(int) title(vchar) name(vchar)
1 Ширина width
2 Длина length
3 Высота height
4 Радиус radius

И списки свойств типов(какие свойства у какого типа)
type(int) property(int)
3 1
3 2
2 4

Таблица-справочник Величины (value(id,title,name)), в которых измеряются значения свойств.

id(int) title(vchar) name(vchar)
1 px px
2 см sm
3 минута min
4 секунда sec


Но это что качается основы. За каждым из свойств может идти своя отдельная таблица, в которой будут храниться определенные данные. Например, таблица Width(таблица размера одной из сторон, которая определяет ширину).

Записи закрепляются не за свойством, а за ID элемента, тип которого имеет это свойство.
elementID(int) width(int) valueID(int)
3 50 1

Далее идут пересечения(cross)
elementID1(int) elementID2(int) pattern(int) type(int) effect(int)
1 2 1 1 1

Pattern — Шаблоны пересечения, таблица справочник.
id(int) title(vchar) name(vchar)
1 Адрес address

Type – Типы пересечения(k-ko или ko-o), так же обычный справочник аналогичный pattern.
Effect – учитываем влияние одного элемента на другой.

Колонки Type и Effect как показала практика можно опустить. Может эти колонки и пригодятся когда-нибудь, где-нибудь…

Основа БД готова.

Если взять категории и публикации, то есть элемент типа «категория», и есть элемент типа «публикация».Элементы типа «публикация» находятся внутри элемента типа «Категория». Тип «публикация» тянет за собой свойства «контент», «изображения», «видео», «цены»(если это товар) и т.д.

К чему примерно можно устремиться имея под рукой данную основу?


Реструктурированный Список-справочник ОКУН(Общероссийская Классификация Услуг Населению)

На данном изображении ОКУН рассматривается как КО, т.е. список Элементов.

image

На этом изображении один из Элементов(ОКУН) рассматривается как О, т.е. его свойства.

image

Дополнительные изображения к примеру
image

image

image


Игра, или что-нибудь еще. Визуальное представление какой-нибудь идеи.


У обеих работ одна основа и БД. Только разные типы и свойства у элементов, и визуально
представлены они по разному.

Комментарии (3)


  1. vasvl123
    16.04.2019 20:43

    Возможно, Вам будет интересно взглянуть на мою реализацию похожей идеи: OneScriptDB


    1. pavellyzhin Автор
      16.04.2019 21:35

      Да, идея очень похожая, и очень интересная.


      1. vasvl123
        16.04.2019 22:02

        Спасибо Вам за статью! Это ответ на актуальные вопросы и руководство к дальнейшему развитию моего проекта! Извините за нескромность)