Datenbankentwurf DATENBANKENTWURF Reale Welt Datenmodellierung Implementierung mit einem Datenbanksystem BenutzerAnforderungen Externes Konzeptionelles Schema Logisches 1. Schema Schema 2. Schema Schema Internes 3. Schema Schema Fachliches Konzept Vorteile: Datenunabhängigkeit Zerlegung in Teilaufgaben TFH Berlin/Steyer EDV Konzept Datenbankentwurf ANFORDERUNGSANALYSE Anforderungen aller potentiellen Benutzer an die Datenbank sammeln (1) Informationsanforderungen (2) Bearbeitungsanforderungen (3) Technische und organisatorische Randbedingungen Ergebnis: (viele) Benutzeranforderungen (Spezifikation) Anmerkungen: Hilfsmittel sind Formblätter, Interviews, Fragebögen, umgangssprachlicher Text. Formale Hilfsmittel gibt es kaum. Diese Phase ist sehr zeitaufwendig, aber auch ausserordentlich notwendig. Eine vollständige konsistente Anforderungsspezifikation ist Voraussetzung für einen sinnvollen Entwurf. Wichtig ist die Identifikation von Organisationseinheiten und Aufgaben. KONZEPTIONELLER ENTWURF Ziel: Formales, integriertes Modell der Informationsstrukturen unabhängig vom Datenbanksystem oder der Hardware (1) Informationsstrukturen aus den Sichten der einzelnen Benutzer herausarbeiten (2) Redundanzen, Inkonsistemzen, Konflikte aufdecken und beseitigen (3) Zusammenfügen der Einzelsichten zu einer globalen Informationsstruktur Ergebnis: Konzeptionelles Schema Anmerkungen: Formale Hilfsmittel: Festlegen der Objekte, Attribute, Beziehungen (Entity Relationship Modell) Objekt: Ein Objekt (Ganzheit, engl. entity) ist etwas, das für ein Unternehmen von Interesse ist. Es muss jeweils einmalige Ausprägungen enthalten. In der Umgangssprache ist es normalerweise ein Substantiv. Beispiele: Maschinen, Konten, Kollegen, Angestellte, Verträge, Kurse. Attribut: Ein Attribut ist eine Eigenschaft eines Objektes. Umgangssprachlich erscheinen die Attribute meist nach 'hat'... Attribute von Kurs sind z.B. Kursnummer, Abteilungsnummer, Name, Semester, Einschreibtermin. Beziehung: Eine Beziehung (engl. relationsship) ist eine Verbindung zwischen zwei oder mehr Objekten. In der Umgangssprache ist es normalerweise ein Verb. Beispiele für Beziehungen zwischen zwei Objekten sind Angestellte ARBEITEN_FÜR Abteilung, Studenten STUDIEREN Fächer, Arbeiter WARTEN Maschinen. TFH Berlin/Steyer Datenbankentwurf LOGISCHER ENTWURF Ziel: Schema für das verwendete Datenbanksystem Übersetzung des konzeptionellen Schemas in die Datenstrukturen des Datenbanksystems Ist abhängig von den Modellierungsmöglichkeiten des Datenbanksystems Für das relationale Datenmodell gibt eine Theorie des Entwurfs (Normalformen). Ziele sind Redundanzfreiheit, Anforderungserfüllung, Einfachheit Ergebnis: Logisches Schema mit Zugriffsrechten, Randbedingungen (Constraints) EXTERNER ENTWURF Ziel: Vom gesamten logischen Schema werden entsprechend den Benutzeranforderungen mit der Datenbanksprache formale Benutzersichten für spezielle Benutzer abgeleitet. PHYSISCHER (INTERNER) ENTWURF Ziel: Optimale Weiterentwicklung und Verfeinerung des logischen Entwurfs entsprechend den Gegebenheiten der realen Umwelt Entwicklung des internen Schemas und Festlegen der Systemparameter abhängig von den Anforderungen an die Verarbeitung der Daten Es werden festgelegt: Speicherstrukturen Zugriffsmechanismen Grösse der Datenbank Verteilung auf Platten Grösse des Datenpuffers im Hauptspeicher Datenschutzkonzepte sensibler Daten Datensicherungsverfahren ... Ergebnis: Ladbares Datenbankschema TFH Berlin/Steyer Datenbankentwurf SYMBOLE Objekt/Entity Kunde Objekt/Entity mit Attributen Name Wohnort Kunde Beziehung/Relationship zwischen Objekten/Entities Name Wohnort Kunde Menge bestellt Name Preis Artikel Objekte werden zu Tabellen. Attribute werden zu Tabellenspalten. Beziehungen werden zu wenn 1:1-Beziehung: gleiche Schlüssel in den Objekttabellen wenn n:1-Beziehung: Spalte in der Mehrfachtabelle wenn 1:n-Beziehung: Zwischentabelle wenn n:m-Beziehung: Zwischentabelle Schlüsseleigenschaften: TFH Berlin/Steyer - eindeutig und obligatorisch - einfach oder mehrfach - Attributfeld(er) oder Kunstschlüssel Datenbankentwurf ER-TYPEN Tripel Leser leiht Buch Kette Leser leiht Buch Leser leiht Buch Stern Filiale Spindel bestellt Leser leiht gemahnt TFH Berlin/Steyer Buch verfasst von Autor Datenbankentwurf ER-MODELL einer FIRMA als Basis für ein System (1) Oberfläche (Formulare) 1 Verkauf 2 Buchhaltung 3 Einkauf Kunde Krechnung Kliefert Kbestellt Artikel Kasse Kunde Krechnung Lieferant Lrechnung Lieferant Lrechnung Lliefert Lbestellt Artikel (2) Prozeduralität (Programme) p1,p2,p3 p4 . . . p5,p6,p7 (3) Daten (Tabellen) Kasse Kunde Lieferant KRechnung LRechnung Kliefert Kbestellt TFH Berlin/Steyer Lliefert Artikel Lbestellt Datenbankentwurf ERWEITERUNGEN EINES ERA-ENTWURFES Spaltung der Attribute Adresse PLZ Ort Strasse wird zu Kunde Kunde Verfeinerung der Attribute Wohnort Name Grösse wird zu Kunde Kunde wohnt in Vervielfachen der Beziehungen bestellt Leser Buch leiht Mehrfache Beziehungen Dozent Einsatzplan LV LV Dozent Stundenplan Raum TFH Berlin/Steyer Zeit Ort Land Datenbankentwurf LOGISCHER ENTWURF mit ORACLE DATENTYPEN CHAR(size) CHARACTER VARCHAR(size) VARCHAR2(size) DATE LONG LONG VARCHAR RAW(size) LONG RAW ROWID Zeichenkette bis 255 wie CHAR wie CHAR, Länge ist Pflichtangabe wie CHAR, Werte sind in der echten Länge gespeichert Datumsangaben vom 1.1.4712 v.Chr. bis 31.12.4712 Zeichenkette bis 65535 wie LONG Binädaten bis 255 Zeichen wie RAW, bis 65535 eindeutiger Zeilenert in der Pseudospalte ROWID NUMBER NUMBER(*) NUMBER(*,s) NUMBER(p) NUMBER(p,s) Ziffernzahl 38 38 38 p p Kommastellen null null s 0 s DECIMAL DECIMAL(*) DECIMAL(*,s) DECIMAL(p) DECIMAL(p,s) 38 38 38 p p 0 0 s 0 s INTEGER SMALLINT 38 38 0 0 FLOAT FLOAT(*) FLOAT(b) REAL 38 38 b 63 null null null null DOUBLE PRECISION 38 null INTERNE DATENINTEGRITÄT create table erzeugt eine Tabelle einfache Form: create table kunde (knr integer, anrede char(5), nachname char(7), vorname char(7), plz integer, ort char(12), konto decimal(7,2)) mit Schlüsseln: create table emp (empno number not null primary key, ename char(10), job char(9), mgr hiredate sal comm deptno number, date, number(10,2), number(9,0) default null, number(2) not null) mit check: create table emp (empno number not null primary key, ename char(10) not null check (ename = upper(ename)), job char(9), mgr number, hiredate date check (hiredate >= sysdate), sal number(10,2) check (sal > 500), comm number(9,0) default null, deptno number(2) not null, pctfree 5 pctused 75 mit Speicher: create table salgrade (grade number, losal number, hisal number) tablespace human_resource storage (initial 6144 next 6144 minextents 1 maxextents 5 pctincrease 5) EXTERNE DATENINTEGRITÄT mit Beziehungen: create table emp (empno number not null primary key, ename char(10) not null check (ename = upper(ename)), job char(9), mgr number references emp(empno), hiredate date check (hiredate >= sysdate), sal number(10,2) check (sal > 500), comm number(9,0) default null, deptno number(2) not null references dept(deptno)) pctfree 5 pctused 75 dept Die Abteilungsnummer eines Angestellten muss eine Abteilungsnummer aus dept sein. emp q TFH Berlin/Steyer Die Vorgesetztennummer eines Angestellten muss selbst auch die Nummer eines Angestellten sein. Datenbankentwurf Logischer Entwurf mit ACCESS Datentypen : TEXT MEMO ZAHL DATUM/ZEIT WÄHRUNG ZÄHLER JA/NEIN OLE-Objekt Buchstaben oder Ziffern, max. 255 Buchstaben oder Ziffern, bis 64000 Rechentyp (1, 2, 4, 8 Bytes) Termine, mit Gültigkeitsprüfung Bezeichnung DM, 2 Dezimalstellen automatisches lückenloses Hochzählen beim Einfügen, beim Löschen bleiben die Lücken Boolesches Feld, sparsame Speicherung (1 Bit) Objekt aus anderer Anwendung, verbunden oder kopiert, z.B. Paintbrush-Bild Tip zu Zähler: Man kann einen lückenhaft gewordenen Zähler wieder lückenlos machen durch Löschen des Feldes (in der Entwurfsansicht) und sofortiges neues Definieren. Gültigkeitsregeln: Eine Gültigkeitsregel für Werte ist eine Regel für die Werte, die für ein Datenfeld zulässig sind. (1) Jeder Datentyp stellt für sich schon eine Regel dar. So können z.B. in ein numerisches Feld keine alphanumerischen Zeichen eingetragen werden. (2) Weitere Regeln können als Tabelleneigenschaften definiert werden. ->Entwurfsansicht->Ansicht->Tabelleneigenschaften->gewünschtes Feld wählen->ausfüllen (Beschreibung, Gültigkeitsregel, Gültigkeitsmeldung)->Datei->speichern (3) Man kann die einfachen Regeln auch zusammensetzen. Bei den definierten Feldern lassen sich noch Feldeigenschaften wie Feldgrösse, FORMAT, Dezimalstellen, Beschriftung, Standardwert, Eingabeformat, Eingabeschablonen und Ausgabeformate angeben. Es gibt zwei Arten von Beziehungen zwischen Tabellen: statische und dynamische 1 Dynamische Beziehungen, die nur für die Zeit einer Abfrage oder eines Formulars hergestellt werden (Select mit Join). 2 Statische Beziehungen, die explizit eingerichtet werden und bestehen bleiben. Sie werden bei jeder Änderung von Schlüsselfeldern kontrolliert und folgen gewissen Standardfällen.->Bearbeiten->Beziehungen In Access ist es möglich - entsprechend der Norm SQL/92 - Beziehungen verschiedener Art zwischen den Tabellen zu definieren, die das Datenmodell stärker integrieren. Schritte: Tabellen symbolisch darstellen mit ->Bearbeiten->Beziehungen->Hinzufügen Beziehungen herstellen durch Verbinden von Feldern Arten von Beziehungen festlegen (s.u.) Referentielle Integrität: Die referentielle Integrität gibt Regeln an für den Zusammenhang von Spalten in verschiedenen Tabellen. Im Beziehungsfenster werden zunächst alle benötigten Tabellen eingesammelt (->Bearbeiten->Beziehungen). Danach werden von der Primärtabelle (Haupttabelle) zur Sekundärtabelle (verknüpfte Tabelle) zwischen den gewünschten Spalten Verbindungslinien gezogen. Schliesslich wird eine gezogene Verbindung nach folgenden Eigenschaften charakterisiert: - 1:N-Beziehung, d.h. für jeden Datensatz der Haupttabelle können mehrere zugeordnete Datensätze in der verknüpften Tabelle existieren. Es kann auch Datensätze der Haupttabelle geben, denen noch keine verknüpften Datensätze zugeordnet sind, aber nicht umgekehrt. - 1:1-Beziehung, d.h. jeder Datensatz der Haupttabelle besitzt maximal einen zugeordneten Datensatz in der verknüpften Tabelle. Es kann auch Datensätze der Haupttabelle geben, denen noch keine verknüpften Datensätze zugeordnet sind, aber nicht umgekehrt. Voraussetzung für referentielle Integrität: Die Haupttabelle muss einen Pimärschlüssel oder einen eindeutigen Index besitzen. Die Beziehung muss auf dem Datenfeld des Primärschlüssels bzw. des eindeutigen Index basieren. - Aktualisierungsweitergabe ans Detailfeld, d.h die Werte der Verbindungsfelder in der Detailtabelle werden den Änderungen in der Mastertabelle angepasst, um die Beziehung aufrechtzuerhalten - Löschweitergabe an Detaildatensatz, d.h. entsprechende Datensätze der Detailtabelle werden wie in der Mastertabelle mit gelöscht Die klassischen Auswirkungen der referentiellen Integrität bei Änderungen in der Primärtabelle (Satz mit Detailzeilen wird geändert oder gelöscht) sind drei: - Blockieren (ankreuzen: Mit referentieller Integrität) Anwendungsfall: Blockieren der Löschung eines Kunden, wenn er noch unbezahlte Rechnungszeilen hat. - Kaskade=Löschen (ankreuzen: Löschweitergabe an Detaildatensatz) Anwendungsfall: Löschen auch von Hilfeinformationszeilen, wenn der Master wegfällt. - Werteweitergabe (ankreuzen: Aktualisierungsweitergabe an Detailfeld) Anwendungsfall: Nullsetzen von Reservierungszeilen, wenn ein Besteller gestrichen wird. Hinweis noch: Mit der graphischen Darstellung der Tabellenbeziehungen kann in der üblichen Windows-Weise gearbeitet werden: Tabellensymbole können vergrössert, verkleinert oder verschoben werden. Einzelne Beziehungslinien können angeklickt werden, um sie zu ändern oder zu löschen. Das erarbeitete Layout kann gespeichert werden. Es kann über Menüauswahl ein einzelnes Beziehungsmolekül oder das gesamte Beziehungsgeflecht angezeigt werden. TFH Berlin/Steyer Datenbankentwurf DATENBANKENTWÜRFE Videothek: Kunde – Ausleihe – Videofilm | Schauspieler Bibliothek: Leser – Ausleihe – Buch | Autor Verkehr: Fluggäste – Buchung – Plätze Handel: Einkauf – Lager – Verkauf (Bestellungen, Lieferscheine, Rechnungen, Mahnungen) Hochschule: Studenten belegen die Lehrveranstaltungen ihrer Dozenten Buchhandlung: Im Lager einer Buchhandlung stehen stehen Bücher von Verlagen zu Preisen Ladenkette: Lieferanten beliefern Filialen einer Ladenkette mit Waren. Malerbetrieb: Die Maler eines Malerbetriebes bemalen die Häuser ihrer Kunden. Autowerkstatt: Die Mechaniker einer Autowerkstatt reparieren die Autos ihrer Kunden auf Hallenplätzen. Aus Lehrer-, Raum-, Fach- und Klassendaten wird ein Stundenplan erstellt. Handel: Eingekaufte Waren werden in das Lager übernommen und dann weiterverkauft. Fertigung: Aus Rohstoffen und Teilen werden über mehrere Stufen fertige Waren gefertigt. Versandhaus: Von Lieferanten eingekaufte Waren werden in das Lager übernommen und an Kunden weiterverkauft. Fabrik mit Buchhaltung: Von Lieferanten für Geld eingekaufte Rohstoffe oder Teile werden in das Lager übernommen, von Arbeitern für Lohn weiterverarbeitet und an Kunden zu Preisen weiterverkauft. Liga: Mannschaften mit Spielern spielen nach einem Spielplan und stehen auf Plätzen in einer Tabelle. Küche: In einer Küche mit Kühlschrank, der gefüllt werden muss, werden nach Rezepten Speisen gekocht. Platzbuchungen: Fluggäste buchen die Plätze eines Verkehrsflugzeuges mit 200 Plätzen. (ebenso Theater) Verein: Mitglieder – Geräte – Finanzen Rechenzentrum: HW, SW, Personal, Benutzer Geld: Kunden, Konten, Zinsen, Zahlungsverkehr Plattenladen: Komponisten, Interpreten, Preise, Lager Buchladen: Bücher, Autoren, Preise, Verlage, Lager, Käufer Supermarkt: Lager, Regale, Waren, Warenkorb, Kassenbon TFH Berlin/Steyer Datenbankentwurf Fertigung: Stückliste, Bestellungen, Montage Fabrik: Einkauf, Lager, Fertigung, Verkauf, Buchhaltung Telefonbuch: Namen, Telefonnummern, Branchen Adressenverwaltung: Namen, Adressen, Merknale BVG-Fahrplan: Bahnhöfe, Linien, Zeiten, Anschlüsse Flugplan: Flughäfen, Linien, Zeiten, Anschlüsse Zugfahrplan: Bahnhöfe, Strecken, Zeiten, Anschlüsse Tourenplanung: Aufträge, Anlaufpunkte (z.B. Müllabfuhr) Schulungssystem: Stoobausteine, Lehrmittel, Kurse, Dozenten Warenwirtschaftssystem Steuererklärung: Steuerzahler, Werbungskosten Taxibetrieb: Fahrer, Fahrzeuge, Standorte, Kasse Wahlen: Parteien, Stimmen, Sitze, frühere Ergebnisse Kino/Theater: Spielplan, Plätze, Vorbestellung Spielr, Mannschaft, Spielplan, Tabelle, Plätze Küche: Rezepte, Artikel, Einkauf xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Kette, Stern, Spindel, Kreis TFH Berlin/Steyer