Die dritte Normalform. Die dritte Normalform versehe ich mit dem Zusatz'Historie', sprich, historische Daten retten. Die offizielle Formulierung lautet: 'Die dritte Normalform ist erreicht, wenn sich das Relationenschema in der zweiten Normalform befindet, und kein Nichtschlüsselattribut von einem Schlüsselkandidaten transitiv abhängt. 'oder auf Deutsch: Daten, die indirekt von einem anderen Wert abhängig sind, dürfen nicht in der gleichen Tabelle gespeichert sein. Sie wundern sich wahrscheinlich gerade. Sie haben bestimmt das Gefühl: "Das haben wir doch gerade in der zweiten Normalform gemacht? Daten, die von einem anderen Wert abhängig sind, dürfen nicht in einer gleichen Tabelle gespeichert sein. " Das klingt sehr ähnlich, das Zauberwort lautet: Die'indirekt'von einem anderen Wert abhängig sind. Bisher war die Abhängigkeit sehr klar und sehr offensichtlich, aber die ist manchmal nur indirekt erkennbar. Ich will Ihnen das in einem Beispiel zeigen. Also, die Historie ist beispielsweise hier versteckt. Es ist eine Liste von Artikeln, sozusagen der Katalog oder, in unserem Beispiel später, die Speisekarte. Da hat jeder Artikel eine ID, eine Bezeichnung, einen Preis. Alles ganz wunderbar, bis zu dem Moment, wo Sie den Preis ändern. Preis ändern? Eigentlich gilt die Regel, dass ein Datensatz nie seine Inhalte ändert. Wenn ich jetzt also in diesem Beispiel den Datensatz mit den Gummibärchen mit einem neuen Preis versehe, dann hätte ich Daten geändert. Eigentlich sollte man dann einen neuen Datensatz machen: Gummibärchen ab 17. 12. 2017 oder sowas und neuen Preis nennen. Und das ist das Geheimnis der indirekten Abhängigkeit. Da hängt ein Datum mit drin. Entweder es gilt die Regel "Der Preis oder überhaupt der Datensatz ändert sich nie wieder", oder - wenn er sich mal ändern dürfte - dann, ist er offenbar zeitabhängig. Und das ist das Problem mit der indirekten Abhängigkeit. Ich könnte die Historie - nämlich den alten Preis - nicht retten, wenn ich diesen jetzt überschreibe. Und das bedeutet, wenn ich an dieser Stelle beispielsweise mitten im Jahr den Preis ändere und am Ende des Jahres eine Abrechnung machen will fürs Finanzamt - was habe ich denn so eingenommen? - dann kann ich den Preis vom Anfang des Jahres gar nicht mehr finden, weil er nämlich überschrieben wurde und ich vergessen habe, diese zeitliche Abhängigkeit zu berücksichtigen. Stattdessen sollte ich eine Artikel-Datums-Tabelle führen, in der steht, welche Artikel-ID ab welchem Datum welchen Preis hatte. Und ab welchem neuen Datum welchen neuen Preis. Und schon wieder eine Preiserhöhung oder - hier meinetwegen eine Sonderaktion - darf ja auch mal billiger werden. Eigentlich dürfte der Artikel nicht beim Preis stehen, sondern müsste in einer zeitabhängigen, zweiten Tabelle genannt werden. Und dann ist das hier wieder nur der Fremdschlüssel auf den Artikel. Und das, sozusagen, der Fremdschlüssel auf's Datum, wenn man das mal so formulieren darf. Das ist sehr aufwendig, aber es hilft nichts. Wenn es sein muss und Sie die alten Preise brauchen, können Sie die nur so nachschlagen. Und es gibt noch eine zweite Variante der Historie, die genauso unauffällig ist. Gerade diese dritte Normalform kommt sehr unauffällig daher. Sagen wir, die Schüler einer Schule, die in einer bestimmten Klasse sind und damit dem Lehrer zusortiert. Das ist natürlich klar, dass die Schüler jedes Jahr in einer neuen Klasse zusortiert werden müssen. Also es ist eine zeitliche Abhängigkeit zur Klasse. Aber diese Klasse hat auch eine zeitliche Abhängigkeit zum Lehrer. Die Klasse 1a hat in einem Jahr den Lehrer Kunz und im nächsten Jahr den Lehrer Hinz. Trotzdem ist es immer noch die 1a. Wir müssen also noch dazu sagen, in welchem Schuljahr. Das darf also so nicht gespeichert werden, sondern ich muss diese inhaltlich-zeitlichen Abhängigkeiten berücksichtigen. Also sowohl der Lehrer zur Klasse, als auch der Schüler zu welchem Schuljahr eigentlich sind mehrfache Abhängigkeiten. Und ich müsste festhalten: die Klasse 1a hatte in diesem Schuljahr diesen Lehrer und im nächsten Schuljahr einen anderen Lehrer. Auch da ist es eine Historie. Nicht unbedingt mit Artikelpreisen oder Währungen - was relativ häufig der Fall ist - sondern auch, vielleicht, nur mit Zuordnungen zu Objekten, die in diesem Jahr oder in diesem Zeitraum anders heißen, als in einem anderen. Die dritte Normalform berücksichtigt also, dass Sie auf gar keinen Fall Daten überschreiben, sondern die historischen Inhalte in einer Hilfstabelle nachlesen können.