Einzelnen Beitrag anzeigen

Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#14

Re: Definition "Schlüssel" in einer Datenbank

  Alt 19. Dez 2006, 09:18
Zitat von alzaimar:
Daneben gibt es dann eine Reihe weiterer (zusammengesetzter) Schlüssel, die aber eines gemeinsam haben: Sie sind eindeutig! Insofern ist die Wiki-Definition korrekt. Selbst ein scheinbar mehrdeutiger Schlüssel ist intern eindeutig, weil die Datensatz-ID (Record-ID) mit abgespeichert wird. Schliesslich muss die DB-Engine ja den zu dem Schlüssel gehörigen Datensätz finden können.

...

Die Tabelle "AbteilungMitglieder" definiert die Relation (Mitarbeiter) "ist Mitglied von" (Abteilung). Damit hättest Du deine m:n Beziehung. Jeder Mitarbeiter kann in beliebig vielen Abteilungen sein und jede Abteilung kann beliebig viele Mitarbeiter beinhalten.

Hoffe, mich nicht verhaspelt zu haben :freak:
Hallo,

das mag eine (für dich) wünschenwerte Theorie sein, das, was ich beschrieben habe, ist aber Realität und seit mehr als 20 Jahren so problemlos in der Industrie im Einsatz:

1. Natürlich ist der Primärschlüssel eindeutig - in der Tabelle, in der er eben der Primärschlüssel ist. Nicht aber in einer anderen Tabelle, eben wegen der Möglichkeit von 1:n-Beziehungen. Konkret: Die Kundennummer ist eindeutig in der Tabelle Kunden, nicht aber in der Tabelle Auftrag, da gibt es mehrere zum gleichen Kunden. Wenn einem dabei wohler ist, kann man das ja dort als Index-Schlüssel bezeichnen oder Sekundär-Schlüssel, was anderes habe ich auch nicht behuptet. Dass dieser intern durch Anhängen von IDs eindeutig gemacht würde, ist falsch - ich kenne die Index-Strukturen auf Binärebene, da steht tatsächlich nur die Kundennummer drin.

2. Eine Folge davon ist, dass die Tabelle AbteilungMitglieder überhaupt nicht gebraucht wird. Ein (nicht eindeutiger) Index über die Spalte Abteilung in der Tabelle Mitglieder liefert das Gewünschte.

Das mag nach Paradox klingen (wäre das eine Schande?), gilt aber für die meisten Datenbanken der 80iger Jahre. Deine Behauptung, das wäre alles funktionsunfähig, wird durch tausende von noch arbeitenden Programmen widerlegt. Wenn du nur sagen willst, der grösste Teil der heute existierenden Software wäre deiner Meinung nach falsch programmiert, damit könnte man leben.

Gruss Reinhard
  Mit Zitat antworten Zitat