SQL Oracle DB
Datenbanken I
Datenbanken I
-
- 1 / 27
-
Cartes-fiches
Aufgaben des Administrators:
Aufgabenteilung:
–Einrichten einer Datenbank, Zugriffsschutz
–Betrieb und Kontrolle der Datenbank
–Anwender: DML (Select, Insert, Update, Delete)
–Administrator: DDL & DCL (Create Table, Create View, Grant, …)
Was ist SQL?
eine komfortable, mächtige und normierte Schnittstelle der relationellenDBMS
Beispiel einer DB ?
–Oracle, DB2, MS SQL Server, MySQL, PostgreSQL, Sybase
Objektorientierte und objektrelationale Datenbanken?
–Oracle, PostgreSQL
•Hierarchische Datenbanken
–IMS
•Netzwerkartige Datenbanken
–IDMS, UDS
NoSQL?
Not onlySQL!
NoSQLDatenbanken gliedern sich in?
Key/Value und dokumentenbasierte Datenbanken
•z.B. CouchDB, MongoDB
•Schemafreie Modelle, daher sehr flexibel
–Spaltenorientierte Datenbanken
•z.B. Google Big Table, Simple DB von Amazon, HBase, Cassandra
•Die Daten werden spaltenweise gespeichert!
•Bei Anfragen nach wenigen Eigenschaften extrem performant
–GraphenorientierteDatenbanken
•z.B. Sones, Neo4j
•Wie finde ich den besten Weg von A nach B?
Relation:
Relation:Menge von Tupeln
Tabelle:
Multimenge von Tupeln
Was bedeutet SQL?
Structured Query Language
Programmiersprache für Zugriff auf relationale Datenbanken
Geschichte von SQL?
•SEQUEL (1970) durch Coddauf Basis der Relationalen Algebra entwickelt.
•Durch Oracle im Jahr 1979 als SQL vorgestellt.
•Grund-Normen: SQL1 (1987) & SQL2 (1992) (SQL2 heute durchgängig implementiert)
•SQL3: 1999 (Objektorientierung)
•Erweiterungen wie XML-Unterstützung in SQL 2003, SQL 2006, SQL 2008 & SQL 2011
•Bis auf wenige Abweichungen wird SQL2 von allen wichtigen RDBS unterstützt
Regeln von Codd
Grundregel:
Regel 1 (Informationsregel):"
Regel 2 (Garantierter Zugriff):"
Regel 3 (Systematische Behandlung von NULL-Werten):"
Grundregel:?
Ein relationales Datenbankmanagementsystem (RDBMS) muss Datenbanken allein durch seine relationalen Fähigkeiten vollständig verwalten können
Regel 1 (Informationsregel):"
"Alle Informationen in einer relationalen Datenbank werden explizit auf der logischen Ebene und auf genau eine Weise dargestellt, und zwar als Werte in Tabellen."
Regel 2 (Garantierter Zugriff):"
Jedes einzelne Datenelement in einer relationalen Datenbank muss garantiert durch eine Kombination aus Tabellennamen, Primärschlüssel und Attributnamen logisch zugänglich sein."
Regel 3 (Systematische Behandlung von NULL-Werten):
Unbekannte (NULL)-Werte (im Gegensatz zu einer leeren Zeichenkette, Leerzeichen oder numerischer Null) werden in relationalen Datenbanken explizit unterstützt und stellen unbekannte oder nicht zutreffende Informationen in einer systematischen und datentypunabhängigen Weise dar. Das RDBMS muss Funktionen für diese fehlenden Werte zur Verfügung stellen. Die Funktionen müssen Datentyp-unabhängig sein."
Attribut
Ein Attribut ist ein atomares Datenelement, mit dessen Hilfe die betrachteten Objekte beschrieben werden.
Tupel (1/2) (2/2)
–Wert eines Attributs r im Tupel t:t.r
–Identische Tupel:Zwei Tupel sind identisch, wenn sie genau dieselben Attribute mitjeweils denselben Werten haben.
–Widersprüchliche Tupel:Zwei Tupel r und s sind widersprüchlich, wenn es einen Attributbezeichnergibt, der sowohl in r als auch in s vorkommt und für den r.a≠ s.aist.
–Widerspruchsfreie Tupel:Zwei Tupel sind widerspruchsfrei,
Relationenschema
Ein Relationenschemaist durch eine Menge von Attributbezeichnern gegeben, welchen je einem Gebiete zugeordnet ist.
Beispiel:
( mid NUMBER,
name VARCHAR,
eintritt DATE)
kurz:( a1, ..., an )falls Gebiete nicht interessieren
Ein Tupel t ist kompatibel zu einem RelationenschemaS, wenn gilt:
•t enthält nur Attibutbezeichner, die in S vorkommen, und
•für jeden Attributbezeichner a von t gilt: t.agehört zu d(a)
Relation
Eine Relation ist eine Menge von Tupeln, welche zum zugeordneten Relationenschemakompatibel sind.
Schreibweise:Relationsbezeichner(Attributbezeichner1, Attributbezeichner2, ...,Attributbezeichnern)
Beispiel:Mitarbeiter(mid,name,adresse,eintritt)
Bemerkung:
Die Mengeneigenschaft von Relationen führt zu folgenden Konsequenzen:
•Eine Relation kann nicht zwei identische Tupel enthalten.
•Die Reihenfolge der Tupel innerhalb einer Relation ist irrelevant.
Relationales Datenbankschema
Ein Schema für eine relationale Datenbank wird durch folgende Angaben festgelegt:
•Eine Menge von Bezeichnern für Relationen
•Für jede Relation ein Relationenschema
•Für jede Relation weitere Konsistenzbedingungen wie Schlüsselfelder, NOT-NULL-Marken, Werteinschränkungen, etc.
Relationale Datenbank
Eine relationale Datenbank ist gegeben durch eine Menge von Relationen, die jeweils durch das entsprechende Relationenschemabestimmt sind und die die jeweiligen Integritätsregeln erfüllen.
Primärschlüssel
Tupel müssen innerhalb einer Relation eindeutig identifizierbar sein. Zu diesem Zweck ist ein so genannter Schlüssel erforderlich.
Definitionen:
–Ein(e) Attribut(-kombination) einer Relation besitzt die Schlüsseleigenschaft, wenn es (sie) seine Tupel eindeutig identifiziert.
–Attribute und Attributkombinationen, welche die Schlüsseleigenschaft besitzen, heissen Schlüsselkandidaten.
–Der aus möglichen Schlüsselkandidaten ausgewählte Schlüssel heisst Primärschlüssel.
Minimalitätsprinzipfür Primärschlüssel:
Primärschlüssel sollten aus möglichst wenigen Attributen zusammengesetzt sein.
Schreibweise: Primärschlüsselattribute werden (durchgezogen) unterstrichen:
Beispiel:Mitarbeiter(mid,name,adresse,eintritt)
Fremdschlüssel
Beziehungen zwischen Tupelnverschiedener Relationen werden über Fremdschlüssel realisiert. Die Attributwerte eines Fremdschlüssels der abhängigen Relation beziehen sich dabei immer auf die Attributwerte des Primärschlüssels in der zugeordneten (Vater-)Relation.
Definitionen:
Bei zwei zueinander in Beziehung stehenden Relationen heisst diejenige mit dem Primärschlüssel: Vaterrelation
mit dem Fremdschlüssel: Abhängige Relation
Schreibweise: Fremdschlüsselattribute werden gestrichelt unterstrichen respektive kursiv geschrieben:
Beispiel:Mitarbeiter(mid,name,adresse,eintritt,abtid)
Verhaltensweisen beim Löschen eines Tupels der Vaterrelation: (ON DELETE)NO ACTION, CASCADE, SET NULL