externe Ebene

Werbung
Kapitel 5
Datendefinition im Relationenmodell
DDL in Oracle
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
1
Daten-Definitionssprache (DDL)
Zusammenhänge:
Realwelt
-> ERM
-> Relationen-Modell
-> normalisiertes Relationen-Modell (kommt später – Wir gehen im Praktikum davon aus,
dass die Relationen normalisierte Relationen sind.)
-> Formulierung in DDL zur Definition der Objekttypen im konkreten Datenmodell bzw.
Datenbanksystem (im Relationenmodell: Relationen)
Nicht Einfügung von Daten!
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
2
3-Schichten-Architektur (ANSI / SPARC-Modell)
Was ist ein Schema?
Im konkreten Datenbanksystem unterscheiden wir 3 Ebenen:
Anwendung A
Anwendung B
externes
Schema 1
Anwendung C
externes
Schema 2
.........
konzeptionelles
Schema
internes / physisches
Schema
Anwendung Z
externes
Schema n
externe Ebene
Datensicht für einzelne User
konzeptionelle Ebene (Analyse- /DesignModell der Gesamtheit der Daten)
Sicht auf die Gesamtheit aller Daten
und ihre Beziehungen untereinander
interne / physische Ebene
physiche Speicherstrukturen
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
3
Bedeutung der 3 Ebenen
- Änderungen auf einer Ebene können vorgenommen werden, ohne dass eine
benachbarte Ebene davon berührt ist.
=> Verarbeitungsprogramme sind physisch als auch logisch datenunabhängig (mit
Einschränkungen).
d. h.
Änderungen in Schemas der
- physischen,
- konzeptuellen,
- externen
Ebene haben keine Auswirkungen auf die Verarbeitungsprogramme
(mit Einschränkungen:
z. B. Löschung eines Attributs hat evtl. Auswirkungen,
z. B. Hinzufügen eines Attributs hat keine Auswirkungen.)
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
4
Daten-Definitionssprache (DDL)
•
DDL Teil von SQL (Structured Query Language), der Standardsprache im Bereich
relationale DBMS :
•
DDL dient in relationalen Datenbanksystemen der Definition von
- Sichten (externe Ebene):
Anweisungen: create view, drop view
- Relationen (konzeptuelle Ebene):
Anweisungen: create table, alter table, drop table …
- internen Strukturen (Interne Ebene): Anweisungen: create index, alter index, drop index …
•
Mit CASE-Tools: Automatische Ableitung vom eERD bis zu DDL-Anweisungen.
Aber: Prüfung auf Normalisierung muss manuell durchgeführt werden.
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
5
DDL - Grundstruktur
create table Basisrelationenname
(
Attribut1 Wertebereich1 [not null],
...
AttributN WertebereichN [not null],
[primary key (AttributH, …, AttributJ),]
[{foreign key (AttributF, …, AttributG)
references Basisrelationenname [(AttributD, …, AttributE)]}]
)
anzugeben, falls andere Attributnamen
als AttributF, ... , AttributG
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
6
DDL in Oracle
Kann erst definiert werden, nachdem Produkt und Markt definiert wurden
!
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
!
7
Erlaubte Wertebereiche in ANSI-SQL
nicht in Oracle!
In Oracle: Datum und Zeit!
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
8
Weitere erlaubte Wertebereiche
in create table in Oracle
NUMBER(p,s): Fest- und Fließkommazahlen mit bis zu 38 Stellen.
p: Präzision = Anzahl der Stellen (max. 38)
s: Skalierung = Anzahl Nachkommastellen (-84 bis 127)
- ohne s bedeutet: s=0 ~ Integertyp
- ohne Angabe, ohne Klammern: E-Schreibweise (1E-84 bis 9.99E125)
CHAR(n): Zeichenketten fester Länge (n max. 2000)
- CHAR ~ CHAR(1)
VARCHAR(n): Zeichenketten mit variabler Länge (Leerzeichen nicht gespeichert)
- (n max. 4000)
CLOB, BLOB: Variabel lange Dokumente (Large Objects) als Character CLOB oder Binary
BLOB (Max. 4 GB)
DATE:
Datumsangabe mit Uhrzeit ('DD-MM-YYYY', 'HH24:MI:SS')
Änderung Anzeige-/Eingabe-Format des Datums:
alter session set NLS_DATE_FORMAT='DD-MM-YYYY'; (25-03-2011)
alter session set NLS_DATE_FORMAT='DD-Mon-YYYY hh24:mi';
select TO_CHAR (a, 'hh24:mi') as Abflugzeitpunkt from tab3;
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
9
not-null-Klausel, references-Angabe in foreign-keyKlausel
not null:
Nullwerte sind in diesem Attribut nicht erlaubt, d. h. hier muss immer ein Wert stehen.
z. B. bei Produkt könnte stehen: Bezeichnung varchar(20) not null,
(Primary keys sind immer automatisch not null)
Falls bei foreign key die Fremdschschlüssel und Primärschlüssel gleiche Namen haben
kann bei references die Angabe der Namen der Attribute in der referenzierten
Relation weg fallen.
Frage: Was kann im Beispiel S. 7 wegfallen?
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
10
Integritätsbedingungen:
primary key-, check-, default-Klausel
create table Vorlesungen
(
V-Bezeichnung varchar(80) primary key,
SWS smallint check (SWS > 0),
Semester smallint check (Semester between 0 and 6),
Studiengang varchar(20) default ‘Informatik‘ check (Studiengang value in (
‘Informatik‘, ‘Mathematik‘, ‘Elektrotechnik‘, ‘Maschinenbau‘))
)
Bemerkung: Die aufgeführten Klauseln entsprechen der SQL-Norm, funktionieren aber
teilweise nicht in ORACLE und anderen DB-Systemen
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
11
alter, drop table in SQL-DDL
alter table Produkt
add gewicht decimal(8,2);
(gewicht wird bei jedem schon existierenden Tupel mit NULL belegt)
alter table Haendler
add kreditlimit decimal(8,2) default 10000
check (kreditlimit < jahresumsatz / 2);
(jahresumsatz sei Attribut der Relation Haendler)
alter table Haendler
drop kreditlimit restrict
(restrict: Es dürfen keine Sichten oder Integritätsbed. wie z. B Fremdschlüssel existieren
Statt restrict cascade: gleichzeitige Löschung der Sichten und Integritätsbed.)
drop table Haendler restrict
(oder cascade. Bedeutung analog drop bei Attributen)
Siehe auch alter table bei der Erzeugung in Power-Designer (foreign-key Klausel).
Warum mit alter table?
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
12
create view in SQL-DDL
•
•
•
Sichten werden verwendet zur Definition externer DB-Schemata (ANSI-SPARC-Ansatz).
Sicht = Berechnungsvorschrift für virtuelle Relation
(Sicht wird zum Zeitpunkt der Verwendung aus beteiligten Relationen durch SQLAbfrage dynamisch von Relation abgeleitet).
Vorteile:
- Vereinfachung von Anfragen
- Strukturierung der Datenbank
- logische Datenunabhängigkeit (Sichten stabil bei Änderungen der DB-Struktur)
- Beschränkung von Zugriffen (Datenschutz)
create view GebrauchsProdukte as
select Nummer, Bezeichnung
from Produkt
where Funktion = ‘Gebrauch‘
(- Hinter as kann beliebige select-Anweisung stehen (select-Anw.: siehe später in Vorl.)
- Mit Sichten (Views) arbeitet man wie mit normalen Relationen
- Änderung von Daten über Views sind kritisch (update etc. über Views: später in Vorl.))
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
13
create index in SQL-DDL
•
•
Anweisung gehört zur Definition der physischen Ebene.
Anweisung definiert Zugriffspfad
(=schneller Zugriff über Werte einer Attributkombination auf Tupel). Genauer: später in
dieser Vorlesung
create [unique] index Indexname
Falls unique definiert, ist gewährleistet, dass Werte der
on Relation
im Index def. Attributkombination nur einmal vorkommen
(Spalte_1 [ordnung_1],
...
Spalte_n [ordnung_n])
Falls Attribut(kombination) Primärschlüssel =>Index wird
von System automatisch angelegt.
Beispiel:
create index Produktnamenindex
on Produkt
(Produktbezeichnung asc,
Groesse )
(asc = aufsteigend, desc = absteigend, asc default)
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
14
Aufgabe DDL in Oracle
1. Definieren Sie die DDL-Anweisung zum Kreieren der Relation Veranstalter.
Veranstalter
Geschaefspartner-Nr
Adresse
Bezeichnung
Typ
2. Realisieren Sie die 1:n-Beziehung zwischen Veranstalter und Markt. Was muss in
Veranstalter bzw. Markt geändert / ergänzt werden? Oder muss zusätzliche Relation
für Beziehung eingeführt werden?
(1,1)
Markt
(0,*)
8
Veranstalter
Markt (Bezeichnung, Standort, Kategorie)
Veranstalter (Geschaefspartner-Nr, Adresse, Bezeichnung, Typ)
8: Ansprechpartner
Definieren Sie die Relationen mit Fremdschlüsseln durch DDL-Statements.
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
15
Aufgabe DDL in Oracle
3. Führen Sie die DDL-Definitionen für die Relation durch, die Fremdschlüssel enthält.
Teilprodukt
(0,*)
Produkt
Nummer
...
(0,*) Produktgruppe
Anzahl
4
4: besteht aus Teil
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
16
Herunterladen