PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Primärschlüssel in Access Datenbank?


cereal
2004-11-05, 19:22:57
Hi Leude, seit kurzem befasse ich mich privat mit Access, frage mich aber wozu der Primärschlüssel gut ist. Rausgefunden habe ich bisher, dass er zum Verknüpfen zweier Tabellen dient, mehr aber auch nicht!
Bedeutet das, sobald man eine Abfrage erstellt, die sich auf zwei Tabellen bezieht, funktioniert das ohne Primärschlüssel nicht? Wäre sehr dankbar für eine Aufklärung :)


mfg


cereal

TheMaxx
2004-11-05, 19:45:30
Da müsste man jetzt aber weit ausholen, wenn nicht sogar gleich das ganze Prinzip von relationalen Datenbanksystemen erklären, um das im Zusammenhang verstehen zu können. Ich denk da sind diverse Bücher oder Internetseiten im Netz besser geeignet als die Antworten von mehreren Usern.

Grundsätzlich kann man aber sagen, dass Primärschlüssel dafür da sind, Datenbanksätze eindeutig beschreiben zu können. Die Spalte, die als PS definiert wird, muss eindeutige Werte haben, also kein Wert darf doppelt vorkommen. Denn sonst könnte man 2 Datensätze ja nicht mehr über den PS eindeutig ansprechen.

Muh-sagt-die-Kuh
2004-11-05, 20:01:48
Ein Primärschlüssel ist ein aus der Menge der Schlüsselkandidaten ausgewählter Schlüssel.

Das ist die Definition, nur wird jemand ohne Datenbanken-Kenntnisse nicht viel damit anfangen können ;)

cereal
2004-11-05, 20:08:09
shit :( ..... naja, ich werde es mal weiterhin probieren...... mal sehen wie weit ich komme


mfg

Lokadamus
2004-11-05, 21:50:45
mmm...

http://www.roro-seiten.de/info/db/03ERModell/ERModell.html
Der Primärschlüssel dient zur eindeutigen Identifizierung eines Objekts (im Normalfall eine Person durch Kundennummer oder Gegenstände im Falle von Lagerhaltung). Zu einer Kundennummer würde zum Beispiel immer eine Bestellung (später mehrere ;)), ein Name, eine Strasse, eine Liste von Sachen und eine Rechnung (später ebenfalls mehrere) gehören, dann gibs noch den Sekundärschlüssel usw. ...

Marcel
2004-11-05, 23:52:23
Neben der Identifikation von Datensätzen (die genannte Kundennummer ist da ein gutes Beispiel: Zu jeder Kundennummer gehört immer genau ein einziger Kunde; keine Kundennummer darf doppelt vergeben sein) wird der Primärschlüssel auch zum schnellen Auffinden von Datensätzen genutzt.
Denn die Datensätze werden nicht sortiert abgelegt, sondern jeder neu eingegebene Datensatz immer hinten an die Menge der bisher eingegebenen Datensätze hintendran. Wenn also ein neuer Kundendatensatz eingegeben wird, landet er immer hinten an der Datei mit den bisherigen Kundendatensätzen dran, egal ob es schon Kunden gibt, die eine größere oder kleinere Kundennummer haben. Zusätzlich zum Datensatzhaufen wird aber ein Index abgelegt, in dem jede vergebene Kundennummer und dazu zu jeder Kundennummer die Position des dazugehörigen Kundendatensatzes im Kundendatensatzhaufen gespeichert sind. Also für jeden Kundendatensatz findest Du im Index zwei Angaben: Die Kundennummer, und die Stelle, wo der Kundendatensatz zu finden ist.
Und das geilste am Index: Der ist nach dem Primärschlüsselfeld, in diesem Falle also die Kundennummer, sortiert.
Sprich, wenn Du den Kunden 4712 suchst, musst Du nicht den gesamten, unsortierten Kundendatensatzhaufen durchwühlen, sondern nur im sortierten Index danach suchen (was zum Beispiel per binärer Suche rasend schnell geht; bei einer Million Kundennummern brauchst Du nur höchstens 20 mal reinstochern, und Du hast die Kundennummer garantiert gefunden; in der Praxis werden noch geilere Konzepte eingesetzt, nämlich B-Bäume und ähnliches).

Ein Index zum schnellen Auffinden wird übrigens nicht nur für den Primärschlüssel, sondern auch für jeden Sekundärschlüssel angelegt. Wenn Du zum Beispiel einen Sekundärschlüssel für das Feld Telefonnummer erstellst, kannst Du im Kundendatensatzhaufen superschnell nach einem Kunden suchen, wenn Du nur die Telefonnummer kennst.

Und jetzt stell Dir mal vor, Du hast eine Videothek und willst eine Liste aller DVDs ausdrucken, inklusive des Namens des Kunden, der die DVD gerade ausgeliehen hat.
Bei jedem DVD-Datensatz steht jetzt nur die Kundennummer des Kundens drin, der die DVD ausgeliehen hat. Du kannst aber zu jeder DVD über die Kundennummer superschnell den Namen des Kundens im Kundendatensatzhaufen nachlesen - eben weil da ein Index drauf ist.
(Bei ernstzunehmenden Datenbankmanagementsystemen funktioniert das auch mit Sekundärschlüsseln, bei Access bin ich mir da nicht so sicher.)
Wenn aber kein Index drauf wäre, müsste für jede DVD, die mitsamt des Kundennamens ausgegeben werden soll, der gesamte Kundendatensatzhaufen durchwühlt werden. Und das wäre so langsam, dass sogar Microsoft ein solches Vorgehen verhindert. Theoretisch möglich, praktisch aber grausam.

cereal
2004-11-06, 10:43:07
danke :) damit kann ich mir schon eien etwas bessere vorstellung schaffen....


mfg

GBWolf
2004-11-06, 13:35:23
Hi Leude, seit kurzem befasse ich mich privat mit Access, frage mich aber wozu der Primärschlüssel gut ist. Rausgefunden habe ich bisher, dass er zum Verknüpfen zweier Tabellen dient, mehr aber auch nicht!
Bedeutet das, sobald man eine Abfrage erstellt, die sich auf zwei Tabellen bezieht, funktioniert das ohne Primärschlüssel nicht? Wäre sehr dankbar für eine Aufklärung :)


mfg


cereal

Primärschlüssel=einmalig in der Tabelle, daher ist der DAtensatz einmalig identifieziert, selbst wenn alle andern Felder die lgeichen Daten beinhalten, de rPrimärschlüssle ist unterschiedlich, der dient grundsätzlich eigentlich nur zur identifikation der Datensätze, daraus kann man noch ne menge mehr anstellen, aber die Funktion der Primärschlüssel ist einfach nur die Eindeutige identifikation eines DAtensatzes.

Gast
2004-11-06, 18:04:00
Denn die Datensätze werden nicht sortiert abgelegt, sondern jeder neu eingegebene Datensatz immer hinten an die Menge der bisher eingegebenen Datensätze hintendran. Wenn also ein neuer Kundendatensatz eingegeben wird, landet er immer hinten an der Datei mit den bisherigen Kundendatensätzen dran, egal ob es schon Kunden gibt, die eine größere oder kleinere Kundennummer haben. Zusätzlich zum Datensatzhaufen wird aber ein Index abgelegt, in dem jede vergebene Kundennummer und dazu zu jeder Kundennummer die Position des dazugehörigen Kundendatensatzes im Kundendatensatzhaufen gespeichert sind. Also für jeden Kundendatensatz findest Du im Index zwei Angaben: Die Kundennummer, und die Stelle, wo der Kundendatensatz zu finden ist.
Und das geilste am Index: Der ist nach dem Primärschlüsselfeld, in diesem Falle also die Kundennummer, sortiert.
Anzumerken ist hier noch, daß man einen Index auch übere andere Spalten als den Primärschlüssel anlegen kann.

Marcel
2004-11-07, 20:55:49
Anzumerken ist hier noch, daß man einen Index auch übere andere Spalten als den Primärschlüssel anlegen kann.
Richtig; das wären dann die Sekundärindizes (s.o.).