Entwurf des Datenbanksystems (DBS) Inhalt Gründe für die Auswahl eines DBS Haupttätigkeiten beim Entwurf eines Relationalen DBS Relationenmodell (Schemata, Schlüssel, Integritätsbedingungen) Normalisierung Views Indices Zugriffsrechte Haupttätigkeiten beim Entwurf eines Objektorientierten DBS Definition der Objekte mittels ODL Formulierung von Abfragen mittels OQL Christoph Riewerts, Prof. Dr. Helmut Balzert V2.0 Datei: DesignDBMSVorlesung.ppt, Seite 1
Entwurf des Datenbanksystems (DBS) Kriterien für die Notwendigkeit eines DBS (statt eines Dateisystems): mehrere Benutzer/Programme gleichzeitig redundanzarme Speicherung umfangreiche Daten zuverlässige Verwaltung dezidierte Zugriffsrechte ungeplante Abfragen Datenstrukturen müssen während der Nutzungsphase begrenzt angepasst werden Erstelltes ER- oder OOA-Modell enthält mehrere Entitätsmengen bzw. Klassen mit mehreren Assoziationen und/oder Aggregationen (M:N-Kardinalitäten). Gründe für ein Relationales Datenbanksystem (RDBS): Relativ einfache, formatierte Datenbestände, Antwortzeiten auf Anfragen nicht kritisch, Anwendungsprogramme sind nicht objektorientiert Gründe für ein objektorientiertes Datenbanksystem (ODBS): Komplexe graphartige Strukturen (CAx-Systeme, geographische Informationssysteme, Netzleitsysteme, Multimedia-Anwendungen), Anwendungsprogramme objektorientiert. Seite 2
Übung: Datenmodell vs. Klassendiagramm Thema: Seminarorganisation Überführen Sie das vorgegebene Datenmodell (ER-Modell) in ein Klassendiagramm unter Berücksichtigung der richtigen UML-Syntax! Seite 3
Entwurf eines relationalen Datenbanksystems (RDBS) Haupttätigkeiten in der DB-Entwurfsphase: Entwurf des Relationenmodell Festlegen der Relationenschemata mit Namen, Attributen und deren Wertebereichen Beschreibung der Abhängigkeiten (Schlüsselattribute) Beschreibung der Integritätsbedingungen Normalisierung bis zur 3. Normalform (3NF-Zerlegung) Optimierung des logischen Schemas unter allgemeinen oder spezifischen Kriterien und dazu Eliminierung bzw. Reduzierung der Datenredundanzen Festlegung von view-schemata für externe Sichten Festlegung von Indexattributen, um bestimmte, häufig wiederkehrende gleiche Anfragen in einer vorgegebenen Dialogzeit beantworten zu können Festlegen von Zugriffsrechten Haupttätigkeit in der DB-Implementierungsphase: Einrichten der DB mittels der Sprache DDL (data definition language) und Formulierung der Abfragen (ggfs Einbringen von stored procedures) mittels der Sprache DML (data manipulation language) Seite 4
Übung: Normalisierung eines Relationenschemas Thema: Verwaltung von Verbrauchsmaterial Material besitzt eine eindeutige Materialnummer, eine Bezeichnung, im Allgemeinen mehrere Lieferanten, die eine eindeutige Lieferantennummer besitzen, sowie einen Firmennamen und eine Anschrift. Für jeden Lieferanten ist die Bestellnummer des Materials, die Verpackungseinheit und der Preis zu speichern. Welche Normalform besitzt das folgende Relationenschema: Mat.- Nr. Mat.-Bez. Lief.-Nr. Firmenname Bestell-Nr. Verp.-Einh. Preis 12 HD-Diskette 8 Infotrade 80808 10 29,40 12 HD-Diskette 10 Softdis 1304 10 25,90 10 DD-Diskette 8 Infotrade 80807 10 14,60 Normalisieren Sie das Relationenschema weiter! Seite 5
Entwurf eines relationalen Datenbanksystems (RDBS) Festlegung von view-schemata (Tabellen) für externe Sichten (zur Auswertung) Ein view-schema kann sowohl auf Relationenschemata als auch auf bereits definierten view-schemata aufbauen ein view-schema enthält Name, Attributnamen und Selektionsbedingungen Zu jedem Attributnamen muss das Attribut und das Relationenschema/view-Schema angegeben werden, auf welches es sich bezieht Selektionsbedingungen (Konditionen) geben an, wie der Inhalt des view-schemas aus den Inhalten der zugehörigen Schemata ermittelt werden soll. Beispiel eines view-schemas: Name: Teilnehmerliste_Nr_99 Attribute: Person.Name Person.Vorname Person.Ort Conds: Person.Personal-Nr = Kunde.Personal-Nr and bucht.personal-nr = Kunde.Personal-Nr and bucht.veranstaltungs-nr = 99. Seite 6
Übung: Herstellen eines view-schemas Thema: Seminarorganisation Erstellen sie eine Liste mit Personalnummer, Funktion, Umsatz, Stichtag und Betrag von allen Kunden, die im Zahlungsverzug sind. Syntax siehe Beispiel. Personalnummer, Funktion und Umsatz sind Attribute des Relationenschemas/Tabelle Kunde. Betrag und Stichtag sind Attribute des Relationenschemas/Tabelle Zahlungsverzug. Seite 7
Entwurf eines relationalen Datenbanksystems (RDBS) Festlegung von Indexattributen (in SQL: CREATE INDEX...): Alle heutigen Standard-Datenbankmanagementsysteme (DBMS) machen für die Einrichtung von Zugriffspfaden (Indexen) extensiven Gebrauch von B-Baum- Organisationsformen und den dazugehörenden Algorithmen (für den Anwender auf der logischen Ebene nicht sichtbar); unter Oracle wird z.b. bei der Deklaration des Attributs PRIMARY KEY automatisch ein entsprechender Index eingerichtet.. Indexe haben häufig eine Doppelfunktion: Unterstützung eines schnellen Zugriffs über Suchschlüssel und Kontrollverzeichnis, um auf doppelte Schlüsselwerte prüfen bzw. deren Eintrag in die Datenbank verhindern zu können, wenn dies gewünscht ist. (z.b. bei Primärschlüsseln) Festlegen von Zugriffsrechten (in SQL: GRANT...): Hängt von dem Ziel-DBMS ab, so daß oft nur Zugriffsrechte für Relationen bzw. views als ganzes vergeben werden können U.U. müssen geeignete views gebildet werden Wird ein Recht entzogen, dann erlischt es auch für alle, an die es weitergegeben worden ist Seite 8
Entwurf eines objektorientierten Datenbanksystems (ODBS) Objekte werden unverändert gespeichert, sie werden nicht in Tabellen transformiert Objekt-Definitionssprache ODL (Object Definition Language) der ODMG (Object Database Management Group): Jede Klasse des OOA-Modells wird in ODL durch eine Schnittstellendeklaration (interface declaration) beschrieben; interface Firma (extent Firmen key Kurzname) { attribute String Kurzname; attribute String Name; attribute String Adresse; }. attribute String Kurzmitteilung; relationship Set <Kunde> ist_arbeitgeber_von inverse Kunde:: ist_mitarbeiter_von; void Mitteilung_drucken ( ); Assoziationen, Aggregationen und Kompositionen aus dem OOA-Diagramm werden durch eine relationship- Anweisung in den beiden beteiligten Klassen beschrieben Java-Sprachanbindung legt die Erzeugung und Verwaltung von Extensionen nicht verbindlich fest: Üblich ist Plural des Klassennamens als Name der Ext. und Definition der Schlüssel dort Ist keine Extension angegeben, dann kann mit der select- Operation nicht selektiert werden. Seite 9
Entwurf eines objektorientierten Datenbanksystems (ODBS) Anfragesprache OQL (object query language) der ODMG: Ermöglicht wie die DML bei RDBS einen deklarativen Zugriff auf ODBS Kann als eigenständige, interaktive Datenbank-Sprache und eingebettet in verschiedene Programmiersprachen benutzt werden OQL besitzt aber keine Einfüge- und Änderungsoperationen (wie z.b.»insert«in SQL), dazu müssen Anwendungsprogramme geschrieben werden OQL besitzt die grundsätzliche»select-from-where«-struktur von SQL-Anfragen, ist jedoch nicht mit SQL kompatibel: Beispiel: Liste aller Kunden: select x from Kunden x where x.adresse = Dortmund and x.umsatz > 5000.00 Ergebnis: Menge aller Objekte aus der Klassenextension Kunden, bei denen die angegebenen Bedingungen erfüllt sind Seite 10
Lösung der Übung: Datenmodell vs. Klassendiagramm (Seite 3) Firma Per son Personal-Nr Name Adresse Gebur tsdatum Kurzm itteilung erstelle Mitteilung Kurzname Name Adresse Kurz mitteilung erstelle Mitteilung ist_ar beitgeber_von ist_mitarbeiter_von 0..1 * Arbeitgeber Mitarbeiter Kunde Funk tion Um satz Seite 11
Mat.- Nr. Lösung der Übung: Normalisierung (Seite 5) Mat.-Bez. Lief.-Nr. Firmenname Bestell-Nr. Verp.-Einh. Preis 12 HD-Diskette 8 Infotrade 80808 10 29,40 12 HD-Diskette 10 Softdis 1304 10 25,90 10 DD-Diskette 8 Infotrade 80807 10 14,60 Seite 12
Lösung der Übung: Herstellen eines view-schemas (Seite 7) Name: Liste der Kunden mit Zahlungsverzug Attribute: Kunde.Personal_Nr, Kunde.Funktion, Kunde.Umsatz, Zahlungsverzug.Betrag, Zahlungsverzug.Stichtag Conditions: Kunde.Personal_Nr = Zahlungsverzug.Personal_Nr In SQL-Statements: Select Kunde.Personal_Nr,Umsatz,Funktion,Betrag,Stichtag from Kunde, Zahlungsverzug Where Kunde.Personal_Nr=Zahlungsverzug.Personal_Nr Seite 13