воскресенье, 13 сентября 2009 г.

Главное – порядок!

Пришел к тому, что не могу в частных случаях даже сам представить как должно строится дерево тегов. Видимо, нужно писать стандарт.
Задача: Описать тегами структуру данных. Желательно любую. С зависимостями.



  1. Теги – это одноуровневый справочник.
  2. Любым данным сопоставляются теги. Т.е. любому элементу другого справочника или документа сопоставляется тег.
  3. Теги могут быть связаны между собой.

    1. Связь тегов может быть:

      1. простой
        “Тег1:Тег2” это значит, что у Тега2 есть Тег1, иными словами Тег2 входит в группу Тег1.
      2. и сложной (составной)
        Например:
        1. “Тег1:Тег2:Тег3” – это значит что для Тега1 свойство Тег2 имеет значение Тег3. Например, “Клиент1:Бухгалтер:Иванов”. В принципе если Иванов работает только у Клиента1, и только бухгалтером, то эту связь можно заменить двумя простыми “Клиент1:Иванов”, “Бухгалтер:Иванов”, но возможно, а такое у меня действительно встретилось, что Иванов работает директором у Клиента2, следовательно, мы бы должны были ввести теги “Клиент2:Иванов” и “Директор:Иванов”, из чего в итоге мы бы могли получить, что Иванов работает директором у Клиента1. Именно для этого и введено понятие сложной связи)
        2. “Тег1:Тег2:Тег3:Тег4” – это поддается вариативному пониманию. Например, “Клиент1:Бухгалтер:Главный:Петров” можно понять как, что у Клиента1 свойство Бухгалтер, которое содержит свойство Главный, которое равно = Петров. Или как, что у Клиента1 свойство “Бухгалтер:Главный” имеет значение Петров. Или как у “Клиент1:Бухгалтер” свойство “Главный” = Петров.
    2. Связи хранятся как отдельный справочник.
  4. Построение зависимостей тегов:
    1. К сожалению это еще предстоит описать. На данный момент я могу лишь дать пример.
      Итак. У нас есть следующие связи (с соответствующими тегами):
      1.“Клиенты:Клиент1”
      2.“Клиенты:Клиент2”
      3.“Клиент1:Директор:Кикоин”
      4.“Клиент1:Бухгалтер:Иванов”
      5.“Клиент1:Бухгалтер:Главный:Петров”
      6.“Клиент2:Директор:Иванов”
      7.“Клиент2:Бухгалтер:Сидоров”
      8.“Клиент3:Директор:Геймгольц”
      9.“Должности:Бухгалтер”
      10.“Должности:Директор”
      11.“Список1:Клиент1:Бухгалтер:Главный”
      12.“Список1:Клиент2:Директор”
      13.“Список2:Клиент1:Бухгалтер”
      14.“Список2:Директор”
      15.“Списки:Список1”
      16.“Списки:Список2”

      Построим дерево для Клиенты:
    2. Клиенты:
      1. Клиент1
        1. Директор
          1. Кикоин
          2. Должности
          3. Список2
            1. Списки
        2. Бухгалтер
          1. Главный
            1. Петров
            2. Список1
              1. Списки
          2. Петров
            1. Главный
              1. Список1
                1. Списки
          3. Иванов
          4. Должности
          5. Список2
            1. Списки
        3. Главный
          1. Бухгалтер
            1. Петров
            2. Должности
            3. Список2
              1. Списки
            4. Список1
              1. Списки
          2. Петров
            1. Бухгалтер
              1. Должности
              2. Список2
                1. Списки
              3. Список1
                1. Списки
        4. Кикоин
          1. Директор
            1. Должности
            2. Список2
              1. Списки
        5. Иванов
          1. Бухгалтер
            1. Должности
            2. Список2
              1. Списки
        6. Петров
          1. Бухгалтер
            1. Главный
              1. Список1
                1. Списки
              2. Список2
                1. Списки
            2. Должности
            3. Список 2
              1. Списки
    3. Фиуфи! Остановился только на Клиент1. Надеюсь, что дерево заполнил полностью. Теперь осталось подумать, все ли я правильно заполнил и сформулировать алгоритмы, по которым я строил это дерево.Предвижу проблемы с формулировкой при сложных связях.

Комментариев нет:

Отправить комментарий