Уникальность заголовков, версий, топиков и прочих объектов

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

Проблемы коллизий в основном легко избежать

Понятно что Продукт имеет символическое имя, всегда уникальное проблемы нет. Внутренние Задачи тоже так или иначе избегают совпадения заголовков топиков. Изделия/Экземплярыимеют серийные номера, включающие ссылку на продукт. Имена Полей уникальны (в т.ч. по требованиям Udb). Заголовками ЗаказовСпецификаций и подобного могут быть даты создания или уникальные порядковые ИД если фантазии не хватает на иное. ПользователиРоли и прочая системная туфта именуется ни на что другое не похожими идентификаторами. Файлы аттачментов если не уникальны по именам, могут включать полный путь либо ревизию.

Между разными классами объектов конфликтов тоже легко избежать. Если есть уже пользователь "AV" а в поставку заказа надо включить антивирус не надо называть его позицию "AV". Сойдет "A/V", "Antivitus". Практической проблемы нет.

Главная проблема - это номера версий и ревизий.

Нумерация версий

Для версий разных продуктов и компонентов (в т.ч. закупочных) надо вводить правила их размежевания.

Если скажем версия прошивки одного контроллера названа "3.15" и прошивка другого тоже "3.15" возникают тонны проблем.

Потребуется вводить и отслеживать "пространство имен". Во всех мыслимых контекстах приписывать к этому номеру название продукта. Но это не спасет от других проблем.

Одна из важных фундаментальных проблем восприятия это что кто то может подумать что прощивка "3.15" одного контроллера совместима с "3.15" другого. Это не факт! Совместимость должна определятся статусами специальных перекрестных связей а не закладываться в заголовках.

Причем для версий к их номеру нужно относится как к первичному ключу в БД (даже если они имеют номер топика и Udb key) так как их нельзя переименовать. Нельзя после тестирования совместимости перенумеровать версии чтобы они отражали что то осмысленное.

Способы решения
Самый тупой: приписать к версии имя Продукта
   Multiscanex 2.501e
   AVKB-Ex2A A1.101

Естественно имеем проблему дублирования информации и всякие рассогласования при переименовании. Плюс просто кучу неуклюжего мусора.

Наиболее креативный

Для каждого продукта использовать свой уникальный формат.

     1.1001ex
     1.9752q2
     3.2010rtx
     A1D3.3.omega
     A1D3.3.vista
     A2E5.5.tempo
     B2a.001
     B2b.007
     B5i.002
     FW2000.Mcu1.a
     FW2001.Mcu1.b
     FW2034.Mcu1.d
     FW2010.Mcu2.a
     FW3000.Mcu2.s
     FW3001.Mcu2.q

Можно даже шаблон формата привязать к продукту для автоматической верификации. Логически соседние Продукты могут иметь схожие форматы.

Принцип выбора - кто первый захватил формат тот и прав. Остальные обязаны придумать что угодно, но отличное.

Для сотен наших Продуктов реально придумать разные форматы.

В формате не надо искать глубокой логики. Просто произвольно разные и все. Это правда одна из проблем для инженеров - произвольность, начнутся споры и переживания ниочем... Это будет работать только если один человек, понимающий цель идеи будет устанавливать правила.

Префиксный

Приписываем к номеру версии 2-3 буквы префикса, уникального для продукта.

Очевидный подход - сокращение от названия продукта может быть опасен. Будут переживания и путаница при переименовании продукта и от коллизий по похожести.

Поэтому правило требующее скажем двух случайных букв обязательно НЕ совпадающих с продуктом

   Multiscanex
       Qi.2.501e
       Qi.3.502fx.2
   AVKB-Ex2A
       RmA1.101
       RmA1.202

Комбинаций 2 букв много но не бесконечно http://en.wikipedia.org/wiki/Wikipedia:List_of_two-letter_combinations

Нужно учитывать что первая буква должна быть обязательно заглавной (вики!) и однозначно латинской.

Для всяких компонентных и закупных продуктов можно ввести три буквы.

Толерантность движков
  • Inwix в основе форумной части безразличен к повторам названий топиков но и не предпринимает никаких усилий чтобы обеспечить юзабилити повторных имен. Но как то работает (см. топики в History)
  • Вики - категоричеки исключает. Все что хотя бы потенциально может захотеть воспользоваться ее средствами должно быть названо глобально уникально. (Неймспейсы MW не могут тут помочь ничем)
  • Bics- TBD к авторам
  • BijouCostoRegoне блокируют никаких повторов в значениях пропертей но не будут включать никаких специальных мер разрешения неоднозначеностей заголовков, подразумевая что их нет. Перелагая это на приложения. Однако никаких фаталов не должно быть как и при любых нарушениях (возможно временных) целостности структуры БД. Но могут включать средства выявления дубликатов для отчета об ошибках в структуре.

Проблемы применения поиска - очевидны. Их можно как то невилировать автоматическим префиксированием объектов.

Но такие вещи как autocomplete ссылок на объекты по их именам или скриптинг в формате, например:

    "B5i.001" -> Status = Success;

может не поддерживать (и с моей стороны НЕ будет) пространства имен и разрешения неоднозначностей.