Datenbanken Daten-Organisation Der Hauptzweck der Elektronischen Daten Verarbeitung ist neben der reinen Rechnerleistung das Sammeln, Archivieren (Speichern) und Verknüpfen von unterschiedlichen Daten. Der Zugriff auf die gesammelten Daten spielt dabei natürlich eine wesentliche Rolle und ist der Hauptgrund für die Entwicklung immer umfangreicherer und schnellerer Hard- und Software. Ein weiterer Aspekt ist die Datensicherheit (Sicherung, Permanenz (Haltbarkeit) und Kohärenz) und der Datenschutz (vor unbefugten Zugriff). Es wird gerade auf diesem Sektor viel Zeit und Geld in die Entwicklung immer raffinierterer und komplexer Verschlüsselungen und Abwehrmechanismen gesteckt. Der Kampf gegen Hacker, Trojaner und Viren bindet heute bereits mehr als zwei Drittel der gesamten Entwicklungsarbeit und der finanziellen Mittel. Die Speichermedien, vor allem die optischen (CD und DVD) bringen bei regelmäßiger Sicherung (Backup) ein hohes Maß an Kapazität (650 MB bis 5 GB) und Permanenz (Unveränderlichkeit bei richtiger Lagerung) bei gleichzeitiger Minderung des Platzbedarfs. Auch die magnetischen Datenträger haben an Kapazität enorm zugenommen (es sind kaum mehr Festplatten unter 10 GB zu erhalten, RWR-CD's haben bereits 800MB Speicher und sind preisgünstig. DAT-Bänder und Magnet-Optische (MO) Platten sind zwar noch immer für große Datenmengen in Verwendung sind aber wesentlich teurer und unbequemer (Zeit und Zugriff). Den magnetischen Datenträgern haftet noch immer das physikalische Manko der "Flüchtigkeit" und Empfindlichkeit an (nach einiger Zeit, oder durch einen "Unfall" oder "Unsachgemäße Lagerung" werden die magnetischen Informationen zerstört) während bei den optischen ("gebrannten") Medien nur der Staub oder mechanische Gewalt die Daten zerstören kann. Bei den Speicher-Zugriffs-Methoden unterscheidet man zwischen den linearen ("in one stream straight forward" sequenziellen) Schreib/Lese-Vorgängen und den "wahlfreien" (Random Access) Beide Methoden haben Vor- und Nachteile: Bei der linearen Methode (aufzeichnen und lesen in einem "Strom", Datentrack (wie bei der Schallplatte)) wird kein Platz verschwendet (es gibt keine Lücken zwischen den Datenblöcken). Größter Nachteil: um zu eine bestimmte Datensequenz lesen zu können, muß zuerst der ganze "Vorspann" gelesen und untersucht werden. Veränderungen sind überhaupt problematisch, da zuerst der gesamte Datenbestand ausgelesen und zwischengespeichert, dann dort geändert und wieder als Ganzes zurückgeschrieben werden muß. (Daher sind sequentielle Datensicherungen und Medien heute (bei dem Kapazitätsüberangebot) nur für "totale", wenig veränderliche Datensicherungen wirtschaftlich vetretbar. Bei der wahlfreien Methode (Ortsgebundene Datenaufzeichnung) hat jedes Datenpaket eine bestimmte "Adresse" durch Einteilung des Mediums in Cluster (heads, tracks and sectors). Diese "Inhaltsangabe" wird in einem eigenen Bereich gespeichert (FAT (File Allocation Table) oder TOC (Table Of Contents)). Typisches Beispiel ist die Organisation der FloppyDisks, Festplatten und CD's. Der Nachteil ist die "Verschwendung" von Plattenplatz durch die voreingestellte "Cluster-Größe" und den verfügbaren Adressenraum (was z.B. Beim Betriebssystem MSDOS/Windows zu gewaltigen Problemen geführt hat). UNIX/Linux verwendet eine andere, flexiblere, Einteilung und Größenbestimmung (allerdings einmalig) -- die "inode-Tabelle" (Die Größe kann in 4KB-Blöcken veränderlich eingestellt werden, Die echten Byte-Adressen werden dann in die Tabelle als Zeiger (Pointer) eingetragen. Der größte Vorteil des wahlfreien Zugriffs ist die Geschwindigkeit und leichte Möglichkeit des Löschens und Veränderns (Die Lücken werden als "frei" markiert. Größerer Platzbedarf bei Änderungen werden durch Verweise (Zeiger) auf noch freie Cluster (quasi als "Fortsetzung bei Adresse ...") leicht geschaffen. Eine Gefahr besteht dadurch: Größere Dateien können durch diesen "Fleckerlteppich" extrem "fragmentiert" (zerstückelt) werden, was natürlich auf Kosten der Performance (Schnelligkeit des Zugriffs) und der Abnützung (Verschleiß der Mechanik, Erwärmung) geht. Diesem Umstand tragen diverse "Defragmentierungs-Tools" (Norton Speed-Disk, Windows) Rechnung, müssen aber extra von Zeit zu Zeit manuell oder automatisch gestartet werden. Andere Betriebssysteme machen dieses "Aufräumen" von vornherein automatisch (nach jedem x-ten Start des Systems) z.B. UNIX/Linux. Datenbanken sind eine Sonderform der Datenorganisation und dienen in erster Linie dazu Daten nach bestimmten Gesichtspunkten zu ordnen, zu pflegen und zu suchen. Ihre "Architektur" ist strikt hierarchisch, obwohl auch Querverbindungen (relationale Datenbanken) die Regel sind. Die Grund-Einheit (Datencontainer) ist das Daten-Feld: Es beinhaltet die eigentlichen Informationen (Zahlen, Zeichen, Text, Verweise (Zeiger, Links), Datum etc.) Der Feldtyp je Feld(name) ist für die ganze Tabelle gleich, sowie auch die Position innerhalb eines Satzes und die Größe (Länge, Format) Ein Datensatz besteht aus einem oder mehreren Feldern in einem bestimmten Zusammenhang ("Vektor") Mehrere zusammengehörige Datensätze (gleiche Struktur und Bestimmung ("Menge") ) bilden eine Tabelle. Mehrere Tabellen werden unter einen Oberbegriff als Datenbank zusammengefaßt. Die hierarchische Ordnung ist also: Datenbank – Tabelle – Datensatz – Feld -- Feldeigenschaft – Feldinhalt Daneben gibt es noch eine verarbeitungsrelevante Struktur: Tabelle (Daten-Container, Quelle, Speicherung) Formulare (Eingabe, Übersicht, Pflege (Änderungen), Benutzerführung) Abfragen (Filterung von Datenbeständen nach Kriterien, SQL(Structured Query Language) Berichte (Listen, Ausgabe von Daten, Übersichten, Zusammenstellungen) Zwischen den einzelnen Tabellen können über ein gleichnamiges Feld ("Schlüsselfeld") Verbindungen hergestellt werden, sogenannte Relationen (=Bezüge, z.B. Artikel Nummer, Kunden-Nummer). Über eigene Index-Tabellen (Schlüssel) können schnelle Zugriffe und Filter erzeugt werden . Dadurch können verknüpfte Daten aufgefunden und/oder bearbeitet werden. Setzt man solche "Beziehungen" (Relationen) , dann spricht man von einer "Relationalen Datenbank" bzw. bei mehreren verknüpften Datenbanken von einem "Relationalen Datenbanksystem" Diese Verknüpfungen dienen dazu, Redundanzen (unnötige Wiederholungen) zu vermeiden und Platz zu sparen. Die Integrität und Kohärenz der Daten zu gewährleisten (Änderungen nur an einer Stelle (Tabelle)) Die Administration und Pflege des Datenbestandes zu vereinfachen. Schnellen und sicheren Zugriff auf Selektionen (Abfragen) Voraussetzung für das einwandfreie Funktionieren eines solchen Verbundes ist aber die strikte Einhaltung der Regeln ("Normalformen") nach Boyce-Codd für die Datenorganisation. 1. Eindeutigkeit der Attribute und Feldinhalte (z.B. Trennen von Vor- und Zunamen, oder PLZ, Ort und Strasse), Aufteilung in Master- und Detailtabellen. 2. Primärschlüssel: Eindeutige Zuordnung (Identität) jeden Datensatzes durch ein Feld mit unitären Inhalt (keine Duplikate, z.B. ISBN, Soz.Vers.Nr., etc.) und müssen in einem logischen Zusammenhang mit der Tabelle stehen (wie mathem. Mengen-Begriff) 3. Vermeidung von Redundanzen durch Aufteilung in Master- (Identitäts-) und Detail-Tabellen. Außerdem werden noch Unterscheidungen durch bestimmte Architekturen, Zugriffsarten, Indexierungen etc. getroffen und von bestimmten Datenbank-Verwaltungsprogrammen bevorzugt. Je nach Verwendungszweck und Umfang muß man bei der Wahl des Programms bereits sehr vorsichtig sein -- zumal manche Programme sehr teuer sind und eine Fehlinvestition sich katastrophal auswirken kann. Eine gewissenhafte Analyse der Datenformen, Ein- /Ausgabe- und Verarbeitungsformen sowie des hardware- und softwaremäßigen Umfeldes ist vor dem Einsatz unerlässlich! Manche Programme unterstützen eine spezielle Abfrage-Sprache -- die SQL (Structured Query Language, von IBM entwickelt, speziell für Server/Client Datenbanken). Die Abfrage-Keywords sind standardisiert und relativ einfach. Die wichtigsten Datenbank-Programme: dBASE , Xbase, Clipper, Fox, Paradox sind die Pioniere am PC-Sektor (Tabellen-Endung *.DBF) Microsoft's Office/Access ist ein Index-orientiertes, sehr mächtiges und in den Anwendungen sehr vielseitiges DB-Programm mit SQL-Fähigkeit. Im Kommerziellen Bereich ist Xbase, Oracle und Btrieve häufig im Einsatz Plattformübergreifend (Windows, Apple, Unix/Linux/FreeBSD) wurde MySQL immer beliebter -- es ist einfach, sehr schnell und vor allem durch die ausgezeichnete Zusammenarbeit mit dem häufigsten Webserver "Apache" und der Perl/CGI/PhP- Unterstützung ein sehr vielseitiges DB-Programm für das Internet und E-commerce (WAMP, LAMP -- Windows-Apache-Mysql-PHP bzw. Linux-Apache-Mysql-PHP ) Arbeiten mit dem Datenbank-Programm ACCESS. Datenbankprogramme erleichtern zwar die Erstellung, Pflege und Auswertung von Datensammlungen, die eigentliche Intelligenz für die möglichst praxisnahe und sichere Verwendung des Programms muß aber vom Benutzer kommen. Das heißt, eine Datenbank ist nur so gut wie die zugrundeliegende Planung der Datenorganisation in Tabellen, Schlüsseln und Verbindungen. Es ist daher sehr wichtig, die „Umgebung“ so genau wie möglich zu kennen: Datenart und Umfang (Quellen, Zweck und Ziel der Verarbeitung, Form der Ausgabe) Verbindungen bei der Eingabe, Verarbeitung, Speicherung und Abfrage, und der Ausgabe Benutzerfreundlichkeit (Zielgruppe, Hilfen, Fehlererkennung und -Behandlung) Datensicherheit (eventuelle Verschlüsselung und Zugriffsberechtigungen) MicroSoft ACCESS ist für „Normal-Anwendungen“ (kleine Datenbanken, temporäre Datenbestände, bequeme Erfassung und Verwaltung, ohne große Anforderungen an die Verwaltung) ein „nettes“ Instrument – Für spezielle Anforderungen, heikle Daten oder sehr große Datenbestände ist es aber doch zu „klein“ und zu „engstirnig“, dafür muss man schon schwere Geschütze auffahren bzw. die Applikation selbst programmieren (Delphi, Paradox, BD2, Oracle etc.) Typische Anwendungen: Artikel- und QuellenVerwaltung von Zeitschriften (Stichwort, Autor, Buch- oder Zeitung (Seite, Absatz)) Buch-, Video-, oder CD-Verleih (Personen, Adressen, Buchtitel, Autor, Bestand etc) Vereins-Verwaltung (Mitglieder, Beiträge, Termine) Linkdatei (Stichworte, Kategorien,Websites (Links), Meta-Einträge, weiterführende Suchmaschinen) Nehmen wir ein paar Beispiele die auch im privaten Bereich hilfreich sein kann: Zum Beispiel wäre bei wissenschaftlichen Arbeiten oder ambitionierten Hobby eine kleine Artikelverwaltung. Wo hat man das oder das gelesen, in welcher Zeitung, welcher Jahrgang, welche Seite? Mit MS-Access ist so eine Verwaltung recht schnell erstellt und sogar später ausbaufähig. Eine heute sehr häufige und wichtige Anwendung ist die Verwendung von Datenbanken im Internet Internet-shoping, Suchmaschinen, Warenangebote/-Kathaloge (Warenkorb), Newsverwaltung etc. sind heute unverzichtbare Elemente des Web. Diese Datenbanken können mitunter gigantische Ausmaße annehmen und weden von entsprechenden Maschinen (Servern) verwaltet. Eine freie (GPU-Lizenz) serverbasierte Datenbank für unsere Zwecke auf unseren Schulservern ist MySQL. Zusammen mit PHP-Scripting kann man die Funktionalität der "Großen" ganz gut simulieren und erproben. MYSQL und PHP (LAMP/WAMP) MySQL ist ein Produkt aus Skandinavien wie auch Linux und diverse andere so nützliche Tools und noch dazu "frei". Das heißt es unterliegt den GPL-Bestimmungen (General Public Licens) und der Open Source Cummunity. Diese Lizenz verpflichtet die Mitglieder den Quellcode ihrer Programme und Scripts der Allgemeinheit für nichtkommerzielle Nutzung frei zu geben, zwecks Weiterentwicklung. Die GPU-Leute sind die "Gralsritter " des Internet mit der hehren humanistischen Auffassung, dass das Wissen der ganzen Menschheit gehört und nicht einer einzelnen Firma (im Gegensatz zu manchen sehr bekannten Monopol-Firmen). Will eine Firma die Produkte kommerziell nutzen, bezahlt sie selbstverständlich Lizenzgebühren an die Autoren und die GPU (wie dies z.B. IBM schon getan hat). "MySQL" könnte man mit "Meine SQL-Datenbank" überetzen. Es ist eine sehr einfache relationale Datenbank mit einer standardisierten Abfrage-Sprache (SQL = Standard Query Language). Sie ist sowohl als UNIX/Linux/FreeBSD wie auch als Windows-Version erhältlich (genauso wie die Scriptsprache (Interpreter) PERL und PHP) und bildet zusammen mit einem Webserver (APACHE bzw. MS-Windows' – PWS/IIS (PersonalWebServer, InternetInformationServer ) eine freie Datenbank-Plattform (LAMP/ WAMP) zum Informations-Austausch und zur Speicherung und Verwaltung von Informationen. Trotzdem, auch bei einer noch so kleinen Datensammlung kann man nicht soe einfach „d’rauflos“ tippen, sondern sollte sich überlegen, welche Informationen man speichert und wie man sie später wiederfinden will. Geschickte Planung (Entwurf) kann die spätere Arbeit mit der Datenbank sehr vereinfachen oder natürlich im umgekehrten Fall sehr behindern. Die investierte Zeit rechnet sich später. Wir werden uns in der nächsten Zeit etwas mit dieser Plattform beschäftigen, um die grundsätzlichen Funktionen und Anwendungen der Formular- und Datenbankgestützten Webseiten kennenzulernen (Gästebücher, Firmenforen, Warenkorb/Artikelverwaltung (E-Commerce) etc.) Dazu benötigen wir neben inigen Grundkenntnissen in PHP-/MySQL-/SQL-/HTML auch die Clients von Telnet und FTP und natürlich einen Browser.