私は家系図プロジェクト用の Web アプリケーションを作成しています。データベースに追加された各人には、姓の最初の 3 文字 (説明のために「姓文字列」と呼びます) に基づいて、自動インクリメント (00001 からがそれぞれを表します) で一意の ID を持たせたいと考えています。一意の「姓文字列」)。
例 - ある人の姓は「Smith」です。姓の文字列は SMI となり、最初の姓の文字列「SMI」であるため、完全な参照は SMI00001 になります。相手の姓は Black であるため、姓の文字列は BLA になります。また、姓の文字列 BLA を持つ最初の人物であるため、参照は BLA00001 になります。 3 人目の人の姓も Smith です。彼らは SMI 姓文字列を持つ 2 人目の人物であるため、参照番号は SMI00002 になるはずです。
この一意の ID は、データベース内でユーザーを検索し、ユーザー間の関係を作成するためにユーザー URL で使用されます。
この問題を論理的に解決する方法がわかりません。
まだ何も試していません。これは私の想像を超えています!
この方法は大まかです。通常は、データベースの自動インクリメント (番号) を使用するか、md5(time().'randomsalt'.$username) などの一意の ID を自動的に生成する必要があります。
ただし、XXX00000 形式を使用する必要がある場合は、次の関数が必要になります。
データベースに BLA00001 があるかどうかを確認します-
「はい」の場合は、BLA00002 などを確認してください。 -
「いいえ」の場合は、新しいエントリを作成します-
これはしばらくすると非常に遅くなり、各名前が存在する可能性は最大 99999 回になります。その後、BLA を BL1、BL2 などに変更する必要があります。