2017-11-30 7 views
0

AppIDとGroupIDの2つの列を含むSQL Serverテーブルがあります。テーブルは、ASPリストボックスから読み込まれます。 AppIDはそれに関連付けられた多くのGroupIDを持つことができます。レコードの更新時にSQL Serverテーブルに行を追加および削除する

各アプリケーションのグループの追加にはうまくいきます。ユーザーがレコードを編集する場合は、リストボックスに既に選択されているアイテムを追加できます。

私が知りたいのは、ユーザーがリストボックス内のアイテムを編集したときに、既存のアイテムの選択を解除して新しいアイテムを選択できることです。データベース内のテーブルを更新する最も良い方法は何ですか? AppIDのすべてのレコードを削除する方が良いでしょうか、それとも良い方法がありますか?

誰かのアプリケーションにリンクされているグループは12以上ありません。

EDIT

申し訳ありませんが、テーブルは、アプリテーブルおよびグループテーブル間のリンクテーブルがあると述べている必要があります。リンクテーブルのIDは、これらのテーブルの主キーです。

TIA

+0

最善を扱いますテーブルを正規化することです。'GroupId'は外部キーとして' AppId'を持つ 'AppGroups'テーブルに属します。ユーザーが 'ListBox'からグループを削除すると、このテーブルのエントリを削除する必要があります。 'App'テーブルには、アプリケーションに関連する情報のみが含まれています。グループは異なるトピックであり、関係は関連するテーブルに属します。 –

答えて

0

プロ文法的には、AppIDのためにすべてを削除し、それらの中にすべてのバックを追加する方が簡単です。しかし、あなたのパフォーマンスは、このメソッドを使用して大ヒットを取るだろう。

ので、パフォーマンスの観点から、あなたの最善の方法は、2つの部分に操作を分割することです:あなたのListBoxでなくなったあなたのリンクテーブルの

  • 検索レコード& は彼らに
  • 検索レコードを削除しますあなたのリストボックス内のテーブルにない&を挿入する

これは、ユーザーがクリックすると挿入して削除するデータを追跡する場合にのみ有効ですListBox上のs。そして、一度に1つのレコードを削除すると、より多くのトランザクションが遅くなることを意味します。


EDIT

更新は、典型的には、高速挿入+削除するよりもされているような更なる性能向上がアップデートに削除&インサートの一部をオンすることであろう。それでもコードには複雑さが増し、より重要なものになります。

  1. ユーザーがリストボックスに変更を加えると前と同じように削除の&挿入を追跡するため
  2. カウントあなたが
  3. が最低数を取る必要があり&挿入を削除し、それはあなたを挿入するどのように多くの削除+でどのように多くの更新プログラムに変換できます。あなたはグループID 123 &は、グループID 456を挿入、削除する必要がある場合たとえば、その後、だけではなく、グループID 123
  4. 456にを更新し、あなたがそれらを実行し、その後、削除の上に残っている場合は、それ以外の残りのインサート
関連する問題