企業および個人 (顧客) に属する電話番号を含む MySQL テーブルがあります。各顧客は複数の電話番号を持つことができ、多くの場合、特定の順序でリストする必要があるため、テーブルにはsequence
各顧客の電話番号を好みに応じて並べ替えるフィールドがあります。フィールドは次のとおりです。
parent_id
- 文字sequence
-tinyintarea_code
- ストリングnumber
- ストリング
主キーは と の組み合わせparent_id
ですsequence
。
ここまでは順調ですね。「問題」は、番号を上に移動したり、番号を削除したりするときに発生します。
番号を上に移動するとき、私が (PHP を使用して) 行う方法は、そのレコードsequence
を 0 に変更し (顧客の最初の電話番号は通常 1 です。これのためだけに 0 を使用します)、前の番号sequence
を 1 ずつ増やしてから設定します。元のレコードsequence
は以前よりも 1 少なくなりました。sequence
つまり、 を前の電話番号と入れ替えますが、3 つのクエリが必要です。
電話番号を削除するときは、そのレコードを削除してから、その顧客の残りの電話番号を、欠落がないように再ソートする必要がありsequence
ます。顧客が持っている電話番号の数によって異なりますが、複数のクエリになる場合があります。
もっと効率の良い方法がないか考えてみました。
前もって感謝します!