Datenbanksysteme: Unterschied zwischen den Versionen

Aus II-Wiki
Zur Navigation springen Zur Suche springen
 
Zeile 41: Zeile 41:
  
 
Ein Datenbankmodell legt Syntax und Semantik von DB-Beschreibungen für ein Datenbanksystem fest.
 
Ein Datenbankmodell legt Syntax und Semantik von DB-Beschreibungen für ein Datenbanksystem fest.
 +
 +
Außerdem legt es fest:
 +
* '''statische Eigenschaften'''
 +
** Objekte
 +
** Beziehungen (zwischen Objekten)
 +
 +
* '''dynamische Eigenschaften'''
 +
** Operationen
 +
** Beziehungen (zwischen Operationen)
 +
 +
* '''Integritätsbedingungen'''
 +
** an Objekte
 +
** an Operationen
 +
 
-------
 
-------
 
ältere Inhalte
 
ältere Inhalte
 +
 
== Relationale Datenbanken ==
 
== Relationale Datenbanken ==
  

Aktuelle Version vom 16. Januar 2021, 13:34 Uhr

Grundlagen Relationaler Datenbanken

Relationen für tabellarische Daten

Datenbank = Menge von Tabellen = Relationen

  • Relationenschema - Tabellenkopf
  • Tupel - Zeile der Tabelle
  • Relation - Menge aller Einträge
  • Attribut - Spaltenüberschrift
  • Attributwert - Eintrag in Spalte

Schlüssel sind Einträge, die Tupel identifizieren können.\\ Fremdschlüssel sind Einträge, die in einer anderen Tabelle ein Schlüssel sind.

Fragen

  • Was ist der Unterschied zwischen Relationen und Tabellen?
  • Im Vergleich zu Tabellen sind Relationen duplikatfrei. Was heißt das?
  • Fremdschlüssel gehören zu den Integritätsbedingungen. Warum?
  • Was bedeutet „Wertebereich“ in der Relationalalgebra?

Grundoperationen der Relationalalgebra

Rechnen auf Tabellen. Tabelle und Operation ergibt neue Tabelle. Die Menge aller dieser Rechenregeln ist die Relationalalgebra.

Unäre Operatoren

  • Selektion \sigma: Zeilen auswählen
  • Projektion \pi: Spalten auswählen
  • Umbenennung \beta: Attributnamen umbenennen. Nur temporär.

Binäre Operatoren

  • Natürlicher Verbund (Join): Verbinden von Tabellen über gleichbenannte Spalten. „Aneinanderkleben“
  • Vereinigung: Beide Tupelmengen zusammen, man schreibt die Tabellen sozusagen untereinander. Attribute der Relationen müssen gleich sein. Macht ja sonst keinen Sinn.
  • Differenz: eliminiert Tupel aus erster Relation, die auch in zweiter Relation vorkommen.
  • Durchschnitt: Die Tupel, die in beiden Relationen vorkommen.


Entity-Relationship-Modell

Datenbankmodelle

Es gibt Entwurfsmodelle und es gibt Realisierungsmodelle.

Ein Datenbankmodell legt Syntax und Semantik von DB-Beschreibungen für ein Datenbanksystem fest.

Außerdem legt es fest:

  • statische Eigenschaften
    • Objekte
    • Beziehungen (zwischen Objekten)
  • dynamische Eigenschaften
    • Operationen
    • Beziehungen (zwischen Operationen)
  • Integritätsbedingungen
    • an Objekte
    • an Operationen

ältere Inhalte

Relationale Datenbanken

Relationenalgebra

Selection

Projektion

Natürlicher Verbund

Umbenennung

Vereinigung

[...]

Differenz

[...]

Durchschnitt

[...]

SQL-Formulierung

CREATE TABLE

CREATE TABLE tbl_name
(
  [ col_name type 
      [NOT NULL | NULL]
      [DEFAULT default_value]
      [AUTO_INCREMENT]
      [ UNIQUE [KEY] | [PRIMARY] KEY]  // Entweder ist nur eine Spallte Schlüßel
  | PRIMARY KEY (index_col_name,...)   // Oder Mehrere zusammen bilden ihn
  | FOREIGN KEY (index_col_name,...) 
      REFERENCES tbl_name [(index_col_name,...)]]
  ],...
);

Beispiel:

CREATE TABLE Rezept
(
  RezeptNr INTEGER NOT NULL,
  Bezeichnung VARCHAR(32) NOT NULL,
  Bemerkung VARCHAR(256),
  PRIMARY KEY (RezeptNr, Bezeichnung),
  FOREIGN KEY (Bezeichnung) REFERENCES Medikament(Bezeichnung)
);

INSERT

INSERT INTO tbl_name [(col_name,...)]
    VALUES ({expr | DEFAULT},...),(...),...

UPDATE

UPDATE table_references
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_condition]

DELETE

DELETE FROM tbl_name
    [WHERE where_condition]

SELECT

SELECT
    [DISTINCT]
    select_expr, ...
    [FROM table_references
      [WHERE where_condition]
      [GROUP BY {col_name | expr | position}
        [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]

Verschachtelung mit where_condition möglich.

  WHERE [NOT] IN references

Agregatfunktionen:

count, sum, avg, min, max

Zusammenhänge

Eine Relationsalgebranfrage kann in ein SQL-Anfrage überfürt werden und umgekert.

SELECT Vorname, Name
FROM Kunde
WHERE Ort = ’Berlin’

ER-Modell