[IA] 階層とIDの割り当て

ウェブサイト全体を管理する際に単位を1ページとした場合、それにIDを割り当てることがあると思います (原稿管理としてや物理ファイルとしてなど) 。

そこで、IDの割り当て方について以前同僚と考えてた内容をまとめてみます。

サイト構造をきれいなピラミッド型とした場合、階層ごとに数字 (○桁) で管理していく方法が考えられます。ただ、数字だと0~9までしか使えないため1桁に対して10文字しか使えないことになります。この場合1階層に10ページ以上ある場合 (IDが10個必要な場合) にはすぐに破綻してしまいます。また、アルファベットで考えると (大文字・小文字を同一視した場合) 26文字までになるので1階層に30ページ以上必要な場合だとやはり辛くなってしまうと思います。

そこで、できるだけ1桁で数を多く見せる方法として数字・アルファベットを合わせた「36進数」ってことを考えみました。これだと0~9 + A~Zの最大36個の文字が使えることになります。

1階層に35 (※) IDを使う場合 (識別記号: A)

階層 ID
第1階層 1 1 A
第2階層 36 35 A0
第3階層 36 * 36 1295 A00
第4階層 36 * 36 * 36 46655 A000

※36個目には桁があがるため正確には0~35個使えることになります。

また、1階層を2桁で表現することを考えれば「36 * 36 = 1296」ってことになり最後に桁が上がるため0~1295個使えることになります。

1階層に1295個までのIDを使う場合 (識別記号: B)

階層 ID
第1階層 1 1 B
第2階層 36 * 36 1295 B00
第3階層 36 * 36 * 36 * 36 1679615 B0000
第4階層 36 * 36 * 36 * 36 * 36 * 36 2176782335 B000000

ということで、1桁でできるだけ多くIDをつけたいと思った場合には「36進数」がオススメです。もちろん数字とアルファベットだけではわかりにくいって声もあるでしょうから、記号 (例: ★) とかもつけると幅が広がるかも知れません。

もっといい方法などあればご紹介してください (> 誰か)。

コメントを残す