Zum Inhalt springen

MSSQL 2005 - Zusammengesetzter Primärschlüssel - Vorteile/Nachteile bei Anwendung


Unknowen

Empfohlene Beiträge

Hallo Forum,

ich habe eine Datenbank mit relativ vielen Benutzern und einem hohen Aufkommen von Datensätzen in einer Tabelle. Wegen diesen stetig ansteigenden Datensätzen möchte ich den Primärschlüssel dieser Tabelle auf zwei Spalten "erweitern".

Auf Grund der hohen Benutzerzahl will ich das nicht ohne Weiteres einfach so umsetzen. Über die Vor- und Nachteile bezüglich Geschwindigkeit und Umständlichkeit habe ich mich bereits informiert. Diese dürften in meinem Fall allerdings nicht viel ausmachen, da diese Tabelle die "grundlegendste" Tabelle ist und auf diesen Primärschlüssel nicht zugegriffen wird.

Meine Frage: Gibt es durch zusammengesetzte Primärschlüssel irgendwelche Unterschiede (Vorteile/Nachteile) im laufenden Betrieb der Datenbank? Muss ich mit eventuellen Problemen rechnen? (Wenn ja, welche?) Was muss ich sosnt noch beachten?

Ich hoffe, mir kann da jemand weiter helfen. Vielen Dank schon mal für jede Antwort. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich verwende ja eine fortlaufende Nummer. Hier zu erklären, warum diese Tabelle so groß ist, würde wohl den Rahmen sprengen - wäre recht kompliziert. Fakt ist, dass der Primärschlüssel in naher Zukunft den Int-Wert 2.147.483.647 übersteigt. Deshalb wird eine Vergrößerung des Primärschlüssels nötig.

Der PK besteht nur aus Zahlen und enthält im Prinzip keine Informationen (ist nur zur Einmaligkeit der Datensätze nötig).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Im laufenden Betrieb? Naja rein technisch gesehen wird der zugehörige Index ein bissl größer und es ist eben ein klein bissl auwändiger den PK zu validieren - in der Praxis aber meist unerheblich.

Die SQLs müssen natürlich angepasst werden, da der Zugriff auf nur eine Spalte ggf. kein eindeutiges Ergebnis mehr bringt.

Tabellenm, die den ursprünglichen PK referenzieren müssen natürlich auch entsprechend angepasst werden. Ebenso die SQLs die diese untergeordneten Tabellen befüllen. Ich würde das sehr gründlich testen bevor Du das in einer produktiven Umgebung mal so eben änderst.

Dim

Bearbeitet von dr.dimitri
Link zu diesem Kommentar
Auf anderen Seiten teilen

Nach Möglichkeit würde ich auch eher versuchen, den jetzigen Index zu nem BigInt zu ändern und ggbnfalls die Software selbst anzupassen.

Zusammengesetzte Primärschlüssel kannst du zwar auch nutzen, aber aus Erfahrung weiß ich, dass man da doch ab und an ins Straucheln kommen kann... Also wenn du das auf nen zusammengesetzten Schlüssel änderst, dann teste wirklich alles mögliche durch, weil es doch recht "einfach" zu Problemen kommen kann :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Im laufenden Betrieb? Naja rein technisch gesehen wird der zugehörige Index ein bissl größer und es ist eben ein klein bissl auwändiger den PK zu validieren - in der Praxis aber meist unerheblich.

Die SQLs müssen natürlich angepasst werden, da der Zugriff auf nur eine Spalte ggf. kein eindeutiges Ergebnis mehr bringt.

Tabellenm, die den ursprünglichen PK referenzieren müssen natürlich auch entsprechend angepasst werden. Ebenso die SQLs die diese untergeordneten Tabellen befüllen. Ich würde das sehr gründlich testen bevor Du das in einer produktiven Umgebung mal so eben änderst.

Was muss ich da testen? :confused: - sorry, da kenn ich mich wohl zu wenig mit aus...

Andere Tabellen greifen ja nicht auf den zusammengesetzten Primärschlüssel zu.

Nach Möglichkeit würde ich auch eher versuchen, den jetzigen Index zu nem BigInt zu ändern und ggbnfalls die Software selbst anzupassen.

Funktioniert leider nicht, da dieser Wert nicht so recht mit Classic ASP funktionieren will, wenn ich mit RecordSets arbeite. (dafür verwende ich bald ein Formular, um eventuell Datensätze dieser Tabelle zu löschen)

Zusammengesetzte Primärschlüssel kannst du zwar auch nutzen, aber aus Erfahrung weiß ich, dass man da doch ab und an ins Straucheln kommen kann...

Was genau heißt das jetzt für mich? :o

Im Moment würde ich ja noch nicht auf diesen zusammengesetzten Primärschlüssel zugreifen. Das erfolgt dann nur über das oben angesprochene Formular. Sonst greife ich immer über andere Spalten der Tabelle auf die Daten zu.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was muss ich da testen?

Ganz einfach. Du baust Dir eine Testumgebung, führtst deine Änderung aus und prüfst ob alles noch so funktioniert wie es sollte.

Andere Tabellen greifen ja nicht auf den zusammengesetzten Primärschlüssel zu.

Also wenn es keine FKs gibt, die diesen PK referenzieren und es auch keine SQLs gibt, die den PK verwenden, dann sollte das gehen - rein theoretisch.

Dim

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...