0

企業および個人 (顧客) に属する電話番号を含む MySQL テーブルがあります。各顧客は複数の電話番号を持つことができ、多くの場合、特定の順序でリストする必要があるため、テーブルにはsequence各顧客の電話番号を好みに応じて並べ替えるフィールドがあります。フィールドは次のとおりです。

  • parent_id- 文字
  • sequence-tinyint
  • area_code- ストリング
  • number- ストリング

主キーは と の組み合わせparent_idですsequence

ここまでは順調ですね。「問題」は、番号を上に移動したり、番号を削除したりするときに発生します。

番号を上に移動するとき、私が (PHP を使用して) 行う方法は、そのレコードsequenceを 0 に変更し (顧客の最初の電話番号は通常 1 です。これのためだけに 0 を使用します)、前の番号sequenceを 1 ずつ増やしてから設定します。元のレコードsequenceは以前よりも 1 少なくなりました。sequenceつまり、 を前の電話番号と入れ替えますが、3 つのクエリが必要です。

電話番号を削除するときは、そのレコードを削除してから、その顧客の残りの電話番号を、欠落がないように再ソートする必要がありsequenceます。顧客が持っている電話番号の数によって異なりますが、複数のクエリになる場合があります。

もっと効率の良い方法がないか考えてみました。

前もって感謝します!

4

2 に答える 2