2017-11-30 1 views
0

Ich habe eine SQL Server-Tabelle, die zwei Spalten AppID und GroupID enthält. Die Tabelle wird aus einer Asp-Listbox gefüllt. Einer AppID können viele GroupIDs zugeordnet sein.Hinzufügen und Entfernen von Zeilen aus SQL-Server-Tabelle beim Aktualisieren von Datensatz

Es funktioniert gut für das Hinzufügen von Gruppen für jede App und wenn ein Benutzer einen Datensatz bearbeiten möchte, kann ich die Listbox mit den bereits ausgewählten Elementen auffüllen.

Was ich wissen möchte, ist, wenn ein Benutzer die Elemente in der Listbox bearbeitet, können sie vorhandene Elemente abwählen und neue auswählen, was ist der beste Weg, um die Tabelle in der Datenbank zu aktualisieren? Wäre es besser, alle Datensätze für die AppID zu löschen, oder gibt es einen besseren Weg?

Es ist wahrscheinlich nicht mehr als 12 Gruppen mit jeder App verknüpft.

EDIT

Leider gesagt haben soll, dass der Tisch zwischen der Apps-Tabelle und der Tabelle Gruppen eine Verknüpfungstabelle ist. Die IDs in der Verknüpfungstabelle sind die Primärschlüssel aus diesen Tabellen.

TIA

+0

Die beste löschen Weg ist es, Ihren Tisch zu normalisieren.Die 'GroupId' gehört in eine andere Tabelle' AppGroups', die die 'AppId' als Fremdschlüssel hat. Wenn der Benutzer eine Gruppe aus der 'ListBox' entfernt, muss ein Eintrag in dieser Tabelle gelöscht werden. In die 'App'-Tabelle gehören nur Informationen, die für die App relevant sind. Gruppen sind ein anderes Thema und die Beziehung gehört in eine verwandte Tabelle. –

Antwort

0

Pro grammatisch es einfacher wäre, alles für die Anwendungs-ID zu löschen und sie alle wieder in hinzufügen. Allerdings Ihre Leistung würde einen sehr großen Erfolg mit dieser Methode.

So Ihre beste Methode aus Sicht der Leistung den Betrieb in zwei Teile spalten würde:

  • Fund Datensätze in Ihrer Verknüpfungstabelle, die nicht mehr in der List-Box & löschen
  • Datensätze suchen nur gut in der List-Box, die nicht in der Tabelle sind & fügen Sie sie

das funktioniert, wenn Sie den Überblick über die Daten behalten, um als Benutzer Klick einfügen und löschen s auf der ListBox. Dann wenden Sie die Änderungen alle zusammen, da die Einfügungen & einen Datensatz zu einem Zeitpunkt löscht, würde viel mehr Transaktionen bedeuten, die langsamer wären.


EDIT

Eine weitere Leistungsverbesserung wäre einige der Löschungen & Einsätze in Updates zu drehen, da Aktualisierungen der Regel schneller sind als löschen + einzufügen. Obwohl dies Ihren Code komplizierter machen würde, kommt es darauf an, was wichtiger ist.

  1. Nach wie vor verfolgen die Löschungen & Einsätze halten, wenn der Benutzer Änderungen an der List-Box macht
  2. zählen, wie viele löscht & Einsätze Sie
  3. die niedrigste Zahl nehmen, und das ist, wie viele löschen + Sie fügt kann in ein Update umgewandelt werden. Zum Beispiel müssen, wenn Sie GroupID 123 & Einsatz GROUPID 456, dann stattdessen nur aktualisieren GroupID 123 bis 456.
  4. Wenn Sie verlassen haben, über Löschungen, dann führen diejenigen, sonst behandeln die übrig gebliebenen Einsätze
Verwandte Themen