Создать уникальный идентификатор, который является узнаваемым потомком родительского идентификатора. - PullRequest
3 голосов
/ 14 мая 2011

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

Например:

Parent Id: df2f5d11-0b66-4407-8cf4-8877b954a273
Child Id: df2f5d11-0b66-349b-8527-1a6a79d2efce

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

Моя реализация выглядит так:

var childId = new Guid(parentId.ToByteArray().Take(6).Concat(Guid.NewGuid().ToByteArray().Take(10)).ToArray());

- что немного неуклюже, если во многих системах используется аналогичный механизм.

Есть ли лучший / чище / проще?

1 Ответ

1 голос
/ 14 мая 2011

Я думаю, что любая манипуляция байтами в GUID приведет к разрыву уникальной и глобальной частей.

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

А можно ли получить ссылки на источники, которые говорят, что это действительно используется?

...