[[Einführung]] <- [[..:..:Informatik-Buch:]], [[..:Datenbank:]] -> [[Tabellenkalkulation]] ====== Theorie ====== In informatischer Hinsicht sollte eine Datenbank also mit Hilfe eines Computers verwaltet werden. Außerdem soll natürlich alles möglichst schnell ablaufen und möglichst viele Daten gespeichert werden können. Ein weiterer besonders wichtiger Punkt besteht in der **Verknüpfung der vorhandenen Daten**. Um das zu verwirklichen, kann das ER-Modell benutzt werden. //ER = Entity-Relationship// ===== Entitäten ===== //Entität (Entity), Entitätsmenge (Entity-Set), Entity-Typ// Mit **Entität** bezeichnet man jedes einzelne real existierende Ding, dass eindeutig identifizierbar in einer Datenbank erfasst werden soll. Beispiele: * Ein bestimmtes Buch in einem Regal einer Bücherei. Man beachte: Es mag in einer Bücherei ein Buch 12 mal vorhanden sein - mit derselben ISBN. Trotzdem müssen die Bücher unterscheidbar sein, da sie z.B. von verschiedenen Lesern ausgeliehen und evtl. beschädigt werden. * Eine bestimmte Leserin, die zu einer Bücherei Zutritt hat und Bücher ausleihen darf. * Rotkäppchen, wenn Märchenfiguren erfasst werden sollen.(Unter real existierenden Dinge würden natürlich auch Märchenfiguren fallen...) Soll eine neue Datenbank erstellt (modelliert) werden, so muss zunächst festgelegt, welche Dinge (Entitäten) erfasst werden sollen. Die Entitäten werden gruppiert in den sogenannten **Entitätstypen**. In einer Bibliotheksdatenbank wären z.B. **Buch** und **Leser** die Entitätstypen zu den Entitäten. Entitätstypen werden im ER-Diagramm mit Rechtecken dargestellt. Die Entitätstypen, die in der Datenbank festgehalten werden sollen, bilden zusammen die sogenannte "Miniwelt". Sie möglichst geschickt und logisch zu entwerfen ist immer die erste Aufgabe beim Aufbau einer Datenbank. ===== Attribute ===== Viele Dinge beim Entwurf sind unmittelbar klar. Beispiel: In einer Bibliothek sollen die Bücher, die Leser und die Ausleihen erfasst werden. Der Aufbau für die Bücher ist unmittelbar klar. Alle, beim Suchen oder Ausleihen, wichtigen Dinge (im Bereich der Datenbanken nennt man diese Dinge [[Attribut]]e)des Buches müssen gespeichert werden: * Standort in der Bibliothek * ISBN * Titel * Autor * Verlag * Erscheinungsjahr * ... Auch die Attribute für den Leser sind sofort einsichtig: * Vorname * Nachname * Straße und Hausnummer * PLZ und Ort * Kontonr. (evtl.) * ... ===== Schlüssel ===== Allgemein dient ein Schlüssel der Identifikation einer Identität. //Ein Attribut, dass die eindeutige Identifikation ermöglicht//, kann zum **Primärschlüssel** erklärt werden. Oft ist es am einfachsten, wenn speziell dafür ein zusätzliches Attribut ''BuchID'' oder ''LeserID'' oder ''ID'' eingeführt wird. Dazu wird für jede einzelne Entität eine natürliche Zahl gespeichert. Die Datenbanksoftware kann angewiesen werden, diese Zahlen selbst zu verwalten, damit die Wahrscheinlichkeit von Inkonsistenzen weiter reduziert wird. Wird in einer Tabelle der Primärschlüssel einer anderen Tabelle verwendet, beispielsweise beim Ausleihen eines Buches dessen ID, so spricht man von einem Fremdschlüssel. ===== Beziehungen/~grad/Kardinalität ===== Der **Beziehungsgrad** einer Beziehung gibt an, wie viele Entitätstypen mit dieser Beziehungen verknüpft werden. In den meisten Fällen sind dies genau 2, sodass vom Grad der Beziehung seltener die Rede ist. Eine Beziehung 3. Grades könnte so aussehen: {{ informatik-buch:datenbank:relationdrittengrades.png |Beziehung dritten Grades}} {{informatik-buch:datenbank:relationdrittengrades.odg|OOo-Zeichnung}} zum Bearbeiten... Die Kardinalität (oder Beziehungstyp) ist jedoch immer wichtig. Sie gibt an, wie viele Entitäten miteinander verknüpft werden. Beim Beispiel der Bibliothek wäre die Kardinalität der Beziehung 'leiht aus' 1:n, da ein Leser n Bücher ausleihen kann. 1 Buch kann aber nicht von n Lesern gleichzeitig ausgeliehen werden. Die drei Kardinalitäten in Beispielen * **1:1** - Person ''heiratet'' Person - Jede Person darf genau eine Person heiraten und jede Person darf nur von einer Person geheiratet werden. (Jedenfalls in Deutschland und ungeschieden...) Dabei handelt es sich um eine **rekursive Beziehung**, da eine Beziehung zwischen 2 Entitäten des gleichen Entitätstyps hergestellt wird. * **1:n** - Leser ''leiht'' Buch - Jeder Leser darf viele Bücher ausleihen. Jedes Buch wird nur von einem Leser gleichzeitig gelesen. * **n:m** - Schüler ''ist in'' Kurs - In jedem Kurs sind viele Schüler. Jeder Schüler ist in vielen Kursen. ===== ER-Diagramme ===== Um das Design möglichst übersichtlich zu gestalten, liegt es nahe eine graphische Darstellung zu verwenden. Man beachte: * Entitätstype in Rechtecken * Attribute in Ellipsen * Primärschlüssel werden unterstrichen * Kardinalität / Beziehungstyp wird an die Verbindungslinien geschrieben {{ informatik-buch:datenbank:bibliothek-er-diagramm.png |Miniwelt einer Bibliothek}} {{informatik-buch:datenbank:bibliothek-er-diagramm.odg|OOo-Zeichnung}} zum Bearbeiten... ===== Wichtige Eigenschaften von Datenbanken ===== * Keine **Redundanzen**: Keinerlei Daten werden mehrfach erfasst. Dadurch wird verhindert, dass sich durch eine Änderung von Daten an zu wenigen Stellen plötzlich gleiche Daten unterscheiden. * Keine **Inkonsistenzen**: Der Zugriff auf die Daten darf nicht von mehreren Personen/Rechnern gleichzeitig erfolgen. * **Datenschutz**: Der Zugriff auf sensible Daten wird vor unbefugtem Zugriff geschützt.