2 Stimmen

SQL Find kleinster eindeutiger Schlüssel in Tabelle

Ich habe eine Tabelle mit 8 Spalten und möchte den kleinstmöglichen eindeutigen Schlüssel für diese Tabelle wissen. (es gibt keine Indexe).

Dies ist so einzigartig wie es wird:

select count(*) 
  from (select distinct id1, id2, id3, 
                        id4, id5, id6, 
                        id7, id8 
          from mytable);

Gibt es eine schnelle und einfache Möglichkeit herauszufinden, welche Spaltenkombination eindeutig für diese Tabelle ist? Wie soll ich vorgehen?

1voto

Ben Punkte 49942

Nein, es gibt keinen schnellen und einfachen Weg, wie es die Leute gesagt haben; wie Barmar kommentiert hat:

Jede Antwort, die Sie erhalten, hängt von den Daten ab, die zu diesem Zeitpunkt geladen sind. Jede Änderung an der Tabelle könnte das Ergebnis ungültig machen

Zusätzlich haben Sie bisher keinen Primärschlüssel gehabt, um nach Eindeutigkeit zu suchen, könnte leicht zu einem falschen positiven Ergebnis kommen. Sie haben die Eindeutigkeit nicht durchgesetzt, daher könnte das Set von Spalten, das einzigartig sein sollte, es nicht sein.

Ein eindeutiger Schlüssel wird durch die Daten in Ihrer Tabelle bestimmt. Sie müssen die Daten verstehen, um festzustellen, was einzigartig sein sollte.

Es sollte eine natürliche Möglichkeit geben, einen eindeutigen Schlüssel zu haben, d.h. wenn Sie eine Tabelle von Betriebssystembenutzern haben, sollte der eindeutige Schlüssel wahrscheinlich ihr Benutzername sein. Ebenso, wenn Sie eine Tabelle von Mitarbeitern haben, gibt es keine Möglichkeit, Eindeutigkeit über den Mitarbeiternamen (oder irgendein anderes Attribut oder eine Gruppe von Attributen) zu garantieren, daher müssen Sie einen Ersatzschlüssel erstellen.

Nur Sie können das bestimmen; untersuchen Sie Ihre Daten und Sie sollten in der Lage sein, es herauszufinden.

Allgemein:

  • Jede Tabelle sollte einen Primärschlüssel haben; sollte gleichzeitig mit der Tabelle erstellt werden.
  • Es gibt nichts Wichtigeres als das Verständnis der Daten in Ihrer Datenbank. Sie können die Datenbank nicht effektiv verwenden, bis Sie verstehen, worauf Sie schauen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X