Zum Inhalt springen

Wie kann man doppelte Einträge in DB vermeiden?


Empfohlene Beiträge

hallo,

ich habe die Spalten Produkt_id, Dienstleistungs_ID, Produkt und Report in meiner Tabelle. Als Primärschlüssel habe ich die Produkt_id genommen, da diese den Datensatz eindeutig identifiziert. Ich arbeite mit einem SQL Server, dort gibt es die Möglichkeit die Produkt_id autonummerisch oder nicht autonummerisch festzulegen.

Nun würde ich gerne wissen, wie ich mit ASP doppelte Einträge in meiner Tabelle vermeiden kann, mit der Abfrage "SELECT DISTINCT" habe ich schon ausprobiert, aber es wirkt nicht.

Noch ein Punkt am Beispiel, vermuten wir ich habe folgende Einträge


Produkt_id   Dienstleistungs_ID  Produkt  Report

1                  1                 x1       y1

2                  4                 x2       y2

Wenn der Benutzer versuchen würde, einen Eintrag wie 3 4 x2 y3 hinzuzufügen, dann würde es jetzt ein Produkt namens x2 mit 2 Produkt_ids geben, und das ist nicht was ich möchte, könnte man sowas mit ASP vermeiden, so dass auch der Benutzer eine Fehlermeldung bekommt? oder die Änderungen müssen direkt in der Tabelle in der Datenbank vorgenommen werden.

Für Hilfe wäre ich dankbar. Gruß.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi. ich weiß jetzt nicht genau ob ich richtig liege, aber kannst du nicht deiner spalte "Produkt" in der Datenbank die eigenschaft "unique" geben???

Meine Meinung,

leg einen Unique Index auf die Spalten und schon wird bei einem "Insert"-Versuch die Datenbank einen Fehler ausspucken

Gruß,

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

wie ich deinen postings entnehmen kann soll die spalte produkt einzigartig sein oder???

warum dann nicht die produkt-spalte als primary key hernehmen....

aber so grundsätzlich würde ich sagen dass der produktname nicht einzigartig sein müsste....

die einzigartigkeit sollte durch die ID gegeben werden.... und net durch den namen......

btw: so entspricht das rm net den normalformen :rolleyes:

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo,

ich habe die Spalten Produkt_id, Dienstleistungs_ID, Produkt und Report in meiner Tabelle. Als Primärschlüssel habe ich die Produkt_id genommen, da diese den Datensatz eindeutig identifiziert. Ich arbeite mit einem SQL Server, dort gibt es die Möglichkeit die Produkt_id autonummerisch oder nicht autonummerisch festzulegen.

Nun würde ich gerne wissen, wie ich mit ASP doppelte Einträge in meiner Tabelle vermeiden kann, mit der Abfrage "SELECT DISTINCT" habe ich schon ausprobiert, aber es wirkt nicht.

Noch ein Punkt am Beispiel, vermuten wir ich habe folgende Einträge


Produkt_id   Dienstleistungs_ID  Produkt  Report

1                  1                 x1       y1

2                  4                 x2       y2

Wenn der Benutzer versuchen würde, einen Eintrag wie 3 4 x2 y3 hinzuzufügen, dann würde es jetzt ein Produkt namens x2 mit 2 Produkt_ids geben, und das ist nicht was ich möchte, könnte man sowas mit ASP vermeiden, so dass auch der Benutzer eine Fehlermeldung bekommt? oder die Änderungen müssen direkt in der Tabelle in der Datenbank vorgenommen werden.

Für Hilfe wäre ich dankbar. Gruß.

Gib´ mal etwas mehr Infos bitte. Die Produkt_id wird wahrscheinlich auto_increment sein, oder? Ich verstehe das so, dass nie ein Datensatz die gleiche Produkt-Nr. und Dienstleistungs_ID haben soll/darf, oder? Wenn ja, dann leg´ doch einfach einen Primärschlüssel auf diese beiden Felder, so dass hier keine Doppeleinträge vorkommen können.

Oder lieg´ ich jetzt komplett falsch? :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo, danke, danke Jungs, für Ihre Antworten, als PK habe ich Produkt_id genommen, aber ich habe schon geschafft mit einer Schleife, dass doppelte Einträge nicht hinzugefügt werden, da habe ich für die Produkt_id und das Produkt eine Bedingung geschrieben, damit sowohl die Spalten Produkt_id und Produkt nicht zweimal in der Tabelle vorkommen.

Autonummerisch habe ich nicht die Produkt_id gesetzt, warum?, vermuten wir mal, der Benutzer hat einen Datensatz aus Versehen gelöscht, damit er den Fehler repariert, kann er einfach den Datensatz wieder hinzufügen, in der Eingabemaske würde dann als Textfeld auch die Produkt_id stehen. Ob ich da falsch stehe, weiss ich nicht.

Auf jeden Fall würde ich sowas wie ein "History" in meiner Applikation hinzufügen, d.h. eine Liste der Datensätze, die gelöscht wurden mit Datum und Name des Benutzers, wäre das nicht eine gute Idee?...

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo, danke, danke Jungs, für Ihre Antworten, als PK habe ich Produkt_id genommen, aber ich habe schon geschafft mit einer Schleife, dass doppelte Einträge nicht hinzugefügt werden, da habe ich für die Produkt_id und das Produkt eine Bedingung geschrieben, damit sowohl die Spalten Produkt_id und Produkt nicht zweimal in der Tabelle vorkommen.

Autonummerisch habe ich nicht die Produkt_id gesetzt, warum?, vermuten wir mal, der Benutzer hat einen Datensatz aus Versehen gelöscht, damit er den Fehler repariert, kann er einfach den Datensatz wieder hinzufügen, in der Eingabemaske würde dann als Textfeld auch die Produkt_id stehen. Ob ich da falsch stehe, weiss ich nicht.

Auf jeden Fall würde ich sowas wie ein "History" in meiner Applikation hinzufügen, d.h. eine Liste der Datensätze, die gelöscht wurden mit Datum und Name des Benutzers, wäre das nicht eine gute Idee?...

Ok. Aber warum das Ganze mit einer Schleife abfangen, wenn es genügen würde, den Primärschlüssel nicht nur auf die Produkt_id zu legen, sondern zusätzlich auch auf Produkt? Damit gehst Du evtl. Logik-Fehler im Code aus dem Weg und die Datenbank ist somit wenigstens etwas den Normalformen ähnlich.

Das mit der History ist m.E. im Allgemeinen eine gute Idee...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...