Einfache Datenbanktabellen: Würdet ihr über ID oder Bezeichnung in die Tabelle gehen?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Konzeptionell sollten IDs immer auch unique sein. In wieweit (zumindest innerhalb einer Verwaltungaeinheit) der Abteilungsname eindeutig ist, lasse ich offen.

In letzter Konsequenz wäre es sinnvoll etwas zu nehmen, zu dem auch ein Index existiert (was bei Primärschlüsseln eigentlich immer zutrifft).

"ID" ist relativ.
Es ist wichtig, dass es in Datenbank-Tabellen einen eindeutigen Schlüsselwert gibt.

Ob der eine automatisch vergebene ID ist oder ein anderer Wert wie "Name" ist dabei unerheblich. Wichtig ist, dass dieser Wert EINDEUTIG und UNVERWECHSELBAR ist.
(Wobei ich die Bezeichnung "Name" in Deiner Beispieltabelle schon für suboptimal halte!)

Ich nutze immer dann eine automatische ID, wenn es bei den anderen Werten zu Dopplungen kommen kann - z. B. bei (Kunden)Namen.
Und auch dann, wenn sich die Bezeichnungen ändern können - wie z. B. Namen oder Abteilungen.

Suboptimierer 
Fragesteller
 26.01.2022, 11:10

Im Prinzip könnte man immer eine ID verwenden. Faktisch sehe ich selten in der Praxis anders definierte Primärschlüssel. Jede Tabelle hat eine ID und diese ist automatisch der Primärschlüssel.

0
mchawk777  26.01.2022, 11:14
@Suboptimierer
Im Prinzip könnte man immer eine ID verwenden.

Das ist korrekt.
Es ist nur nicht immer praktikabel.
Beispielsweise bei einer Zuordnungstabelle von Bankleitzahlen zu Banken würde ich keine ID verwenden sondern die BLZ selbst als Schlüsselwert nutzen.

1
Suboptimierer 
Fragesteller
 26.01.2022, 11:18
@mchawk777

Ja, oft gibt es mehrere, eindeutige Felder oder Feldgruppen, aber selbst in der Bankleitzahlentabelle würde man eine ID-Spalte anlegen.

Ich meine klar, wenn man sich diesem Usus bewusst widersetzen will, kann man die ID-Spalte weglassen, aber meistens werden die Datenbanken so modelliert, dass es trotzdem eine ID-Spalte gibt.

Selektieren kann man selbstverständlich auch über andere, eindeutige Schlüssel.

0
mchawk777  26.01.2022, 11:28
@Suboptimierer

Das mache ich in der Regel auch so - dann läuft die ID halt "nebenher", wenn ich sie zur Zuordnung nicht dringend brauche. 😉

1
Suboptimierer 
Fragesteller
 26.01.2022, 11:33
@mchawk777

Speziell bei den Bankleitzahlen hat man ja das Problem, dass heutzutage die Bankleitzahlen gar nicht immer bekannt sind. Sie wurden abgelöst durch die IBAN.

Hat man damals die Bankentabelle ohne ID angelegt mit Primärschlüssel auf die Spalte Bankleitzahl, hätte man heute ein Problem. Die ganzen Select-Anweisungen, die die Bank anhand der BLZ nachlesen, müssten überarbeitet werden und das Eindeutigkeitsmerkmal in der Tabelle müsste auf die IBAN gemünzt werden und zu jeder BLZ müsste die IBAN bestimmt werden.

Eigentlich ein gutes Beispiel dafür, dass man immer eine ID haben sollte, aus Konsequenz und weil man damit auf der sicheren Seite ist.

1

Soweit ich weiß sind (richtige) IDs sowieso nicht zum Ändern gedacht.

Wenn man bedenkt, dass SQL Datenbanken häufig bei einem UPDATE sowieso den ganzen Eintrag entfernen und neu einpflegen, macht es nur Sinn eine ID nicht zu ändern.

Suboptimierer 
Fragesteller
 26.01.2022, 10:57

Verstehe. Es wird heutzutage noch nicht einmal häufig gelöscht, weil dann die Rückverfolgbarkeit nicht mehr gewährleistet wird. Da wird mehr mit Flags gearbeitet.

Ich denke, ich werde dann die IDs als Konstanten fest im Quelltext verankern.

0
Serius  26.01.2022, 11:02
@Suboptimierer

Viele Datenbanken erstellen übrigens zu jedem Eintrag auch eine interne ID. Selbst wenn du dann eine eigene ID in der Datenbank hast, gibt es noch dazu die interne ID, die von der Datenbank selbst verwaltet wird. Aber das nur nebenbei.

1

Ich würde immer eine interne ID verwenden, die sich nie ändert.

Woher ich das weiß:Studium / Ausbildung – Elektronik studiert, Abschluss als Dipl.-Ing.