Anomalien und Normalformen



Ähnliche Dokumente
SQL. Allgemeines CREATE TABLE DROP TABLE ALTER TABLE INSERT INTO UPADTE DELETE SELECT

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

SQL (Structured Query Language) Schemata Datentypen

Tag 4 Inhaltsverzeichnis

Tag 4 Inhaltsverzeichnis

7. Übung - Datenbanken

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

Referentielle Integrität

IV. Datenbankmanagement

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Referentielle Integrität

Views in SQL. 2 Anlegen und Verwenden von Views 2

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

SQL. Fortgeschrittene Konzepte Auszug

SQL structured query language

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Informatik 12 Datenbanken SQL-Einführung

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Praktische SQL-Befehle

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Datenintegrität. Bisherige Integritätsbedingungen

Wiederholung VU Datenmodellierung

Datenbanken: Datenintegrität.

Wiederholung VU Datenmodellierung

Klausur zur Vorlesung Datenbanken I im Wintersemester 2011/12

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Labor 3 - Datenbank mit MySQL

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Referenzielle Integrität SQL

Datenbanksysteme 2013

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

SQL: statische Integrität

Beispiel 1: Filmdatenbank

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Schnellübersichten. SQL Grundlagen und Datenbankdesign

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

Bibliografische Informationen digitalisiert durch

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

SQL-Injection. Seite 1 / 16

Bedingungen über Werte Statische Integrität. CHECK-Klausel

6. Datenintegrität. Integritätsbedingungen

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

VO Datenmodellierung. Katrin Seyr

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

SQL und MySQL. Kristian Köhntopp

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Ein Ausflug zu ACCESS

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Relationales Datenbanksystem Oracle

Normalformen: Sinn und Zweck

Unterabfragen (Subqueries)

SEMINAR Modifikation für die Nutzung des Community Builders

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Übersicht über Datenbanken

105.3 SQL-Datenverwaltung

1. Ziel des Datenbankentwurfs

5.3 Datenänderung/-zugriff mit SQL (DML)

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Software-Engineering Einführung

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

Datenbanken. Zusammenfassung. Datenbanksysteme

Datenbanken im WI-Unterricht mit

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Sructred Query Language

Abfragen (Queries, Subqueries)

desk.modul : WaWi- Export

Web-Technologien. Prof. Dr. rer. nat. Nane Kratzke SQL. Praktische Informatik und betriebliche Informationssysteme

MySQL: Einfaches Rechnen.

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne

Arbeiten mit einem lokalen PostgreSQL-Server

Transkript:

Anomalien und Anomalien Funktionale Abhängigkeit und Schlüsselbegriff Prinzipiell mit DB-Entwurf fertig (und zufrieden). Aber... Gehen von einer schlechten Tabelle aus. Zeigen, was ist schlecht daran: Anomalien. Definieren exakt Schlüssel und Primärschlüssel. Transformieren eine schlechte Tabelle in gute Tabellen:. Ziel ist stets: Redundanz vermeiden, NULL vermeiden, wenige Tabellen. Anomalien und Anomalien Oft entstehen Tabellen quick and dirty (ungeplant) aus Zusammenstellung von Anwendungsdaten. Zettelsammlung von Comics, Freundinnen und verliehenen Comics in einer Tabelle zusammenfassen. FNr CNr Name EMail Titel Serie Nr Autor AusleihD Zurück 1 3 Clark Kent s@metro.com V for Vendetta - - Alan Moore 1.4.2012 Nein 2 5 Lois Lane l@metro.com Neverending All-Star Superman 10 Grant Morrison 8.5.2012 Nein 3 - Selina Kyle s@gotham.net - - - - - - 10 7 Bruce Wayne b@gotham.net Stadt Ohne Gnade Sin City 1 Frank Miller 1.1.2012 Ja - 1 - - The Highway Akira 1 Katsuhiro Otomo 1 2 Clark Kent s@metro.com Pursuit Akira 2 Katsuhiro Otomo - - 1.1.2012 Nein Erkennen, dass Comics, Freunde und Ausleihe miteinander vermischt sind: Probleme! DB, SS 12 May 7, 2012 1

Anomalien und Anomalien Einfüge-Anomalie oder welche Probleme macht die Tabelle beim Einfügen von Daten (Create). Einfügen eines neuen Freundes in die Liste. Alle Comic- und Ausleih-Daten unbesetzt: NULL Werte in der DB. (etwa bei Selina Kyle ) FNr CNr Name EMail Titel Serie Nr Autor AusleihD Zurück 3 - Selina Kyle s@gotham.net - - - - - - Einfügen eines neuen Comics in die Liste. Alle Freund- und Ausleih-Daten unbesetzt: NULL Werte in der DB. (etwa bei Akira: The Highway ) FNr CNr Name EMail Titel Serie Nr Autor AusleihD Zurück - 1 - - The Highway Akira 1 Katsuhiro Otomo - - Insbesondere Primärschlüssel ( FNr, CNr ) durch NULL-Werte nicht mehr eindeutig. Muss vermieden werden. Anomalien und Anomalien Änderungs-Anomalie oder welche Probleme macht die Tabelle beim Ändern von Daten (Update). Clark Kent erhält neue EMail-Adresse. Dann müssen an zwei Stellen in der Tabelle Änderungen vorgenommen werden. Fehleranfällig und kann zu Inkonsistenzen führen. Redundanzen vermeiden. DB, SS 12 May 7, 2012 2

Anomalien und Anomalien Lösch-Anomalie oder welche Probleme macht die Tabelle beim Löschen von Daten (Delete). Wenn wir den Datensatz zu Sin City: Stadt ohne Gnade löschen, verlieren wir auch unseren Freund Bruce Wayne. Wenn wir den Datensatz zu Lois Lane löschen, verlieren wir auch den Comic All-Star Superman: Neverending. Das ist unerwünscht. Anomalien und Funktionale Abhängigkeit und Schlüsselbegriff Beispiel der schlechten Tabelle zeigten Probleme mit Abhängigkeiten in der Struktur einer Tabelle. Betrachten dies nun abstrakt. Gegeben sei eine Tabelle mit der Attributmenge T. T = {FNr, CNr, Name, EMail, Titel, Serie, Nr, Autor, AusleihD, Zurück} Funkionale Abhängigkeit : Eine Menge von Attributen B T der Tabelle ist funktional abhängig von einer Menge von Attributen A T der Tabelle, wenn zu jeder konkreten Belegung der Attribute aus A nur maximal eine konkrete Belegung der Attribute aus B gehört: A B. Kenne ich für einen Datensatz die Attributwerte von A, dann weiss ich auch die Belegung der Werte von B. Trivial: T T, A A A T. DB, SS 12 May 7, 2012 3

Anomalien und Funktionale Abhängigkeit und Schlüsselbegriff {FNr, Name} {EMail} Studierendentabelle MatrNr Name Strasse PLZ Ort EMail Studiengang Dann {MatrNr, Name, PLZ} {Strasse, Ort, Email, Studiengang} Offensichtlich lässt sich die Menge links noch verkleinern. Man könnte bspw. Name herausnehmen. (Und auch noch PLZ.) Volle funktionale Abhängigkeit : Eine Menge von Attributen B T der Tabelle ist voll funktional abhängig von einer Menge von Attributen A T, wenn A B und für jede echte Teilmenge A von A gilt A B. Suchen nach einer minimalen Menge von Attributen. {MatrNr} {Ort, Name, Email}, {FNr} {Name, Email} Anomalien und Funktionale Abhängigkeit und Schlüsselbegriff Schauen auf verkürzte Relation Student: { MatrNr : integer, Name : text, PLZ : integer, Ort : text } Wählen Attributmengen X = {MatrNr}, Y = {PLZ}, Z = {Ort}. Dann X Y Z transitive Abhängigkeit. Ortsname sicherlich nicht direkt vom Studenten abhängig. PLZ legt aber eindeutig Ort fest. Liegt aber nicht in der Grundmenge X : transitiv abhängig. Es genügt PLZ zu kennen, um auf Ort zu schliessen. Hinweis auf Zerlegung in zwei Tabellen/Relationen. (Kommt noch bei.) DB, SS 12 May 7, 2012 4

Anomalien und Funktionale Abhängigkeit und Schlüsselbegriff Mit den neuen Begriffen nun klären, was ein Schlüssel einer Tabelle/Relation ist. Schlüssel : Sei T die Menge aller Attribute der Tabelle und sei S T eine weitere Attributmenge mit S T. Dann heißt S Schlüssel der Tabelle. Eindeutige Zuordnung eines Datensatzes aufgrund der Werte in der Attributmenge S. Keine Forderung der Minimalität. Damit T stets Schlüssel für Tabelle. Aber kein guter... Praxis interessiert an möglichst kleinem Schlüssel. Schlüsselkandidat : Sei T die Menge aller Attribute der Tabelle. Sei weiterhin S T eine Attributmenge, so dass T voll funktional abhängig ist von S. Dann heißt S Schlüsselkandidat der Tabelle. Und letztlich Primärschlüsel : ist ein willkürlich ausgewählter Schlüsselkandidat einer Tabelle. Beliebige minimale Menge von Attributen, die eindeutig auf Datensatz schliessen lässt. Häufig künstlicher Primärschlüssel durch Aufzählen. Aufteilung von T : Schlüsselattribute : Menge aller Attribute, die zu einem Schlüsselkandidaten gehören. Nichtschlüsselattribute : Menge aller Attribute, die zu keinem Schlüsselkandidaten gehören. Anomalien und Frage: Wie kann man schlecht strukturierte Tabelle in gute Tabellen umformen? Antwort: Schrittweise über erste, dann zweite und dann dritte bringen. Erzeugen neue Tabellen. helfen insbesondere, Redundanzen und NULL-Einträge zu vermeiden. 0NF 1NF 2NF 3NF BCNF 4NF 5NF 0NF: Nullte Normalform, Ausgangstabelle; 1NF, 2NF, 3NF: Erste, zweite, dritte Normalform; BCNF: Boyce-Codd-Normalform; 4NF, 5NF: Vierte, fünfte Normalform; DB, SS 12 May 7, 2012 5

Anomalien und Nullte Normalform Unsere unnormalisierte Ausgangstabelle, wie sie aus der Anwendung herausfällt. Anomalien und Erste Normalform Ziel: Auflösen von mengenwertigen und strukturierten Attributen. Erste Normalform : liegt vor, wenn jeder Attributwert eine atomare, nicht weiter zerlegbare Dateneinheit ist. Vorgehensweise: Strukturierte Attribute werden in ihre atomare Unterattribute zerlegt und jedem wird eine Spalte zugeordnet. Mengenwertige Attribute werden in einer Spalte zusammengefasst. (Kann zu Redundanzen führen.) Jeder Datensatz wird durch einen Primärschlüssel eindeutig identifiziert. (Etwa durch neues Attribut id.) Unser Datenbankentwurf sollte eigentlich zu Tabellen in 1NF geführt haben, aber... DB, SS 12 May 7, 2012 6

Anomalien und Strukturierte Attribute werden in ihre atomare Unterattribute zerlegt und jedem wird eine Spalte zugeordnet. Name Adresse EMail Clark Kent 123, Metropolis, Daily-Planet-Road 1 s@metropolis.com Bruce Wayne 321, Gotham, Manor-Place 1 b@gotham.net Lois Lane 123, Metropolis, Main-Road 42 l@metropolis.com id Name PLZ Ort Strasse Nr EMail 1 Clark Kent 123 Metropolis Daily-Planet-Road 1 s@metropolis.com 2 Bruce Wayne 321 Gotham Manor-Place 1 b@gotham.net 3 Lois Lane 123 Metropolis Main-Road 42 l@metropolis.com Hier sicherlich auch Name als Primärschlüssel möglich. Anomalien und Mengenwertige Attribute werden in einer Spalte zusammengefasst. (Kann zu Redundanzen führen.) Titel Serie Nr Autor1 Autor2 Schwarze Flamme B.U.A.P. 4 Mike Mignola John Arcudi Old Ghosts Watchmen 8 Alan Moore - Das Heiligtum von Gondwana Die Abenteuer von Blake und Mortimer 17 Yves Sente Andre Juillard In Heaven (Everything is Fine) #1 Spawn 8 Alan Moore - Titel Serie Nr Autor Schwarze Flamme B.U.A.P. 4 Mike Mignola Schwarze Flamme B.U.A.P. 4 John Arcudi Old Ghosts Watchmen 8 Alan Moore Das Heiligtum von Gondwana Blake und Mortimer 17 Yves Sente Das Heiligtum von Gondwana Blake und Mortimer 17 Andre Juillard In Heaven (Everything is Fine) #1 Spawn 8 Alan Moore Oder id als Primärschlüssel einführen. DB, SS 12 May 7, 2012 7

Anomalien und Zweite Normalform Ziel: Verhindern der (einfachen) Einfüge-, Änderungs- und Lösch-Anomalien. Zweite Normalform : liegt vor, wenn Relation in 1NF ist und jedes Nichtschlüsselattribut voll funktional abhängig vom Primärschlüssel ist. Vorgehensweise: Entfernen der Spalten, die nicht voll funktional vom Primärschlüssel abhängen. Zusammenfassen der zu einem Schlüssel gehörenden entfernten Spalten in neuer Tabelle. Zusammen mit dem Schlüssel. Erzeugt neue Tabellen. Anomalien und Titel Serie Nr Autor Schwarze Flamme B.U.A.P. 4 Mike Mignola Schwarze Flamme B.U.A.P. 4 John Arcudi Old Ghosts Watchmen 8 Alan Moore Das Heiligtum von Gondwana Blake und Mortimer 17 Yves Sente Das Heiligtum von Gondwana Blake und Mortimer 17 Andre Juillard In Heaven (Everything is Fine) #1 Spawn 8 Alan Moore titelid Autor titelid Titel Serie Nr 1 Schwarze Flamme B.U.A.P. 4 2 Old Ghosts Watchmen 8 3 Das Heiligtum von Gondwana Blake und Mortimer 17 4 In Heaven (Everything is Fine) #1 Spawn 8 1 Mike Mignola 1 John Arcudi 2 Alan Moore 3 Yves Sente 3 Andre Juillard 4 Alan Moore Aber immer noch Redundanz. (Doppelter Eintrag Alan Moore.) Deshalb... DB, SS 12 May 7, 2012 8

Anomalien und Zerlegen in drei Tabellen. Dritte Tabelle für Relation Autor schreibt Comic. Jeweils mit eigenem Primärschlüssel. titelid Titel Serie Nr 1 Schwarze Flamme B.U.A.P. 4 2 Old Ghosts Watchmen 8 3 Das Heiligtum von Gondwana Blake und Mortimer 17 4 In Heaven (Everything is Fine) #1 Spawn 8 Änderungen nur noch an einer Stelle notwendig. Löschen eines Comics löscht nicht den Autor. Einfügen von Comics und Autoren unabhängig möglich. autorid Autor 1 Mike Mignola 2 John Arcudi 3 Alan Moore 4 Yves Sente 5 Andre Juillard Aufgabe: Wie könnte man noch mit Serien umgehen? Beachte etwa autorid titelid 1 1 2 1 3 2 4 3 5 3 3 4 Titel Serie Nr Autor1 Autor2 Old Ghosts Watchmen 8 Alan Moore - V for Vendetta - - Alan Moore - Anomalien und Dritte Normalform Ziel: Beseitigen von Abhängigkeiten zwischen Nichtschlüsselattributen. (Verhindern von transitiven Anomalien.) Dritte Normalform : liegt vor, wenn Relation in 2NF und jedes Nichtschlüsselattribut nicht transitiv abhängig vom Primärschlüssel ist. Vorgehensweise: Entfernen der Spalten, die transitiv vom Primärschlüssel abhängen. Zusammenfassen der zu einem Schlüssel gehörenden entfernten Spalten in neuer Tabelle. Zusammen mit dem Schlüssel. Erzeugt neue Tabellen. DB, SS 12 May 7, 2012 9

Anomalien und MatrNr Name PLZ Ort 123101 Donald Duck 111 Entenhausen 210101 Bruce Wayne 200 Gotham 310101 Hellboy 666 DownUnder Wissen schon: MatrNr PLZ Ort transitiv abhängig. MatrNr Name PLZ PLZ Ort 123101 Donald Duck 111 210101 Bruce Wayne 200 310101 Hellboy 666 111 Entenhausen 200 Gotham 666 DownUnder Anomalien und Weitere Boyce-Codd Normalform : liegt vor, wenn Relation in 3NF und alle voll funktionalen Abhängigkeiten vom Primärschlüssel ausgehen. Machen wir nicht. Und es gibt noch 4NF, 5NF. Machen wir auch nicht mehr. Meist genügt 3NF für gute Tabellen im Rechner. DB, SS 12 May 7, 2012 10

Anomalien und 1NF verlangt nur atomare Attribute in der Tabelle. Werte einzeln abrufbar/abfragbar. 2NF verlangt 1NF und das Attribute vom gesamten Primärschlüssel abhängig. 3NF verlangt 2NF und das Nicht-Primärschlüssel-Attribute nicht transitiv abhängig. Ergebnis: Verminderung von Redundanz, Vermeidung von Inkonsistenz und Anomalien, Übersichtliche kleine Tabellen. Aber: Zuviele kleine Tabellen erschweren Überblick auf Miniwelt. Abfragen über mehrere Tabellen sehr aufwendig. SQL Allgemeines CREATE TABLE DROP TABLE ALTER TABLE Gute Tabellen sollen nun in eine DB auf den Rechner. Verwenden dazu DBMS SQLite. Verwenden Datenbanksprache SQL (structured query language). Grobe Aufteilung in vier Bereiche: DDL, DML, TCL, DCL. DB, SS 12 May 7, 2012 11

SQL Allgemeines Müssen Tabellen erzeugen, lesen, verändern, löschen (CRUD). Müssen Datenätze erzeugen, lesen, verändern, löschen (CRUD). Neue Abfragesprache : SQL (structured query language). Aufgeteilt in: 1. Data Definition Language DDL Befehle, um Tabellen und verwandte Elemente zu erzeugen, zu ändern oder zu löschen: CREATE, ALTER, DROP Machen wir. 2. Data Manipulation Language DML Befehle, um Datensätze auszuwählen, zu erzeugen, zu ändern und zu löschen: SELECT, INSERT, UPDATE, DELETE Machen wir. 3. Transaction Control Language TCL Befehle, um DB-Manipulationen endgültig in die Datenbank zu übernehmen: COMMIT, ROLLBACK Machen wir nicht. 4. Data Control Language DCL Befehle zur Berechtigungsvergabe von Lese- und Schreibrechten: GRANT, REVOKE Machen wir nicht. SQL Allgemeines SQLite unterstützt nur ein Subset von SQL: ABORT ACTION ADD AFTER ALL ALTER ANALYZE AND AS ASC ATTACH AUTOINCREMENT BEFORE BEGIN BETWEEN BY CASCADE CASE CAST CHECK COLLATE COLUMN COMMIT CONFLICT CONSTRAINT CREATE CROSS CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP DATABASE DEFAULT DEFERRABLE DEFERRED DELETE DESC DETACH DISTINCT DROP EACH ELSE END ESCAPE EXCEPT EXCLUSIVE EXISTS EXPLAIN FAIL FOR FOREIGN FROM FULL GLOB GROUP HAVING IF IGNORE IMMEDIATE IN INDEX INDEXED INITIALLY INNER INSERT INSTEAD INTERSECT INTO IS ISNULL JOIN KEY LEFT LIKE LIMIT MATCH NATURAL NO NOT NOTNULL NULL OF OFFSET ON OR ORDER OUTER PLAN PRAGMA PRIMARY QUERY RAISE REFERENCES REG- EXP REINDEX RELEASE RENAME REPLACE RESTRICT RIGHT ROLLBACK ROW SAVEPOINT SELECT SET TABLE TEMP TEMPORARY THEN TO TRANSACTION TRIGGER UNION UNIQUE UPDATE USING VACUUM VALUES VIEW VIRTUAL WHEN WHERE Reicht uns aber. Mehr in MySQL oder PostgreSQL. Schreibweisen: SQL-Befehle: alles in Großbuchstaben, Variablen: mit Kleinbuchstaben (siehe http://www.sqlite.org/lang_keywords.html) DB, SS 12 May 7, 2012 12

SQL CREATE TABLE Erste Aufgabe: Erzeuge Tabellen. CREATE TABLE table_name ( column_name column_type [,...] table_name eindeutig innerhalb der Datenbank. column_name eindeutig innerhalb der Tabelle. *_name prinzipiell zusammensetzbar aus allen Zeichen auf der Tastatur. Groß- und Kleinschreibung wird nicht unterschieden! Leerzeichen einklammern in [] oder "". atable, Verkaeufer1, meine_wichtige_tabelle, [my $ table], "my $!? table" Aber! Einfache Namen verwenden. Werden häufig in Abfragen verwendet. Erzeugt nur Datenschema. Keine Einträge. (Später INSERT INTO.) SQL CREATE TABLE Spaltendatentyp column_type in SQLite: INTEGER: ganze Zahl, 1, -42 REAL: relle Zahl, 47.11, 0.815 TEXT: Zeichenfolge, Hallo, Liebe Leute! BLOB: binäre Daten (binary large object). Andere SQL-Datentypen wie CHAR(n), VARCHAR(n),... werden darüber ersetzt. bsp = { bsp_id: integer, titel: text, wert: real } CREATE TABLE bsp ( bsp_id INTEGER, titel TEXT, wert REAL INSERT INTO bsp VALUES (1, Ein Titel, 0.0 DB, SS 12 May 7, 2012 13

SQL CREATE TABLE Modifikationen: Erzwingen von nichtleeren Einträgen. CREATE TABLE table_name ( column_name column_type NOT NULL [,...] CREATE TABLE bsp ( bsp_id INTEGER NOT NULL, titel TEXT, wert REAL NOT NULL Einträge in die DB ohne Angabe von bsp_id und wert werden von dem DBMS abgelehnt. titel kann frei bleiben. SQL CREATE TABLE Modifikation: Vorgabe des Primärschlüssels. Oder CREATE TABLE table_name ( column_name column_type PRIMARY KEY [,...] CREATE TABLE table_name ( column_name column_type NOT NULL, [,...] PRIMARY KEY (column_name[,...]) PRIMARY KEY implizit NOT NULL. Legt Primärschlüssel fest. Garantiert Eindeutigkeit des Datensatzes. Weiterer Datensatz mit gleichem Primärschlüssel wird vom DBMS abgelehnt. DB, SS 12 May 7, 2012 14

SQL CREATE TABLE MatrNr Name Fach VorlNr Titel SWS MatrNr VorlNr CREATE TABLE student ( MatrNr INTEGER PRIMARY KEY, Name TEXT NOT NULL, Fach TEXT CERATE TABLE vorlesung ( VorlNr INTEGER PRIMARY KEY, Titel TEXT NOT NULL, SWS INTEGER NOT NULL CERATE TABLE hoeren ( MatrNr INTEGER NOT NULL, VorlNr INTEGER NOT NULL, PRIMARY KEY (MatrNr, VorlNr), FOREIGN KEY (MatrNr) REFERENCES student(matrnr), FOREIGN KEY (VolrNr) REFERENCES vorlesung(vorlnr) SQL CREATE TABLE Modifikation: Vorgabe von Standardwerten. CREATE TABLE table_name ( column_name column_type DEFAULT value [,...] Belegt Eintrag mit Wert value, wenn kein Wert angegeben wurde. CREATE TABLE bsp ( bsp_id INTEGER PRIMARY KEY, titel TEXT DEFAULT Unbekannt, wert REAL NOT NULL INSERT INTO bsp (bsp_id, wert) VALUES (2, 2.0 DB, SS 12 May 7, 2012 15

SQL CREATE TABLE SQL DROP TABLE Zweite Aufgabe: Lösche Tabelle. DROP TABLE table_name; Löscht gesamte Tabelle table_name. Modifikationen: DROP TABLE table_name CASCADE; Löscht alle Verweise in anderen Tabellen. DROP TABLE table_name RESTRICT; Verhindert löschen, wenn noch Verweise in anderen Tabellen. DB, SS 12 May 7, 2012 16

DB, SS 12 May 7, 2012 17