Kopf-/Stammtabelle&Positionstabelle Access

Hallo zusammen,

Meine Frage dreht sich um die Erstellung von Datenbanken in Microsoft Access. Ich arbeite mit Access 2003.

Meine genaue Frage ist folgende:
Unzwar wird ja des öfteren eine Kopf- bzw. Stammtabelle (in der beispielsweise Auftragsnummer, Artikelnummer, Kundennummer etc. stehen) und eine Positionstabelle mit den einzelnen Posten zu dem Auftrag (wie Material usw.).
Wofür genau müssen diese Tabellen erstellt werden,also welchen Sinn haben sie, und was genau kommt in die Kopftabelle und was in die Positionstabelle?

Über eine Antwort würde ich mich sehr freuen!
Danke schonmal im vorraus!

Grüße
Kai

Hallo Kai
Beiden verschiedenen Tabellen geht es darum doppelspurigkeiten zu vermeiden. Also keinen Datenmüll zu produzieren. Hast du eine Tabelle Kundennummer und die enthält schon die Adresse macht es nicht Sinn die Adresse bei einer Bestellung nochmals zu erfassen.

Bei mir ist der Unterschied zwischen Kopf und Positionstabelle der folgende:

Die Kopftabelle enthält die Adresse und die Positiontabelle die Bestellpositionen (Z.B.Artikel)

Es macht sich bezahlt vor der Erstellung der Datenbank zu überlegen was genau gebraucht wird und wie.

Gruss Stürgen

Hallo Kai,

in Datenbanken werden Tabellen mit einander verknüpft.
Es besteht meist eine 1:n Beziehung, d.h. ein Datensatz in einer Mastertabelle ist mit einem oder mehreren Datensätzen in einer Detailtabelle verknüpft. Neben den benötigten Datenfeldern wird noch eine Identifikationsnummer (id) zugefügt, über die die Tabellen verknüpft werden.
So erhält man eine platzsparende Datenstruktur.

Ein Beispiel:
Zu einem Auftrag gibt es einen oder mehrere bestellte Artikel.
Mastertabelle - id, Auftragsnr, Datum, Kundennr
Detailtabelle - id, Artikelnr, Artikelanzahl, Preis

Gruß
Horst Müller

Zu den Tabellen kurz ein kleines Beispiel:
Im Unternehmen gibt es Arbeiter und Angestellte. die Daten dieser Mitarbeiter werden in einer Stammtabelle eingegeben (z.B Personal-Stammsatz)d.h. pro Person ein Datensatz mit einer Personalnummer. Jeder Mitarbeiter erhält gezielte Vergütungen und Abzüge. Diese Bruttovergütungen und Nettoabzüge werden einzeln in den Positionstabellen mit Personalnummer gespeichert
(z.B. Brutto-Tabelle und Netto-Tabelle) Hier gibt es mehrere Datensätze mit gleicher Personalnummer = 1:n Beziehung. In den Brutto- und Netto-Tabellen werden keine weiteren Angaben wie Name, Wohnort usw gespeichert. Diese kan man mit einer Abfrage aus dem Personal-Stammsatz entnehmen und auswerten.
So wie hier im Beispiel gezeigt, gibt es in der Praxis hunderte von anderen Beispielen.

Hallo Kai,

über das Thema wurde schon halbe Bücher geschrieben.
Ein einfaches Beispiel:
Im Metallhandel: es gibt Schrauben, Muttern und Nägel, die Herr A und Frau B bestellen möchten.
Dafür gibt es 2 Kopftabellen (bitte je eine automatische Nummer vergeben, die dann das Schlüsselfeld wird) z.B.: Adressen und Artikel.
Dazu gibt es eine Bestellungstabelle, dort stehen die bestellten Artikel dann in Kurzform drin,die Spalten z.B.: Artikelnummer, Kundennummer, Bestelltag, Anzahl, Preis je Artikel.
Über eine Abfrage werden die 3 Tabellen verknüpft und dann hat man je Zeile alle möglichen Informationen.

Gruß Harald

Hallo Kai

In einem Unternehmen haben Stammdaten im Allgemeinen eine deutlich längere Lebensdauer als Andere, so das ein Datenverlust durch eine falsche Herangehensweise einen hohen Verlust bringen kann.
Ein Beispiel:
Eine einzelne Änderung (ein Kunde ändert z.B. seinen Wohnsitz) kann einen hohen Arbeitsaufwand beim Ändern aller diesbezüglicher Datensätze nach sich ziehen. Und es darf kein Datensatz mit Daten dieses Kunden übersehen werden

Es geht in einer gut organisierten relationalen Datenbankstruktur darum, so wenig wie möglich redundante Daten zu speichern. Eine optimale Aufteilung der einzelnen Tabellen in einer Datenbank nennt man auch ‚Normalisierung‘.

Es gibt die „Erste Normalform“, die „Zweite Normalform“ sowie die „Dritte Normalform“ zum Normalisieren von relationalen Datenbanken.

Die einzelnen durch Normalisierungen entstandene Tabellen müssen durch Beziehungen miteinander verknüpft werden.

1:n-Beziehung:
Zu einem Datensatz in Tabelle 1 können beliebig viele Datensätze in Tabelle 2 existieren.

m:n-Beziehung:
1 Rechnung kann mehrere Artikel haben. 1 Artikel kann in mehreren Rechnungen auftreten.

Im Internet findet man hierzu bestimmt tiefgreifende Erläuterungen.

Gruß Wolfgang

Hallo Kai,
der einzige Zweck solcherlei Aufteilung der Daten in Kopf und Positionsdaten ist zu vermeiden, dass Daten doppelt und dreifach eingegeben werden müssen.
Sieht man sich z.B. eine normale Auftragsbestätigung an, so ist auf dieser die Auftraggeberadresse nur einmal vorhanden, und nicht pro Position.
Allerdings sollte auch die Adresse des Auftraggebers in einer eigenen Tabelle (z.B. Kundentabelle) gespeichert sein, und im Datensatz des Auftrages wird nun nur noch die Kundennummer angegeben. So muss auch die Adresse nur einmal eingegeben werden, und nicht für jeden Auftrag neu erfasst werden.
Der Inhalt der einzelnen Tabellen hängt von den Objekten ab deren Daten sie enthalten.
So enthält eine Kundentabelle z.B. den Namen des Kunden, seine Adresse, seine Zahlungsbedingungen und als Schlüsselfeld (eindeutig) seine Kundennummer.
In der Tabelle für Aufträge sind klassischerweise dann die Daten des Auftrags enthalten (Auftragsnummer, Kundennummer, Auftragsdatum). Da es für jeden Auftrag wiederum eine oder mehrere Positionen geben kann enthält die Tabelle für die Postionen die Auftragsnummer zur Verbindung zum dazugehörigen Auftrag und ansonsten die Daten zur Position (Positionsnummer, Artikelnummer, Anzahl, Einzelpreis).
Mann muß also vor der Anlage der Tabellen genau überlegen, zu welchem Objekt welche Daten gehören und dann die Felder in den entsprechenden Tabellen anlegen.

Viel Erfolg

Gruß
LukBaumann

Hallo, kann dir leider nicht weiterhelfen!

Hi Kai,
der Sinn erschließt sich dir schnell, wenn du anfängst, dein Geschäft ohne Struktur zu protokollieren. Wenn du zum x. mal zur Bestellung eines Kaugummis Herstelleradresse, Geschmack, Packungsmaße … notiert, dasselbe für die Rechnung wiederholt und anschließend bei Diskrepanzen überlegt hast, was wohl stimmt, wirst du dich fragen, ob du eigentlich Romane schreiben oder Kaugummis verkaufen wolltest. Erstmal wirst du versuchen, alles nur einmal aufzuschreiben. Und um dich darin zurechtzufinden, brauchst du eine Ordnung, die durch dein Geschäft vorgegeben wird.
Geleistet wird das durch das Entity-Relationship-Modell, das jeder Art von Ding und Vorgang eine spezielle Tabelle zuordnet.
Damit und mit anderen Datenbank-Grundlagen solltest du dich ernsthaft beschäftigen, bevor du eine Datenbank anlegst. Die Frage ausführlich zu beantworten hieße ein Tutorium zu schreiben, das du im Internet oder im Buchladen leicht findest. Nimm dir die Zeit dafür, sie wird sich 10mal auszuzahlen.

Hallo,
ich empfehle MARKT und TECHNIK ACCESS2003 dann von vorne anfangen zu lesen.
Im Ernst wenn du den Zusammenhang von Beziehungen in einer Datenbank noch nicht kennst dann solltest du erst einmal mit ganz einfachen Beispielen aus dem Internet anfangen und dir bei diesen die Beziehungen der Tabellen ansehen.
Die vielen Möglichkeiten einer relationalen Datenbank übersteigen das was man in einer Mail beantworten kann bei weitem.
Wenn du ein einfaches Beispiel möchtest werde ich dir das gerne per E-Mail schicken, aber auch im Netz gibt es genug. Die orginal Nordwind Beispieldatei ist gut dafür zu gebrauchen.

mfg
Frank

Hallo Kai,
um etwas Licht ins Dunkel zu bringen, ist die Bezeichnung Kopf- und Positionstabelle selbst für mich neu, ich glaube aber zu wissen, was Du meinen könntest: Wenn jemand zum Beispiel ein Geschäft besitzt und Artikel an Kunden verkaufen will, möchte er die Rechnungsschreibung vom PC aus erledigen. Das geht zur Not sogar mit EXCEL. In jede Zeile wird das Datum, die Rechnungsnummer, der Kunde mit Anschriftsdaten (vielleicht 5 Spalten mit Name, Vorname, Straße usw.) der Artikel (3 Spalten mit Nummer, Bezeichnung und Einzelpreis), die Menge und die Gesamtsumme (die wird Gott sei Dank automatisch berechnet!). Du siehst, die Tabelle wird sehr schnell unübersichtlich von der Spaltenanzahl. Damit aber nicht genug: Vielleicht will der Kunde ja noch einen weiteren Artikel kaufen, dann also das gleich Spiel eine Zeile tiefer, mit derselben Rechnungsnummer.
Mit ACCESS wäre diese Aufgabenstellung wesentlich ökonomischer zu lösen: Man legt sich für seine Kunden und Artikel jeweils eine Tabelle an, mit einem eindeutigen Schlüsselfeld (Personalnummer und Artikelnummer), das nur einmal in der Tabelle vorkommen darf, und den persönlichen Daten. Als nächstes erstelle ich eine Tabelle „Rechnungskopf“ (hier ist vermutlich die besagte erste von Dir genannte Tabelle) mit Rechnungsnummer als eindeutiges Schlüsselfeld, Rechnungsdatum und Personalnummer (aus der Kundentabelle!). Die vorletzte Tabelle heißt z. B. „Rechnungsdetails“, diese enthält (wie empfohlenermaßen jede ACCESS-Tabelle) ein Schlüsselfeld (kann ein Autowert-Feld sein) die Rechnungsnummer (aus der Tabelle „Rechnungskopf“), Artikelnummer (aus der Tabelle "Artikel), und die Menge.
Das hört sich erst einmal ziemlich kompliziert an, erspart aber jede Menge Eingabearbeit, da alle Daten über die jeweiligen Schlüsselfelder abgefragt und über Formulare dargestellt werden können.
Der Schlüssel zum Erfolg ist die Beziehung, in die die Tabellen miteinander gestellt werden.
Einfach mal im Internet nach 1:n Beziehung in ACCESS suchen
Gruß

Hallo,

ja im Prinzip war die Antwort schon selbst gegeben.
Im Kopf die allgemeinen Daten im Detail die zugehörigen Detaildaten. Über die Beziehung (Verknüpfung) zwischen beiden wird der Zusammenhang hergestellt. Der Vorteil zu einem Auftrag kann ich beliebig viele Positionen hinzugeben.
Hoffe das erklärt es etwas.

Beste Grüße

Frank Seiler