Überblick über die "Entstehung" einer Relationalen Datenbank

Inhaltsverzeichnis

1 Konzeptionelles Datenbankmodell (Semantisches Datenbankmodell)

1.1 Begriffe

1.2 Details zum semantischen(konzeptionellen) Datenbankmodell

Welche Entitäten und Attribute gibt es im Firmenszenario?
Worüber müssen Informationen gesammelt werden?
Abteilungen sind Mitarbeiter zugeordnet, die in Projekten arbeiten
Welche Informationen müssen gesammelt werden?
pro Mitarbeiter: m_nr, m_name, m_vorname, wohnort KEINE Abteilungsnummer!
pro Abteilung: abt_nr, abt_name, stadt
pro Projekt: pr_nr, pr_name, mittel
pro Arbeiten: aufgabe, einst_dat KEINE Mitarbeiter- und KEINE Projektnummer!
Welche Beziehungen gibt es zwischen den Entitäten(bzw. den Tupeln in den Entitäten)?
(1) Man muss wissen welcher Mitarbeiter welcher Abteilung zugeordnet ist
(2) Man muss wissen welcher Mitarbeiter hinter welchen Arbeiten -Einsatz steckt
(3) Man muss wissen an welchem Projekt -Einsatz gearbeitet wird

1.2.1 Vorstellung einer (weiteren möglichen) Dokumentationstechnik für ER-Diagramme(Barker)

Zu den Elementen gehören Entitäten und Beziehungen

Entitäten

Name:

Der Name der Entität wird oberhalb der Trennlinie, der sogenannten "Softbox", eingetragen.

Barker Beispiel
Attribute:

Werden in die "Softbox" unterhalb des Trennstriches eingetragen!

Zudem wird die Optionalität eines Attributs über die folgenden Symbole ausgedrückt.

Symbol Typ
* zwingend
o optional
# das Attribut ist ein UID bzw. gehört zu einem UID

Die Symbole werden vor dem Attributnamen notiert

Barker Beispiel

Beziehungen

1.2.2 vorläufige Darstellung des Firmen-Szenarios


vorläufiges Firmenszenario

1.2.3 Möglicher Aufbau eines UIDs

(1) besteht aus einem Attribut: Attribut mit # kennzeichnen
(2) besteht aus mehreren Attributen: alle diese Attribute mit # kennzeichnen
(3) besteht aus einem (oder mehreren) Attribut(en) UND einem (oder mehreren) Beziehung(en): Attribut(e) mit # kennzeichnen UND kennzeichnen, dass auch noch die Beziehung(en) Bestandteil des UIDs sind, durch Zeichnen eines Querstriches in der Beziehungslinie
UIDP3
(4) besteht aus mehreren Beziehungen: Querstriche bei den Beziehungen eintragen

1.2.4 Übung1: Zum "Beispiel-Szenario" das passende ER-Diagramm erstellen

Übung 1

1.2.5 endgültige Darstellung des Firmen-Szenarios

engültige Firmenszenario

1.2.6 "Besonderes" Teilmodell in ER-Modellen

2 Logisches Datenbankmodell (Relationales Datenbankmodell)

2.1 Details zum Logischen (Relationale) Datenbankmodell

2.1.1 Handwerkliches

2.1.2 Beispiel 1: Firmen-Szenario als Relationales Modell

Beispiel Firmenszenario

2.1.3 Beispiel 2: eine N:M-Beziehung umgesetzt ins Relationale Modell

Beispiel 2 N_M Beziehung

3 Physisches Datenbankmodell

3.1 Details zur Implementierung (des physischen Modells)

3.1.1 Grundaufbau (Minimalaufbau) der CREATE TABLE -Anweisung

				CREATE TABLE Tabellenname
(
    Spaltendefinitionsliste
)
			

Hinweise zu Tabellenname:

3.1.2 Minimalaufbau der Spaltendefinitionsliste

mindestens eine Spaltendefinition; falls mehrere notwendig, müssen diese auch jeweils mit einem Komma voneinander getrennt werden

Minimalaufbau einer Spaltendefinition:

Spaltenname Datentyp
			

3.2 Überblick zu weiteren Angaben innerhalb einer CREATE TABLE-Anweisung

3.2.1 auf Spaltenebene

3.2.2 auf Tabellenebene

3.3 Details zu Erweiterungen auf Spaltenebene

3.3.1 Standardwert(Default) zuordnen

3.3.2 Festlegung, dass eine Spalte zwingend einen Wert besitzen muss

3.3.3 Festlegung der erlaubten Werte für eine Spalte

3.3.4 EINE Spalte zum "Primärschlüssel" erklären

3.3.5 EINE Spalte zum "Fremdschlüssel" erklären

3.3.6 Festlegung, dass ergänzend zur Primärschlüsselspalte auch eine andere Spalte eindeutige Werte besitzen soll

Syntax:
Spaltenname Datentyp UNIQUE
Regel:
in einer Tabelle dürfen auch MEHRERE Spalten (ergänzend zum Primärschlüssel) ein UNIQUE-Constraint zugeordnet haben
UND
solche Spalten dürfen auch NULL enthalten
Wirkung
wie beim PRIMARY KEY-Constraint
Beispiel:
CREATE TABLE Personal
(
pnr NUMBER(5) PRIMARY KEY CHECK(pnr > 0),
pname VARCHAR2(30) NOT NULL,
...,
estid NUMBER(10) NOT NULL UNIQUE,
svnr VARCHAR2(12) UNIQUE,
...
)

3.4 Details zu Erweiterungen auf Tabellenebene

3.4.1 CHECK-Constraints, in deren Bedingung mehr als eine Spalte nötig ist

Beispiel:
in einer Tabelle Stellen soll für verschiedene Tätigkeiten innerhalb eines Unternehmens u.a. festgehalten werden: eine ID, eine Bezeichnung, eine Beschreibung, Gehaltsgrenze, Gehaltsobergrenze,...
Formales:
  1. da solche Zuordnungen (üblicherweise) am Ende der CREATE TABLE-Anweisung vorgenommen werden, MUSS auch die letzte Spaltendefinition mit einem Komma abgeschlossen werden
  2. ANSTELLE einer Spaltendefinition wird jetzt "nur" ein Constraint definiert
  3. sollten weitere Constraints anzugeben sein, müssen auch diese (BIS AUF DEN LETZTEN EINTRAG) mit einem Komma abgeschlossen werden
Neue Möglichkeiten:
jetzt dürfen in der Check-Bedingung auch mehrere Spaltennamen verwendet werden (sofern sie in derselben Tabelle liegen!)
z.B.:
CREATE TABLE Stellen (
ID        CHAR(4)        Primary Key,
BEZ       VARCHAR2(25)   NOT NULL,
BESCHR    VARCHAR2(4000) NOT NULL,
GEHALTVON NUMBER(7,2) NOT NULL CHECK(GEHALTVON > 0),
GEHALTBIS NUMBER(7,2) NOT NULL CHECK(GEHALTBIS > 0),
CHECK(GEHALTVON <= GEHALTBIS)
)

3.4.2 zusammengesetzte Primärschlüssel

Syntax:
PRIMARY KEY(Spaltenname1, Spaltename2,...)
Konsequenz:
für ALLE angebenen Spalten wird AUTOMATISCH ein NOT NULL-Constraint generiert
die Kombination der Werte in ALLEN angegeben Spaltenmuss eindeutig sein
Beispiel:
CREATE TABLE ARBEITEN
(
 M_NR      NUMBER(5)    REFERENCES MITARBEITER(M_NR),
 PR_NR     CHAR(2)      REFERENCES PROJEKT(PR_NR),
 AUFGABE   VARCHAR2(15),
 EINST_DAT DATE         NOT NULL,
 PRIMARY KEY (M_NR, PR_NR)
)

3.4.3 zusammengesetzte "Fremdschlüssel"

Syntax:
FOREIGN KEY (Spaltenname1, Spaltenname2,...) REFERENCES Mastertabellenname(PSpaltename1, PSpaltenname2,...)
Hinweise:
Spaltenname1, Spaltenname2 ... beziehen sich auf die Spaltendefinition in der (aktuellen) Detailtabelle, PSpaltenname1, PSpaltenname2 ... bezeichnen Spalten in der Mastertabelle
Reihenfolge der Spaltenangaben im Fremdschlüssel muss mit der im Primärschlüssel übereinstimmen
Beispiel:
CREATE TABLE ARBEITEN_PROTOKOLL
(
 LNR        NUMBER(6)     PRIMARY KEY,
 MNR        NUMBER(5)     NOT NULL,
 PRNR       CHAR(2)       NOT NULL,
 TAG        DATE          NOT NULL,
 TAETIGKEIT VARCHAR2(100),
 FOREIGN KEY (MNR,PRNR) REFERENCES ARBEITEN (M_NR, PR_NR)
)

3.4.4 zusammengesetzte weitere (eindeutige) Schlüssel

Syntax:
UNIQUE (Spaltenname1, Spaltenname2,...)
Hinweis:
Regeln wie beim "einfachen" UNIQUE-Constraint ...

3.5 Hilfsmittel bei Erfassung neuer Datensätze

konkret:
Bereitstellen eines "Nummernspenders" zur Belegung "nichtssagender" Spalten (z.B. Laufende Nummern)
Vorbereitung:
Anlegen sogenannter Sequence-Objekte
Syntax:
CREATE SEQUENCE Sequencename (Minimal-Syntax)
Wirkung:
der "Nummernspender" liefert als eine "Nummer" : 1 anschließendes Abrufen liefert um eins größeren Wert als der vorherige Abruf
								CREATE SEQUENCE Sequencename
    START WITH Anfangswert
    INCREMENT BY Schrittweite
							
							
Beispiel:
CREATE SEQUENCE seq_demo
    START WITH 100
    INCREMENT BY 5
                        

3.5.1 Abrufen des NÄCHSTEN Wertes aus der Sequence

Einsatzgebiet:
innerhalb einer INSERT-Anweisung soll eine Spalte NICHT mit einem konkreten Wert gefüllt werden, sondern durch "die nächste Nummer" aus diner Sequence
Syntax:
Sequencename.NEXTVAL
Beispiel:
Erfassen einiger Datensätze in der Tabelle ARBEITEN_PROTOKOLLE