Inhaltsverzeichnis (wesentliche Punkte)
2 Datenbanken - Theorie kurz & bündig
2.1 Was ist eine Datenbank?
2.2 Merkmale eines Datenbankprogramme
2.3 Relationale Datenbank
3 Datenbanken - Theorie ausführlich
3.1 Manuelle Datenbanken
3.2 EDV-gestützte Datenbanken
3.3 Die Tabelle in der Datenbank
3.4 Datensatzaufbau
3.5 Relationale Datenbank
3.6 Was sind Primärschlüsselfelder und Fremdschlüsselfelder?
3.7 Beziehungen
3.7.1 Die 1:n-Beziehung
3.7.2 Die n : m-Beziehung
3.7.3 Die 1 : 1-Beziehung
3.8 Referentielle Integrität
3.9 Die Normalformen
3.10 Indizes
4 Die Benutzeroberfläche
4.1 Die Oberfläche nach dem Start
4.2 Was es sonst noch so gibt
5 Die erste Tabelle
5.1 1. Vorüberlegung
5.1.1 Aus wie vielen Tabellen soll die Datenbank bestehen?
5.1.2 Die Entwurfsansicht: Feldnamen, Felddatentyp und Feldgröße
5.1.3 Feldeigenschaften
5.2 Ungarische Notation
5.3 Eingabe von Feldnamen und ihren Eigenschaften
5.4 Bestimmung und Eingabe der Feldeigenschaften
5.4.1 Eingabe von Daten
5.4.2 Ändern der Datenstruktur
5.4.3 Bewegen in den Tabellen (Navigationssymbole und Tastaturbelegung)
5.4.4 Datensätze in der Tabellenansicht suchen
5.5 Tabellen verknüpfen
6 Eine Datenbank aufbauen
6.1 Beispiel: Bücherverwaltung
6.2 Reihenfolge der Datenbank-Erstellung
7 Daten eingeben und löschen
7.1 Dateneingabe
7.2 Datensatz löschen
8 Filtern und Sortieren
8.1 Sortieren
8.2 Filtern
8.3 Filter als Abfrage speichern
8.4 „Filtern nach“-Methode
8.5 Spezialfilter in Abfragen
9 Abfragen
9.1 Trennen von Daten und Pflege der selben
9.2 Was leisten Abfragen?
9.3 Wie erstellt man eine Abfrage?
9.4 Tabellenerstellungsabfrage
9.5 Die Aktualisierungsabfrage
9.6 Die Löschabfrage
9.7 Die Anfügeabfrage
10 Seriendruck in Word
11 Export der Daten nach Word oder Excel
12 Berichte - Kurzerläuterung
12.1 Kurzerläuterung Berichtserstellung
12.2 Tabellarischer Bericht
12.3 Bericht in Blöcken
13 Berichte - Drucken in Access
13.1 Listendruck mit dem Berichtsassistenten
13.2 2. Gruppierungen mit dem Assistenten
13.3 3. Seiteneinrichtung
14 Formulare - Kurzerläuterung
15 Formulare erstellen
15.1 Formulare mit dem Auto-Formular erstellen
15.2 Arbeiten mit Formularen
15.2.1 Bewegen in Formularen
15.2.2 Datensätze hinzufügen
15.2.3 Datensätze löschen
15.2.4 Speicherung von Eingaben und Änderungen
15.2.5 Änderungen rückgängig machen
15.2.6 Suchen und Ersetzen
15.3 Ändern eines Formularentwurfs
16 Unterdatenblätter einfügen
17 Etikettendruck
Inhaltsverzeichnis
1 Inhaltsverzeichnis
2 Datenbanken - Theorie kurz & bündig
2.1 Was ist eine Datenbank?
2.2 Merkmale eines Datenbankprogramms
2.3 Relationale Datenbank
3 Datenbanken - Theorie ausführlich
3.1 Manuelle Datenbanken
3.2 EDV-gestützte Datenbanken
3.3 Die Tabelle in der Datenbank
3.4 Datensatzaufbau
3.5 Relationale Datenbank
3.6 Was sind Primärschlüsselfelder und Fremdschlüsselfelder?
3.6.1 Primärschlüsselfeld
3.6.2 Fremdschlüsselfeld
3.7 Beziehungen
3.7.1 Die 1:n-Beziehung
3.7.2 Die n : m-Beziehung
3.7.3 Die 1 : 1-Beziehung
3.8 Referentielle Integrität
3.9 Die Normalformen
3.9.1 Erste Normalform (1. NF)
3.9.2 Zweite Normalform (2. NF):
3.9.3 Dritte Normalform (3. NF)
3.10 Indizes
4 Die Benutzeroberfläche von Access
4.1 Die Oberfläche nach dem Start von Access
4.2 Was es sonst noch so gibt
5 Die erste Tabelle
5.1 1. Vorüberlegung
5.1.1 Aus wie vielen Tabellen soll die Datenbank bestehen?
5.1.2 Die Entwurfsansicht: Feldnamen, Felddatentyp und Feldgröße:
5.1.3 Feldeigenschaften.
5.2 Ungarische Notation
5.3 Eingabe von Feldnamen und ihren Eigenschaften.
5.4 Bestimmung und Eingabe der Feldeigenschaften
5.4.1 Eingabe von Daten
5.4.2 Ändern der Datenstruktur
5.4.3 Bewegen in den Tabellen (Navigationssymbole und Tastaturbelegung)
5.4.4 Datensätze in der Tabellenansicht suchen
5.5 Tabellen verknüpfen
6 Eine Datenbank aufbauen
6.1 Beispiel: Bücherverwaltung.
6.2 Reihenfolge der Datenbank-Erstellung
7 Daten eingeben und löschen
7.1 Dateneingabe
7.2 Datensatz löschen
8 Filtern und Sortieren
8.1 Sortieren
8.2 Filtern
8.3 Filter als Abfrage speichern
8.4 „Filtern nach“-Methode
8.5 Spezialfilter in Abfragen
9 Abfragen
9.1 Trennen von Daten und Pflege der selben
9.2 Was leisten Abfragen?
9.3 Wie erstellt man eine Abfrage?
9.3.1 Allgemeines
9.3.2 Eine Abfrage und ihr Dynaset - Eine Frage und ihre Antwort.
9.3.3 Spezielles: Beispiele, Übungen und Tricks
9.3.4 Komplexes
9.4 Tabellenerstellungsabfrage
9.5 Die Aktualisierungsabfrage
9.6 Die Löschabfrage
9.7 Die Anfügeabfrage
10 Seriendruck in Word
11 Export der Daten nach Word oder Excel
12 Berichte - Kurzerläuterung
12.1 Kurzerläuterung Berichtserstellung
12.2 Tabellarischer Bericht
12.3 Bericht in Blöcken
13 Berichte - Drucken in Access
13.1 Listendruck mit dem Berichtsassistenten
13.1.1 Der Assistent, was leistet er?
13.1.2 Nachbesserungen von Hand
13.2 2. Gruppierungen mit dem Assistenten
13.3 3. Seiteneinrichtung
14 Formulare - Kurzerläuterung
15 Formulare erstellen
15.1 Formulare mit dem Auto-Formular erstellen
15.2 Arbeiten mit Formularen
15.2.1 Bewegen in Formularen
15.2.2 Datensätze hinzufügen
15.2.3 Datensätze löschen
15.2.4 Speicherung von Eingaben und Änderungen
15.2.5 Änderungen rückgängig machen
15.2.6 Suchen und Ersetzen
15.3 3.Ändern eines Formularentwurfs
15.3.1 Formular in der Entwurfansicht
15.3.2 Erstellen einer Überschrift
15.3.3 Markieren von Steuerelementen
15.3.4 Verschieben von Steuerelementen
16 Unterdatenblätter einfügen
17 Etikettendruck
2 Datenbanken - Theorie kurz & bündig
2.1 Was ist eine Datenbank?
In einer Datenbank können Daten in Tabelle eingegeben werden, die sich auf einen gemeinsamen Themenbereich beziehen oder für einen bestimmten Zweck gedacht sind.
Beispiel:
- Personaldaten der Mitarbeiter
- Adressen der Mitarbeiter
- Gehaltslisten der Mitarbeiter
Ein Datenbankprogramm ist ein System, welches große Datenmengen in Tabellen speichert,verwaltet und den Zugriff auf die enthaltenen Daten regelt. Außerdem stellt ein Datenbankprogramm wie Access zahlreiche Werkzeuge zur Auswertung, Analyse, Bearbeitung und Präsentation der Daten bereit.
2.2 Merkmale eines Datenbankprogramms
Man kann die Daten einer Datenbank
- als Beziehungen zwischen Daten aus mehreren Tabellen definieren,
- beliebig bearbeiten und verändern,
- beliebig sortieren und nach bestimmten Kriterien filtern,
- mit Hilfe von Abfragen auswerten und
- mit Hilfe von Berichten übersichtlich ausdrucken.
Alle Eingaben wirken sich sofort auf die anderen Objekte aus: Wenn man z.B. in der Tabelle einen neuen Datensatz eingibt, so wird dieser bei einer schon bestehenden Abfrage gleich mit erfasst.
2.3 Relationale Datenbank
In einer relationalen Datenbank wird mit mehreren Tabellen gearbeitet (= Querverbindungen). Mit Hilfe von so genannten Schlüsselfeldern können Verknüpfungen zwischen den Tabellen erstellt werden. Die Datenmenge kann dadurch gering gehalten werden, da Daten nicht doppelt geführt werden müssen.
3 Datenbanken - Theorie ausführlich
Eine Datenbank ist eine Ansammlung von Informationen, die sich auf ein bestimmtes Thema oder einen bestimmten Zweck beziehen, z. B.: Bücher in einer Bibliothek, Waren im Warenlager oder Gehaltsabrechnungen im Betrieb etc., die verwaltet werden müssen.
In der Datenverarbeitung spricht man von einem Datenbanksystem, wenn dieses aus einer Datensammlung und einem Verwaltungssystem besteht. Die Datensammlung ist nach einer bestimmten Struktur aufgebaut und das Verwaltungssystem organisiert die Zugriffe auf die Datenbank und deren Bestand. Was aber bedeutet "...welches die Zugriffe auf die Datenbank und deren Bestand organisiert..." genauer?
Es bedeutet nichts anderes, als dass dieses Verwaltungssystem dem Nutzer ermöglicht, bestimmte Informationen (Daten) zu erfassen, zu speichern, wi eder aufzufinden, zu aktualisieren oder weitere Operationen mit den Daten durchzuführen, wie z. B. das Sortieren nach bestimmten Kriterien.
3.1 Manuelle Datenbanken
Ein Beispiel für manuelle Datenbanken sind Karteikästen. Das Auffinden der Daten wird hier durch zusätzliche Register erleichtert. Ein Karteikasten enthält zusammengehörende, nach bestimmten Kriterien geordnete Daten. Jede Karte enthält i. d. R. die gleiche, festgelegte Anzahl von Eintragungen. Der Benutzer erfasst seine Daten manuell auf eine Karteikarte und ordnet diese nach dem von ihm bestimmten Kriterien in seinen Karteikasten. Um Änderungen vornehmen zu können, muss er die entsprechende Karte aus dem Karteikasten heraussuchen, die Daten ändern und die Karte dann wieder an seinen Platz zurückstellen.
3.2 EDV-gestützte Datenbanken
Wie schon erwähnt, besteht eine EDV-gestützte Datenbank aus einer Datensammlung und einem Verwaltungsprogramm, das diese Datensammlung nach bestimmten Kriterien organisiert und kontrolliert.
Im Vergleich mit den oben genannten Datenbanken weisen EDV-gestützte Datenbanken erhebliche Vorteile auf. Sie erlauben
- bequemere Erfassung der Daten,
- schnelleres Finden,
- einfachere, z. T. automatische Aktualisierung der Daten,
- flexible, datenbankübergreifende Anordnung und Zusammenstellung von Daten, somit das
- Aufdecken bisher unbekannter Informationszusammenhänge und damit eine
- effektivere Auswertung der Daten.
Als Ergebnis kann man folgende Vergleiche und Erklärungen für herkömmliche Datenbanken und EDV-gestützte Datenbanken aufstellen:
Abbildung in dieser Leseprobe nicht enthalten
Ein Karteikastensystem enthält zusammengehörende, nach bestimmten Kriterien geordnete Karteien wie ein Datenbanksystem nur mit dem Unterschied, dass ein Datenbanksystem zusätzlich noch ein Verwaltungsprogramm besitzt.
Abbildung in dieser Leseprobe nicht enthalten
Jede Karte enthält i. d. R. die gleiche festgelegte Anzahl von Eintragungen.Ähnlich faßt eine Tabelle eine Datenmenge unter einem gemeinsamen Oberbegriff, dem Tabellenname, zusammen.
Abbildung in dieser Leseprobe nicht enthalten
Jede Karteikarte entspricht einem Datensatz. Als Beispiel steht auf einer Karte folgende Angabe:
2, Müller Michael, 50939 Köln.
Genauso enthält dementsprechend ein Datensatz die genannten Informationen.
Abbildung in dieser Leseprobe nicht enthalten
3.3 Die Tabelle in der Datenbank
Jede Datenbank besteht aus beliebig vielen, gleichartigen Datensätzen, wobei ein Datensatz einer Tabellenzeile entspricht. Jeder Datensatz besteht aus einer bestimmten Anzahl von Datenfeldern, hier entspricht jedes Feld einer Tabellenspalte. Es ergibt sich somit insgesamt ein tabellenartiger Aufbau.
Die folgende Abbildung zeigt die vereinfachte Darstellung der Datenbankdatei „Kunde“ in Form einer Tabelle.
Abbildung in dieser Leseprobe nicht enthalten
Die Tabelle ´Kunden´ hat fünf Datenfelder oder Attribute, die jeweils durch einen eindeutigen Namen definiert sind. Hier: Kundennr., Nachname, Vorname, PLZ und Ort.
Jeder Datensatz dieser Tabelle setzt sich zusammen aus genau fünf Datenfeld-Werten und hat somit die gleiche Datenstruktur. Er zeigt zusammengehörige Informationen zu einem Kunden in einer Zeile an. Als Beispiel: Der Kunde ´Michael, Müller´ mit der Kundennr. ´2´, Wohnort in ´Köln´ und der PLZ = ´50939´.
3.4 Datensatzaufbau
Der erste Schritt bei der Erstellung einer Datenbankdatei ist die Festlegung des Datensatzaufbaus (Struktur), also die Herstellung der Definition der erforderlichen Datenfelder eines Datensatzes. Für jedes einzelne Datenfeld müssen die nun folgende Merkmale angegeben werden:
- Datenfeldname
- Datenfeldtyp
- Datenfeldlänge
Datenfeld-Name
Der Datenfeld-Name sollte auf den Verwendungszweck des Feldes hinweisen. Die Datenfeldnamen der Tabelle ´Kunde´ heißen in diesem Beispiel: ´Kundennr´ ´Name´, ´Vorname´, ´PLZ´ und ´Ort´. Man könnte auch noch als Präfix (Vorsilbe) eine Abkürzung des Datenfeldtypes schreiben.
Datenfeld-Typ
Der Datenfeld-Typ richtet sich nach dem geplanten Verwendungszweck. Man unterscheidet hier z. B. Text und Zahlenfelder. Während Textfelder lediglich "starre" Informationen enthalten, können mit den Inhalten der Zahlenfelder Berechnungen durchgeführt werden. Als Beispiel hierfür ist der Datenfeld-Typ für das Datenfeld ´Name´ gleich ´Text´.
Datenfeld-Länge
Für jedes Datenfeld muss eine genaue Länge festgelegt werden, um entsprechend Platz für den Feldeintrag zu schaffen. Z. B braucht das Feld PLZ genau 5 Zeichen, der Ort braucht sicher mehr und die Kundennummer eventuell auch. Man muss sich also frühzeitig überlegen, wie viel Einträge man an jeder Stelle braucht.
3.5 Relationale Datenbank
Microsoft Access ist ein relationales Datenbank-Managementsystem. Relational ist eine Datenbank, wenn die einzelnen Tabellen untereinander in einer Beziehung (Relationalität) stehen können. Dieses setzt natürlich voraus, dass die Datenbank aus mehreren Tabellen besteht. Eine nichtrelationale Datenbank kann nur aus einer Tabelle bestehen (MS Works besitzt z. B. eine solche Datenbank, oder aber auch Excel). Der Nachteil bei nicht-relationalen Datenbanken sind u. a. redundante, also sich wiederholende Informationen, die man in die Tabelle eintragen muss.
Eine Access-Datenbank enthält im Normalfall mehrere Tabellen und zusätzlich Informationen darüber, wie die Tabellen zusammenhängen. Ein Beispiel:
An der Universität gibt es eine Datenbank, in der alle Studenten der Universität mit ihren persönlichen Daten (Matrikelnummer, Name, Adresse, Fachbereiche etc.) eingetragen werden. In der Regel ist ein Student in mehreren Fachbereichen eingeschrieben. Bestünde die Datenbank aus nur einer Tabelle, müsste für jeden Fachbereich eine eigene Zeile angelegt werden, die jeweils die selben persönlichen Daten enthält.
Eine große Tabelle für alle Informationen
Abbildung in dieser Leseprobe nicht enthalten
Erstens enthält diese Tabelle redundante Informationen (Vorname, Nachname, Ort). Zweitens müsste man bei einem Umzug der Person deshalb diesen in jeder Zeile vornehmen. Ein großer Aufwand.
Gibt es nun mehrere Tabellen die man zueinander in Beziehung setzten kann, wird die Änderung der Adresse nur einmal in der Tabelle für Adressen vorgenommen und danach mit der Tabelle für die Matrikelnummer verknüpft. So kann jeder Fachbereich, in den sich der Student eingeschrieben hat, über die Matrikelnummer auf die aktuelle Adresse zugreifen. Das ist mit Access möglich.
Tabelle 1
Abbildung in dieser Leseprobe nicht enthalten
Tabelle 2, die mit der ersten verknüpft ist
Abbildung in dieser Leseprobe nicht enthalten
In diesem Beispiel enthält die erste Tabelle z. B. die persönlichen Daten aller Studenten, die zweite alle Fachbereiche, in denen sich ein Student eingeschrieben hat. Will man nun die Adresse des Studenten herausbekommen, sucht man in der ersten Tabelle nach dem Datensatz, der die jeweilige Matrikelnummer enthält (in Access geht das über eine Abfrage sehr schnell, was später erklärt wird).
3.6 Was sind Primärschlüsselfelder und Fremdschlüsselfelder?
3.6.1 Primärschlüsselfeld
Ein Primärschlüsselfeld ist ein besonderes Feld (Spalte) einer Tabelle. In dieser Spalte darf jeder Wert nur einmal vorkommen. Duplikate sind nicht erlaubt. Dieses Feld verknüpft eine Tabelle mit der anderen und dient zur eindeutigen Zuordnung der verschiedenen Daten aus mehreren Tabellen. Ein einzelner Wert in diesem Feld ist der Primärschlüssel.
In der obigen Tabelle 1 ist die Matrikelnummer der Primärschlüssel. Dieser Wert kommt nur einmal vor, so dass man genau weiß welcher Student gemeint ist, auch wenn Studenten dieselbe Adresse oder denselben Namen haben. Wenn man den Primärschlüssel gestaltet, sollte man ihn sprechend machen, das heißt: Im Primärschlüssel sollte man schon erkennen, was den Datensatz ausmacht. So könnte man eine Personalnummer aus drei Buchstaben Vorname, drei Buchstaben Nachname und einer laufenden Nummer erzeugen. Leider ist das bei den Matrikelnummern nicht der Fall…
Der eigentliche Witz am Primärschlüssel wird deutlich, wenn man zwei Tabellen miteinander verknüpfen, also in Beziehung zueinander setzen will.
3.6.2 Fremdschlüsselfeld
Ein Fremdschlüsselfeld ist ein Feld in einer Tabelle, das in einer anderen Tabelle Primärschlüsselfeld ist. Das Fremdschlüsselfeld enthält dieselben Werte, wie das Primärschlüsselfeld, nur dass diesmal die Daten mehrmals, keinmal oder nur einmal vorkommen können. Bezogen auf das obige Tabellenbeispiel bedeutet dies, dass sich ein Student entweder in einem oder mehreren Fachbereichen einschreibt. Der Fremdschlüssel bildet das Gegenstück der Beziehung, verbindet also zwei Datensätze aus unterschiedlichen Tabellen, hier die Datensätze der Tabelle Matrikelnummer und der Tabelle Fachbereiche.
3.7 Beziehungen
Dass Tabellen miteinander in Beziehung stehen, wurde schon erwähnt. Eine Beziehung stellt die logische Verbindung zwischen zwei Tabellen dar. Wie sehen die Beziehungen genau aus bzw. wie müssen sie aussehen, damit die ganze Datenbank auch funktioniert?
In Access gibt es drei Arten von Beziehungen:
1. die 1 : n-Beziehung
2. die n : m-Beziehung und
3. die 1 : 1-Beziehung.
3.7.1 Die 1:n-Beziehung
Die 1er-Seite besteht aus einer Tabelle die keine redundanten Informationen enthält, ein Wert in einer Spalte also nur einmal vorkommt. Diese wird auch Mastertabelle genannt. Die Tabelle, die die n-Seite der Beziehung darstellt, kann diesen Wert mehrmals (n = unendlich) oder gar nicht enthalten. Diese ist die Detailtabelle. Anders gesagt: bei einer derartigen Beziehung entsprechen einem Datensatz (Tabellenzeile) in der Mastertabelle mehrere Datensätze in der Detailtabelle, wobei mehrere auch die Zahl 0 einschließt.
Beispiel:
Das Prüfungsamt einer Universität braucht eine Datenbank, die in der ersten Tabelle für Matrikelnummern (Mastertabelle) alle Studenten des Fachbereiches Erziehungswissenschaft auflistet. In einer zweiten Tabelle für Prüfungen (Detailtabelle) werden alle Studenten, die in diesem Fachbereich schon eine Prüfung absolviert haben, eingetragen. Weiterhin werden in diese noch Prüfungstitel, Note, Datum und Prüfer vermerkt.
Mastertabelle (Tabelle Matrikelnummer)
Abbildung in dieser Leseprobe nicht enthalten
In der Mastertabelle darf die Matrikelnummer nur einmal vorkommen, da das Feld Matrikelnummer Primärschlüssel ist.
Detailtabelle (Tabelle Prüfungen)
Abbildung in dieser Leseprobe nicht enthalten
In der Detailtabelle wird das Primärschlüsselfeld zum Fremdschlüsselfeld (Matrikelnummerfeld in der Detailtabelle) und stellt die andere Seite der Beziehung dar. Die Logik dieser Tabelle erfordert, dass die Matrikelnummer mehrmals oder gar nicht auftauchen darf. In der Detailtabelle gilt es nämlich festzuhalten, welche Prüfungen Student 1234567 wann und bei wem abgelegt hat. Ein Student legt mit der Zeit mehrere Prüfungen ab, weswegen eine Matrikelnummer mehrmals auftauchen können muss. Umgekehrt kann eine Prüfungsbenotung einem Studenten über die Matrikelnummer genau zugeordnet werden. Auch erfährt man, dass Student 14151617 noch keine Prüfungen absolviert hat, da er in der Tabelle für Prüfungen nicht eingetragen ist.
3.7.2 Die n : m-Beziehung
In einer n : m-Beziehung kann ein Datensatz in einem Feld der Tabelle 1 zu einen, keinen oder mehreren Datensätzen in Tabelle 2 in Beziehung gesetzt werden. Umgekehrt besteht von Tabelle 2 die gleichartige Beziehung zu Tabelle 1, dass also ein Datensatz der Tabelle 2 zu einem, keinem oder mehreren Datensätzen der Tabelle 1 zugeordnet werden können. In der 1 : n-Beziehung besteht diese Verbindung nur in einer Richtung, von der Mastertabelle zur Detailtabelle.
Die n : m-Beziehung kann nur indirekt über eine dritte Tabelle definiert werden. Die Tabelle 3 enthält die Primärschlüssel der Tabellen 1 und 2 als Fremdschlüssel, wodurch eine genaue Zuordnung der jeweiligen Primärschlüssel definiert ist.
Beispiel:
Die Universität will nicht nur die Prüfungen die ein Student abgelegt hat festhalten, sondern auch welcher Student welche Veranstaltungen besucht und welcher Professor die jeweiligen Seminare hält. Es muss also wieder eine Tabelle geben in der alle Studenten mit Matrikelnummer z.B. eines Fachbereichs eingetragen sind, eine zweite Tabelle in der alle Professoren mit Personalnummer und eine dritte Tabelle, die sowohl Matrikel- und Personalnummer enthält, als auch die Seminare. Diese dritte Tabelle setzt dann Tabelle 1 und 2 in Beziehung.
Tabelle 1
Abbildung in dieser Leseprobe nicht enthalten
In Tabelle 1 ist die Matrikelnummer wieder der Primärschlüssel.
Tabelle 2
Abbildung in dieser Leseprobe nicht enthalten
In Tabelle 2 ist die Personalnummer der Primärschlüssel.
Tabelle 3
Abbildung in dieser Leseprobe nicht enthalten
In Tabelle 3 sind die Primärschlüssel der Tabellen 1 und 2 zu Fremdschlüsseln geworden, da diese eben mehrmals einmal oder keinmal vorkommen können. Ein Student kann mehrere Seminare besuchen (oder auch keine, was man in diesem Fall nicht hoffen will) und ein Professor kann mehrere Seminare halten. Jeder Student kann jedes Seminar besuchen, kann also jedem Professor zugeordnet werden. Der Professor C5638764 taucht nicht in der Tabelle 3 auf da er ein Freisemester hat und somit keine Seminare abhält.
Um diese realen Verhältnisse in Tabellen festhalten zu können, müssen die einzelnen Datensätze der Tabelle 1 und 2 kombinierbar sein. Dies ist in Tabelle 3 der Fall.
3.7.3 Die 1 : 1-Beziehung
Der dritte Beziehungstyp tritt relativ selten auf, da die Felder die in der zweiten Tabelle gespeichert werden, eigentlich direkt in der Tabelle 1 gespeichert werden könnten, ohne dass wiederholende Daten auftreten würden. In beiden Tabellen dieser Beziehung existiert der Wert nur einmal und ist in beiden Tabellen Primärschlüssel. Gründe für so eine Beziehung können sein:
- Um eine möglichst schnelle Datenabfrage zu gewährleisten, versucht man die Tabellen klein zu halten. So macht man aus einer Tabelle mit vielen Spalten zwei kleine, deren jeweilige Daten in einer 1 : 1-Beziehung stehen.
- Tabellen können Daten enthalten, auf die Personen aus unterschiedlichen Zwecken zugreifen müssen, aber nicht alle eingetragenen Informationen zu dem Subjekt brauchen (siehe auch 1.9.2., zweite Normalform).
3.8 Referentielle Integrität
Die so genannte referentielle Integrität bestimmt eine weitere Forderung an verknüpfte Tabellen, die für die Richtigkeit der Daten und ihrer Verknüpfung sorgen soll.
Die beiden Forderungen beinhalten Folgendes:
- Wenn man einen Datensatz in einer Detailtabelle einfügt, dürfen nur Fremdschlüssel verwendet werden, die in der Mastertabelle vorkommen. In der obigen Tabelle 3 für Veranstaltungen dürfen z.B. nur Professoren vorkommen, die es an der Universität auch tatsächlich gibt, also schon in der Mastertabelle 2 für Professoren eingetragen sind.
- Man darf nicht einfach einen Datensatz in einer Mastertabelle löschen, wenn dieser mit anderen Detailtabellen verknüpft ist. Dies würde zur Folge haben, das eine Menge Datensätze verwaist, also ohne Heimat, in Detailtabellen entstehen. Es gäbe Vorlesungen ohne Professoren und Seminare ohne Studenten. Das wäre nicht gut…oder doch ?
Schaltet man die referentielle Integrität nicht ein, ist das Löschen oder Ändern von Datensätzen, ohne seine komplette Entfernung aus der Datenbank möglich. Ein weiterer Vorteil besteht darin, dass Access anzeigt, welcher Beziehungstyp zwischen den Tabellen besteht und nicht nur dass eine Beziehung überhaupt besteht.
3.9 Die Normalformen
Normalformen sind Regeln für die Bildung von logischen Datenzusammenhängen, die dann in Tabellen umgesetzt werden.
Wieso ist eine so genannte Normalisierung, also die Anwendung der Normalformen auf die Tabellen, notwendig ? Normalisierte Tabellen weisen erstens ein Minimum an redundanten Informationen auf, was zweitens die physische Größe der Datenbank gering hält. So wird der logische Aufbau klarer, was die Arbeit mit und die Pflege von Datenbanken vereinfacht.
Der Normalisierungsprozess beinhaltet eigentlich 5 Schritte, die streng nacheinander vollzogen werden müssen. In der Praxis verwendet man aber nur die ersten drei, weswegen hier auch nur auf diese eingegangen wird.
Eine Normalisierung beginnt mit der 1. Normalform; ist dieser Schritt abgeschlossen folgt die 2. und dann die 3. Normalform.
Generell kann man sagen, dass ein Normalisierungsschritt mit der Zerlegung von Tabelle endet, wenn diese die jeweilige Normalform nicht erfüllt hat.
3.9.1 Erste Normalform (1. NF)
Eine Tabelle befindet sich in der ersten Normalform, wenn sich die Werte in jeder Zeile und in jeder Spalte im atomaren Zustand befinden, d.h. sich in keine kleineren Einheiten mehr zerlegen lassen.
Tabelle 1: Studenten
Abbildung in dieser Leseprobe nicht enthalten
In dieser Tabelle sind alle Informationen zu einem Studenten eingetragen, seien es persönliche Daten, wie Matrikelnummer, Adresse, Name und auch Daten, die das Studium des Studenten betreffen, wie die Fachrichtungen. Weiterhin sind in der Spalte Adresse alle Adressanteile, wie Straßenname und Stadt untergebracht.
Es gibt zwei Probleme bei dieser Tabelle.
Das erste besteht darin, dass die Werte in der Spalte Adresse nicht in atomarer Form vorhanden sind. Die Informationen im Feld Adressen sind weiter zerlegbar (atomisierbar), nämlich in Strasse, Stadt und Postleitzahl.
Diese Trennung ist notwendig, um bei Abfragen (siehe Abfragen) möglichst schnell ein Ergebnis zu erzielen. Will die Universität wissen, wie viele Studenten aus welcher Stadt kommen, würde das Programm bei der obigen Tabelle mehr Zeit für ein Ergebnis brauchen, als wenn die Stadt in einer eigenen Spalte aufgeführt wäre. Zusätzlich ist es wesentlich übersichtlicher, wenn man genau weiß wo der Eintrag Stadt zu finden ist.
Es muss also noch eine Spalte Stadt eingefügt werden.
Der zweite Nachteil dieser Tabelle ist, dass sie nur eine begrenzte Anzahl Spalten für die Fachbereiche hat. Wenn nun ein Student in vielen Fachbereichen eingeschrieben hat, muss man bei dieser Tabelle Spalten an der rechten Seite anfügen. Dadurch wird die Tabelle ewig breit und manche Felder sind einfach leer, weil sich nun nicht jeder Student in gleich viele Fachbereiche einschreibt.
Auch ist hier eine Abfrage nur sehr unökonomisch zu haben, wenn man wissen will welcher Student in welchem Fachbereich studiert. In welcher Spalte soll man z.B. nach Fachbereich 13 suchen ? Dieser Fachbereich kann sich sowohl in der Spalte „Fachbereich 1“ oder „Fachbereich 2“ befinden.
Diese Tabelle muss also sowohl in einer Spalte (Adressen) atomisiert werden, als auch in den Zeilen, damit sie die erste Normalform erfüllt. Dafür braucht man eine zweite Tabelle.
Die folgende Tabelle enthält nur atomare Werte, denn jede logische Einheit (Strasse, Stadt, Postleitzahl etc.) hat eine eigene Spalte. Die Abfrage welcher Student in welcher Stadt wohnt ist nun kein Problem mehr.
Tabelle 1: Persönliche Daten der Studenten (Adresse)
Abbildung in dieser Leseprobe nicht enthalten
Die Matrikelnummer ist hier der Primärschlüssel.
Nun fehlt aber noch die zweite Tabelle, die direkte Informationen zum Studium der Studenten, wie die Fachbereiche enthält.
Tabelle 2: Fachbereiche
Abbildung in dieser Leseprobe nicht enthalten
Die Tabelle 2 Fachbereiche enthält für jeden Fachbereich, in der sich der Student eingeschrieben hat, eine Zeile. So wächst die Tabelle nicht in die Breite sondern in die Länge. Bei diesem Tabellenaufbau muss die Struktur nicht verändert werden. Die Matrikelnummer ist in dieser Tabelle Fremdschlüssel.
Die Informationen über einen Student sind nun logisch voneinander getrennt. In Tabelle 1 tauchen nur persönliche Daten der Studenten auf, in der Tabelle 2 nur Informationen zum Studium derselbigen. Die Werte in beiden Tabellen sind atomar und erfüllen dadurch die erste Normalform.
3.9.2 Zweite Normalform (2. NF):
Eine Tabelle befindet sich in der zweiten Normalform, wenn
- sie sich in der ersten Normalform befindet
- jede Tabellenzeile nur Informationen enthält, die sich auf das Subjekt (Student) beziehen, das durch den Primärschlüssel (Matrikelnummer) dargestellt wird
Unsere Tabelle 1 (persönliche Daten) erfüllt die erste Normalform, jedoch nicht die zweite Bedingung, nämlich dass alle Felder direkt vom Primärschlüssel abhängig sind. Die folgende Tabelle verstößt offensichtlich gegen die zweite Normalform.
Abbildung in dieser Leseprobe nicht enthalten
Das Feld Gebäude hat nichts mit der Matrikelnummer zu tun, und gehört in eine andere Tabelle. Dies wäre ein grober Verstoß gegen den logischen Aufbau einer Datenbank, der auch schnell auffallen würde.
3.9.3 Dritte Normalform (3. NF)
Die 3. Normalform enthält die Forderungen
- dass die zweite Normalform muss erfüllt sein
- dass alle Spalten nur einmal vorkommen dürfen und alle Spalten, die nicht den Primärschlüssel bilden, voneinander unabhängig sein müssen
Abbildung in dieser Leseprobe nicht enthalten
In dieser Tabelle persönliche Daten kommen zwar alle Spalten nur einmal vor, jedoch ist die Spalte Postleitzahl direkt mit der Spalte Ort verbunden. Sie sind von einander abhängig. Deshalb muss man eigentlich eine eigene Tabelle nur mit PLZ und Ort haben (die gibt es auch im Internet) und in die Tabelle schreibt man nur die PLZ hinein. Der passende Ort wird sich dann aus der anderen Tabelle kopiert.
Die Tabelle persönliche Daten die alle drei Normalformen erfüllt sieht dann so aus:
Abbildung in dieser Leseprobe nicht enthalten
3.10 Indizes
Indizes sind Zusätze, die man in einer Tabelle definieren kann, um Such- und Sortieroptionen zu beschleunigen. Wenn man in eine Tabelle für ein oder mehrere Felder einen Index (Einzahl von Indizes, also dasselbe) definiert, speichert das Datenbanksystem spezielle Informationen über diesen Index in einer getrennten, nicht sichtbaren Systemtabelle.
Mit dem Index kann man z.B. eine bestimmte Reihenfolge der Datensätze definieren, nämlich ab- oder aufsteigend. Ist die Tabelle einmal nach einem bestimmten Kriterium sortiert, merkt sich das Access, weswegen man immer schnell auf die Daten zurückgreifen kann. Sucht man einen bestimmten Wert in einer schon sortierten Spalte, läuft dies wesentlich schneller ab, als bei unsortierten Tabellen, weil das Programm nicht die große sichtbare Tabelle sortiert, sondern die unsichtbare nur zweispaltige Systemtabelle.
Es gibt aber auch Nachteile. Das Suchen und Sortieren läuft zwar schneller, gibt man jedoch neue Daten in die Ausgangstabelle ein, aktualisiert Access gleichzeitig die Systemtabelle. Das verzögert den Eingabeprozess.
Man sollte also mit Indizes sparsam umgehen und sie nur dort definieren, wo es Sinn macht.
Primärschlüssel und Indizes haben ein festes Verhältnis :
- Ein Primärschlüssel einer Tabelle ist auch immer ein Index. Das wird vom Programm bei der Festlegung des Schlüssels automatisch vorgenommen
- Umgekehrt muss ein Index nicht Primärschlüssel sein.
Indizes können in mehreren Feldern gesetzt werden, also mehrere Kriterien bilden, nach denen die Daten einer Tabelle sortiert werden sollen. Dafür muss man festlegen, nach welchem Kriterium die Tabelle zuerst sortiert werden soll. Ist die Tabelle nach dem ersten Kriterium sortiert, wird sie nach dem zweiten Kriterium sortiert usw.
Beispiel:
Ein aufsteigend sortierter Index auf die Felder Nachname, Vorname, Geburtsdatum sortiert nach dem Nachnamen, bei gleichem Nachnamen nach Vornamen, bei gleichem Nach- und Vorname, nach Geburtsdatum.
Die Reihenfolge der Felder wird bei der Definition des Indizes festgelegt.
Indizes können Duplikate, also zweimal den selben Wert in einem Feld, zulassen oder auch nicht. Im letzteren Fall funktioniert er wie ein Primärschlüssel, da dann ein Wert nur einmal eingegeben werden kann.
4 Die Benutzeroberfläche von Access 2003
4.1 Die Oberfläche nach dem Start von Access 2003
Nach dem Start von Access erscheint die Oberfläche von Access auf dem Bildschirm. Zu sehen gibt es erst einmal nicht viel
Abbildung in dieser Leseprobe nicht enthalten
Der Startbildschirm ist sehr übersichtlich: nur die Menüzeile am oberen Rand und einen Kasten am rechten Rand, der sich Aufgabenbereich nennt, hier mit "Erste Schritte" betitelt ist.
Abbildung in dieser Leseprobe nicht enthalten
Unter Erste Schritte Neue Datei kann man eine neue Datenbank öffnen. Weiterhin kann man durch Eingabe einer Frage die Access -Hilfe aktivieren und unter dem Menü Öffnen schon vorhandene Datenbanken öffnen.
Legt man eine neue, leere Datenbank an, dann passiert etwas, das man von Word oder Excel nicht kennt. Access fordert einen auf, die noch gar nicht erstellte Datenbank zu benennen und zu speichern. Das liegt daran, dass später bei der Dateneingabe in eine Tabelle nicht mehr separat gespeichert wird. Sobald man einen Datensatz fertig eingegeben hat, wird dieser auf der Festplatte gespeichert. Deswegen braucht Access den Dateinamen schon beim Erstellen. Es ist gut, wenn man sich an dieser Stelle daran gewöhnt, den Dateinamen der Datenbank, in der man seine Tabellen anlegt im Präfix mit tab_ zu benennen. So kann man sie später auseinander halten von der Datenbank, in der die Aufbereitung der Daten passiert.
Abbildung in dieser Leseprobe nicht enthalten
Hier kann man einen Namen für die neue Datei vergeben.
Vergibt man einen Namen und speichert ab, öffnet sich automatisch das in der Abbildung zu sehende Menüfenster. Über dieses Übersichtsmenü (Datenbankfenster) können die verschiedenen Objekte (Tabellen, Abfragen, Formulare etc.) und Ansichtsmöglichkeiten (Entwurfsansicht, Druckansicht) von Access geöffnet werden.
Leider hat Microsoft Access an dieser Stelle eine Hilfe eingebaut, die eher verwirrt: Neben den Objekten sieht man auch drei Befehle im Fenster des Containers. Diese Befehle bewirken das Gleiche, wie die in der Menüleiste des Containers. In einem Fenster sind normalerweise immer nur Objekte angeordnet, jedoch keine Befehle wie hier. Es entspricht also nicht der Logik eines Fensteraufbaus. Dies kann man unter Extras"Optionen" Ansicht " ‚Neue Objektverknüpfung' ändern.
Abbildung in dieser Leseprobe nicht enthalten
Eine leere neue Datenbank
Klickt man dort das Häkchen weg, verschwinden die Befehle aus dem Fenster und es öffnet sich das zu sehende Fenster ‚Neue Tabelle'.
Abbildung in dieser Leseprobe nicht enthalten
Übersichtsmenü mit Fenster ‚Neue Tabelle'
Über dieses Fenster hat man auf viel mehr Befehle Zugriff, als bei der vorherigen Einstellung. Mit dem markierten Button ‚Neu' in der Menüleiste kann das Fenster geöffnet werden.
4.2 Was es sonst noch so gibt
Schaut man sich die linke Containerseite an, sieht man eine Auflistung verschiedener Objekte. Die Objekte haben folgende Funktionen:
Abbildung in dieser Leseprobe nicht enthalten
Die letzten beiden Buttons werden hier nicht erläutert.
Man wechselt zwischen den Objekten auf der linken Seite. Wenn ein Objekt offen ist, so kann es durch den Klick auf die Schließen-Schaltfläche geschlossen werden.
Um die Beziehungen der verschiedenen Access -Elemente nachvollziehen zu können, folgende Abbildung:
Abbildung in dieser Leseprobe nicht enthalten
Beziehung zwischen den Objekten
Mit den Symbolen der oberen Menüleiste des Übersichtsmenüs kann man Folgendes anstellen:
Abbildung in dieser Leseprobe nicht enthalten
Öffnet ein markiertes Objekt.
Abbildung in dieser Leseprobe nicht enthalten
Zeigt das markierte Objekt in der Entwurfsansicht an.
Abbildung in dieser Leseprobe nicht enthalten
Erstellt ein neues Objekt (Tabelle, Abfrage etc.). Hat man sonst noch nichts erstellt, ist nur dieser Button aktiv.
Abbildung in dieser Leseprobe nicht enthalten
Diese Reihe von Knöpfen ermöglichen eine unterschiedliche Anordnung (größer, kleiner etc.) der jeweiligen Buttons. Einfach ausprobieren.
Die oberste Menüleiste des großen Fenster enthält die üblichen Windows-Symbole, wie Speichern, Kopieren, Ausschneiden usw. Neben diesen gibt es aber noch Access spezifische Buttons, die im Weiteren erklärt werden sollen.
Abbildung in dieser Leseprobe nicht enthalten
Öffnet den Microsoft-Word-Seriendruck-Assistenten, der Access Daten mit WordDaten zur Erstellung von Seriendrucken und Adressetiketten verknüpft.
Abbildung in dieser Leseprobe nicht enthalten
Startet den Assistenten zur Tabellen-Analyse, der die Datenbank unter anderem auf redundante Informationen überprüft. Wenn nötig, unterteilt er eine Tabelle in mehrere.
Abbildung in dieser Leseprobe nicht enthalten
Zeigt die Eigenschaften eines markierten Objekts an.
Abbildung in dieser Leseprobe nicht enthalten
Zeigt das Fenster an, in dem Beziehungen der Tabellen/Abfragen angezeigt, bearbeitet und definiert werden können.
Abbildung in dieser Leseprobe nicht enthalten
zum öffnen des Fensters, indem die Tabellenbeziehungen angezeigt werden,erscheinen folgende Buttons:
Abbildung in dieser Leseprobe nicht enthalten
zeigt die direkte Beziehung einer einzelnen Tabelle zu einer anderen einzelnen Tabelle an.
Abbildung in dieser Leseprobe nicht enthalten
zeigt alle Beziehungen aller Tabellen/Abfragen einer Datenbank an.
Abbildung in dieser Leseprobe nicht enthalten
erlaubt das Anzeigen aller vorhandener Tabellen/Abfragen im Fenster Beziehungen.
Abbildung in dieser Leseprobe nicht enthalten
zeigt das Datenbankfenster (Übersichtsmenü) an.
Abbildung in dieser Leseprobe nicht enthalten
ermöglicht das Öffnen neuer Objekte (Tabellen, Formulare etc.).
5 Die erste Tabelle
5.1 1. Vorüberlegung
Es sollte bisher klar geworden sein, dass ein Großteil der Arbeit schon vor dem eigentlichen Erstellen der Datenbank in der theoretischen Organisation liegt. Da hilft nur eins: Man muss vorher an den Schreibtisch und mit Papier und Bleistift überlegen, was man eigentlich will. Es ist zwar möglich, Datenbankstrukturen auch im Nachhinein zu ändern, aber das kostet Mühe und ist eventuell auch Quelle von Datenverlusten.
Die Aufgabe, die in diesem Kapitel zu lösen ist, bezieht sich auf den universitären Bereich. Die Universität verwaltet Studenten, Professoren, Seminare, Prüfungen etc. mit Hilfe einer Datenbank.
5.1.1 Aus wie vielen Tabellen soll die Datenbank bestehen?
Wenn man weiß, welche Daten in der Datenbank verwaltet werden sollen (hier die oben genannten), ihr den Namen tab_uni-verwaltung.mdb gegeben hat, muss man sich die logischen Verbindungen der einzelnen Datengruppen (Matrikelnummer, persönliche Daten der Studenten…) klar machen, um entscheiden zu können, welche zusammen in eine Tabelle gehören und welche nicht.
Es gibt eine Fülle von Informationen, die sicherlich nicht alle in eine Tabelle gehören, aus den Gründen die im ersten Kapitel (redundante Informationen, Gewährleistung einer schnellen Abfrage, Übersichtlichkeit) genannt worden sind.
Bei unserem Beispiel sind die logischen Zusammenhänge eigentlich klar. Zur Matrikelnummer gehören die persönlichen Daten der Studenten wie der Name, die Adresse usw. und zu den Personalnummer der Professoren natürlich auch deren Namen. Was würde es für einen Sinn machen die Namen der Professoren zusammen mit den Adressen der Studenten in einer Tabelle aufzuführen? Ein großes Durcheinander; die Studenten bekämen die Prüfungsunterlagen ihrer Professoren zugeschickt. Fatal.
Folgende Abbildung zeigt eine Beispieltabelle für die persönlichen Daten der Studenten. Ähnliche Informationen kann die Tabelle für persönliche Daten der Professoren enthalten.
Abbildung in dieser Leseprobe nicht enthalten
Tabelle für persönliche Daten der Studenten
Nun, wie erstellt man so eine schöne Tabelle? In diesem Kapitel soll die Vorgehensweise zur Erstellung einer solchen Tabelle, anhand dieser Beispieltabelle erklärt werden.
In der Abbildung sieht man die Tabelle in der Datenblattansicht, in der man die Informationen über die Studenten eingibt. Um jedoch so eine Tabelle mit Spaltenüberschriften und den jeweiligen Feldeigenschaften zu basteln, muss man in die so genannte Entwurfsansicht wechseln.
5.1.2 Die Entwurfsansicht: Feldnamen, Felddatentyp und Feldgröße:
Die Spaltenname kann man mit Hilfe des Tabellen-Assistenten oder über die Entwurfsansicht vornehmen.
Der Assistent ist uns zu einfach, wir wollen ja wissen, wie Access ungefähr funktioniert.
Abbildung in dieser Leseprobe nicht enthalten
Entwurfsansicht einer Tabelle
In die Spalte ‚ Feldname ' werden die Bezeichnungen für die Tabellenspalten eingegeben. Das kleine schwarze Dreieck am linken Rand Abbildung in dieser Leseprobe nicht enthalten, zeigt an, welche Zeile gerade bearbeitet wird.
Der Felddatentyp weist den Tabellenspalten verschiedene Eigenschaften zu, je nachdem welcher Datentyp (z.B. Text oder Zahl) in die jeweiligen Spalten eingegeben werden soll. Gibt man einen Feldnamen ein, hier Nachname , und klickt in die Spalte Felddatentyp, erscheint ein Button, welcher ein Dropdownfenster öffnet:
Abbildung in dieser Leseprobe nicht enthalten
Entwurfsansicht: Felddatentyp
Man sieht, dass es noch mehr Felddatentypen gibt als nur Text oder Zahl, ganz platt gesagt: solche mit denen man rechnen kann, und solche die für Text reserviert sind. In der folgenden Tabelle sind die unterschiedlichen Typen und ihre Funktion aufgelistet.
Abbildung in dieser Leseprobe nicht enthalten
[...]
-
-
-
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X.