Datenbank-Projekt

 

Home
Nach oben



ITSE Informationen

 

 

 

 

 

 

Einführung Datenbankprojekt

Es gibt lokale und Client-Server Datenbanken. Die lokalen Datenbaken sind den Client-Server Datenbanken in der Geschwindigkeit überlegen. Dazu ist im Gegensatz die Client-Server Datenbank in der Datensicherheit (durch RAID-System und RollBack) den lokalen Datenbank im Vorteil.

Als Datenbank-Software wird hier ADABAS D eingesetzt. Dadurch, dass diese Software mächtiger ist als z.B. Microsoft Office, wird diese Datenbankmanagementsoftware auf dem Server (DIANA) der Klasse installiert.

Im Laufe der Ausbildung werden eine Telefondatenbank, eine Personendatenbank, eine Inventardatenbank und eine Firmendatenbank erstellt. Des weiteren wird die Datenbankprogrammiersprache SQL (Structure Query Language) vermittelt, ohne die die Bedienung der Datenbankmanagement-software nicht möglich ist.

Alle diese Arbeiten müssen im Team geplant, ausgewertet und abgeschlossen werden.

 

Einführung Datenbanken

 

Welche Datenbanken gibt es?

Locale Datenbanken

Dbase heute VisualDbase von der Firma Inprice (früher Borland)

Excel ist eigentlich ein Tabellenkakulationsprogramm von Microssoft

kann aber auch als Datenbank benutzt werden

Access ist eine richtige Datenbank von Microsoft welche auch SQL versteht

und sich mit anderen Datenbanken verknüpfen

Eine gute Datenbank sollte viele Schnittstellen zur Dateneingabe haben und auch Importmöglichkeiten aus anderen Datenbanken besitzen.

Client-Server Datenbanken

ADABAS-D von Software AG

Oracle von Oracle

Informix von Informix

DB2 von IBM

PostgreSQL von ?????????? ist frei für Linux und Unix

mSQL von HUGES

MySQL von ????????? ist frei für Linux und Unix bzw. Windows NT

 

Was passiert mit einer Datenbank?

In einer Datenbank ist im Hintergrund immer ein Prozeß in gang, welcher überwacht, was in der Datenbank passiert. Diesen Vorgang nennt man Datenbankmanagement. Diese Management legt fest, wie Daten (Verzeichnisse, Dateien) systematisch angelegt werden. Eine Datenbank macht zu bestimmten Zeiten aus Sicherheitsgründen ein Systembackup und schreibt dieses wieder zurück auf die Festplatte und ordnet dabei Dateien und Verzeichnisse (defragmentieren). Das Datenbankmanagement räumt auch im Hintergrund die Datenbank auf (doppelte oder sinnlose Daten).

 

Datenhaltung

 

Namen

Dadurch, das unser Datenbank Programm ADABAS-D historisch gewachsen ist, ist hier eine Begrenzung der Namen von Dateien eine Länge von 8 Zeichen nicht überschreitet.

 

Tabellen

ADABAS-D führt in seinem Programm Systemtabellen mit dem Inhalt, welcher User darf was und Verzeichnisse, in den steht welche Tabellen benutzt werden und Tabellen, welche der User benötigt.

Das anlegen von Tabellen darf nur der Administrator der Datenbank bzw. privilegierte User.

Bei der Exceltabelle werden die Daten nach spalten und Zeilen definiert.

 

Spalten

In der Datenbanktabelle hat jede Spalte einen Namen (max. 8 Zeichen ohne ü, ä, ö). Die Anzahl der Spalten ist bei der Datenbank nicht logisch begrenzt(bei Excel begrenzt bis Spalte iv).

 

Zeilen

Bei Excel sind die Zeilen begrenzt auf ein Doppelwort (16 Bit = 65532). In Datenbanken werden Zeilen als Datensatz definiert. Des weiteren wird eine Datensatznummer, die aber im Normalfall nicht benötigt wird, geführt. In jedem Datensatz existieren Identifikations-nummern.

 

Felder

Bei Feldern in Excel kann jedes Feld direkt angesprochen werden(Spalte, Zeile). Durch die eindeutige Zuordnung einer Zeile als Datensatz und da es sich um eine Datensatzstruktur handelt, sind die Definitionen für alle Zeilen gleich, da die Spalten fest vorgegeben sind.

 

Spalten

1. Satz

2.Satz

 

In Satz 0 der Datenbank ist die Spaltendefinition festgelegt.

 

Datentypen

Numerische Datentypen

 

 

Ansi

ADABAS-D

Access

Oracle

ganz kleine ganze Zahl

smallint

fixed (5)

byte 0-255

number (5)

 

 

kleinere ganze Zahl

fixed (5)

integer

number (5)

 

 

-215 bis +215

 

 

größere ganze Zahl

integer

fixec (10)

long integer

number (10)

 

 

-231 bis +231

 

 

Festpunkt Zahl

 

numeric (n,m)

fixed (n,m)

number (n,m)

n - vor

 

decimal (n,m)

n<=18

n<=38

m - nach

 

 

 

Währung

 

fixed (8,2)

Währung

number (8,2)

 

 

Gleitpunkt Zahlen (GZ)

float (n)

float (n)

float (n)

 

 

n<=18

 

 

GZ geringere Genauigkeit

real

float (15)

single

number

 

 

bis E + - 38

 

 

GZ höherer Genauigkeit

double precision

float (18)

double

number

 

 

bis E + - 308

 

 

JA / NEIN

 

bit (1)

fixed (1)

ja / nein

number (1)

0 und 1

 

constraint in (0;1)

constraint in (0;1)

logisches Feld

 

boolean

 

 

Zähler

 

wird vom DbMS auto-

syskey

Zähler

rowid

matisch hochgezählt

char (8) byte

 

 

 

 

Text Datentypen

 

 

Ansi

ADABAS-D

Access

Oracle

Text mit fester Länge

char (n)

char (n)

Text

char (n)

 

 

<=4000 Zeichen

<= 255 Zeichen

<=255 Zeichen

 

 

Text mit variabler Länge

character

varcharacter (n)

Text

varcharacter (n)

 

 

varying (n)

n<=4000 Zeichen

<=255 Zeichen

varcharacter2 (n)

 

 

varcharacter (n)

<=2000 Zeichen

 

 

(<=4000 Zeich.

 

 

bei Oracle 8.0)

 

 

Sehr langen Text

 

long

Memo

long

 

 

longvarchar

<=64000 Zeichen

(clob bei O. 8.0

 

 

bis 2 GB

<=2 GB)

 

 

Ja / Nein

 

char (1)

Ja / Nein

char (1)

J / N

 

constraint in ("J","N")

constraint in ("J","N")

logisches Feld

 

 

 

 

Datum Datentypen

 

 

Ansi

ADABAS-D

Access

Oracle

Datum

 

date

date

Datum / Zeit

date

 

 

(enthält auch die

 

 

Zeit)

 

 

Zeit

 

time

time

Datum / Zeit

date

 

 

(enthält auch die

 

 

Zeit)

 

 

Timestamp

 

timestamp

timestamp

Systemzeitmarke

 

 

 

Zeitintervall

 

interval

 

 

 

 

Binäre Datentypen

 

 

Ansi

ADABAS-D

Access

Oracle

beliebige binär Daten

bit (n)

char (n) byte

OLE-Objekt

raw (n)

mit fester Länge

 

<=4000 Byte

<=1 GB

<=2 KB

 

 

beliebige binär Daten

bit varying (n)

varchar (n) byte

mit variabler Länge

<=4000 Byte

 

 

binär Daten großen

long byte

OLE-Objekt

long raw

Umfangs

 

<=2 GB

<=1 GB

(BLOB in Oracle 8.0)

(Binary Large)

 

<= 2 GB

(BLOB)

 

 

 

 

Datenstrukturen

Eine Datenbank hat immer eine Tabellarische Form in deren Kopf die Felddefinition steht und in der eine Zeile einem Datensatz zugeordnet ist. Es gibt lineare (konstante Länge) und relationale (keine Redundanz) Strukturen.

 

Lineare Struktur

In einer linearen Struktur mit konstanter Länge werden die Felder in einem Header festgelegt. Bei einer festen Struktur wird viel Speicherplatz verschenkt (z.B. bei Ortsnamen).

In einer linearen Struktur mit variabler Länge werden die Felder in der Länge angepaßt.

In einer linearen Struktur sind die einmal festgelegten Felddefinitionen nicht mehr veränderbar.

Die Verknüpfung mit anderen Datenbanken sollte über ANSI (erweiterter ASCII) erfolgen um die Kompatibilität zu gewährleisten.

Um die Trennung der einzelnen Datenfelder mit variabler Länge herzustellen, wird ein sogenannter Trenner verwendet. In den meisten Fällen wird dies mit einem Semikolon (;) erfolgen. Es können auch andere Zeichen als Trenner definiert werden (z.B. &, -, oder Sonderzeichen).

 

Relationale Struktur

In einer relationalen Datenbank spricht man von einer Normalisierung. Bei einer Normalisierung werden doppelte und unnütze Daten eleminiert.

Beispiel für eine Normalisierung:

Eine Firma möchte Daten zu ihren Kunden und deren Mitarbeitern speichern.

Problem: (Iteration – Wiederholung)

KDNR.

Firmenname

Straße

Ort

Name1

Name2

Name3

Telefon1

Telefon2

Telefon3

Primärschlüssel in Großbuchstaben

Die Normalisierung von Daten für die Speicherung einer Datenbank besteht aus fünf Stufen. Für die meisten Anwendungen reicht eine Normalisierung bis zur dritten Normalform aus. Das Ziel dieser Schritte ist die Vermeidung von doppelter Speicherung einer Information und das eindeutige Finden jeder gewünschten Information aus der Datenbank.

Die Normalisierung der Daten vermeidet in der ersten Stufe das Auftauchen von Wiederholungen in einem Datensatz.

Vorhandene Probleme sind, daß die Struktur immer noch nicht eindeutig festgelegt ist. In welchem Feld der Name eines Mitarbeiters steht kann nicht vorhergesagt werden. Der gesuchte Name kann in einem von drei Feldern stehen und ist nur mühsam zu finden.

Erste Normalform: (inkonsistenz – zusammenhängend)

KDNR.

MANR

FName

Straße

Ort

Name

Telefon

Primärschlüssel in Großbuchstaben

Für jeden Mitarbeiter des Kunden wird ein einzelner Datensatz angelegt. Damit jeder Datensatz einen eindeutigen Schlüssel besitzt wird ein neues Feld MANR (= MitArbeiterNummeR) für eine laufende Numerierung der Mitarbeiter eingefügt.

Einige Probleme bestehen aber weiterhin: Soll die Adresse einer Firma geändert werden, ist ein sehr großer Aufwand erforderlich. In jedem Datensatz eines Mitarbeiters dieser Firma ist diese Änderung durchzuführen. Dabei besteht die Gefahr, das einzelne Datensätze nicht oder falsch geändert werden. Eine Firma, zu der kein Mitarbeiter gespeichert ist, enthält wieder leere Felder in ihrem Datensatz. Wird ein Mitarbeiter in die Datei aufgenommen, muß zunächst geprüft werden, ob ein solcher Datensatz bereits existiert, da die Daten dann in diesen Datensatz eingefügt werden. Diesen Fehler bezeichnet man als Dateninkosistenz. Die Integrität (d.h. Sicherheit) der Daten, wird durch die Umwandlung der Dateien in die zweite Normalform wiederhergestellt.

Zweite Normalform:

KDNR.

Firmenname

Straße

Ort

Telefon

Primärschlüssel in Großbuchstaben

KDNR.

MANR

Name

Durchwahl

Primärschlüssel in Großbuchstaben

In er zweiten Normalform werden die Abhängigkeiten zu den einzelnen Teilen des Primärschlüssels aufgelöst. Den Primärschlüssel der Datei bilden die Felder KDNR und MANR. Einige der Daten, wie die Angabe zu Straße und Orte des Kunden, sind aber nur von der Kundennummer abhängig. Diese Daten werden darum in einer eigenen Datei gespeichert. Die erste Datei enthält nur Daten, die sich auf das Unternehmen des Kunden beziehen. In der zweiten Datei sind die Informationen zu den Mitarbeitern eines Unternehmens gespeichert.

Dritte Normalform

Wir erweitern die Kundendatei um ein Feld für die Einstufung als guter oder weniger guter Kunde. Abhängig davon werden der Firma bestimmte Rabatte oder Skonti gewährt. Die Kunden Datei weist dann die nachstehende Struktur auf.

Problem: (transitive – fordernd, zielend)

KDNR.

Firmenname

Straße

Ort

Telefon

Kundenart

Rabatt

Skonti

Primärschlüssel in Großbuchstaben

Die Daten in den Feldern Rabatt und Skonti hängen nur von dem Eintrag im Feld Kundenart ab. Zu jeder Kundenart gibt es genau einen Wert für den maximalen Rabatt und eine genaue Skonti Regelung. Diese Abhängigkeit von einem Feld, das nicht zum Primärschlüssel einer Datei gehört, wird als transitive Abhängigkeit bezeichnet.

Bei einer Änderung der Daten in den Sätzen der Kundendatei können auch hier wieder Probleme auftauchen. Ändert sich bei einem Kunden das Feld Kundenart können Fehler auftauchen bei der Aktualisierung der beiden Felder Rabatt und Skonti. Genauso treten Probleme bei der Änderung des maximalen Rabatts auf, den eine Kundenart bekommt. Es muß dann die gesamte Datei nach Datensätzen, für die diese Kundenart zutrifft, durchsucht und jede einzelne geändert werden. Einer neuer Kundentyp kann erst dann eingefügt werden, wenn Daten zu einem Kunden eingegeben werden, auf den dieses Merkmal zutrifft. Wenn die Daten des letzten Kunden einer Kundenart gelöscht werden, ist keine Information über diese Kundenart mehr vorhanden.

Diese Probleme werde genauso wie die vorherigen Abhängigkeiten durch aufteilen der Information auf mehrere Dateien gelöst.

Dritte Normalform:

KDNR.

Firmenname

Straße

Ort

Telefon

KUNDENART

Primärschlüssel in Großbuchstaben

KUNDENART

Rabatt

Skonto

Primärschlüssel in Großbuchstaben

Die Daten sind jetzt in der Dritten Normalform dargestellt. Eine Abhängigkeit von einem Feld zu einem anderen Feld besteht nicht mehr. Auf diese Daten kann mit einer sehr hohen Datensicherheit in einem relationalen Datenbanksystem zugegriffen werden. Die einzig redundanten Daten sind die Schlüssel, über die diese Verbindungen hergestellt werden.

 

Datenbankplanung

KDNR

Firmenname

PLZ

Ort

Straße

Anrede

Telefon

Vorwahl

KnArt

Rabatt

Skonto

KDNR

Firmenname

PLZ

Straße

KDNR

PLZ

Ort

Normalisierung findet auf dem Papier und im Kopf des jenigen statt, welcher die Datenbank entwickelt. Als erstes sollte man alle Daten zusammentragen die in die Datenbank aufgenommen werden sollen. Dann werden die Daten herausgesucht, die redundant (sich wiederholen) sind. Als nächster Schritt wird überprüft, welche Daten gehören wohin. Es werden zuerst die redundanten Daten aus dem Datenpool herausgelöst. Normalisierte Tabellen sollen möglichst wenige Spalten enthalten, um ein einfaches und schnelles Finden zu ermöglichen. Die Gesamtmenge der normalisierten Tabellen muss alle erforderlichen Informationen enthalten, Die Ausgabe-, Bearbeitungs-, Eingabe- und Änderungsmasken erhalten ihre Informationen über Primärschlüssel, Sekundärschlüssel und über Indexierungen aus den normalisierten Tabellen.

 

Einführung in das Userkonzept von ADABAS-D

 

Node = Server, auf dem die Datenbank läuft

DB = Datenbank

User = Benutzer

DBA = Datanbankadministrator

Der User

Control ist der Datenbank Administrator (Zustände: warm, cold, offline)

Admin ist der Systemadministrator und für die Verteilung der Rechte zuständig

(welcher User hat welche Rechte)

DBA *****

Resource *****

User *****

 

MyDB

 

Telefon

Test

Personen

DB Probe

Firmen

Inventar

Control

 

 

 

 

 

 

 

Admin

 

 

 

 

 

 

 

Domain

 

 

 

 

 

 

 

DBA

 

 

 

PDBA

DDBA itseDB

FDBA

IDBA

Demo

Demo

??

Test test

??

??

??

??

 

 

ADABAS-D Userkonzept Vorführung am Beamer

 

 

Einrichten und Benutzen von ADABAS-D

 

Grundtabelle

ID = int (Integer - ganze Zahlen)

Vorname = varchar(20) (variable character – variable Zeichenlänge)

Nachname = varchar(20)

Ort = varchar(20)

 

ID = 4 Byte

Vorname = 20 Byte

Nachname = 20 Byte

Ort = 20 Byte

 


 

64 Byte

 

Normalisierung

Namenstabelle

ID = int = 4 Byte

Vorname = varchar(20) = 20 Byte

Nachname = varchar(20) = 20 Byte

OID = OrtsID = int = 4 Byte

 


 

= 48 Byte

Ortstabelle

OID = int = 4 Byte

Ort = varchar (20) = 20 Byte

 


 

 


 

= 24 Byte

= 72 Byte

Durch die Normalisierung ist zwar die Gesamtzahl der Bytes gestiegen, aber durch die Auskopplung des Ortes wird das Gesamtaufkommen der Daten erheblich reduziert, weil sich sonst der Ort in jedem Namensdatensatz wiederholen würde (Redundanz).

 

 

Erstellung einer ADABAS-D Datenbank Test2 (am Beamer)

 

ADABAS-D Client Installation

  1. als lokaler Administrator anmelden
  2. Netzwerkumgebung auf dem Desktop anklicken
  3. Diana anklicken
  4. Username und Passwort eingeben
  5. Ins Verzeichnis Adabas Client wechseln
  6. Das Programm Setup.exe starten
  7. Auf Next klicken
  8. Verzeichnis beibehalten à Next
  9. Den Button ODBC32 zuerst anklicken
  10. Die Felder Remote und Update enviroment müssen angewählt sein à Next
  11. User Enviroment selektieren à Next
  12. Lesen à Next
  13. Computer wird zu einem späteren Zeitpunkt neu gestartet!!!
  14. Anschließend wird das Programm Setup.exe erneut gestartet
  15. Punkt 6-8 bleibt gleich
  16. Nun wird auf den Button Clients only geklickt
  17. Im nächsten Fenster wird das Kästchen WebDB deaktiviert à Next
  18. In diesem Fenster wird beides selektiert à Next
  19. Hier wird wieder User enviroment selektiert à Next
  20. Lesen à Next
  21. Lesen à Next
  22. Installation startet
  23. Im Welcome Fenster (TCl 8.0 Installation) auf Next klicken
  24. Das vorgeschlagene Verzeichnis bleibt unverändert à Next
  25. Es wird die Full Installation durchgeführt à Next
  26. Lesen à Next
  27. Installation ist nun beendet und ADABAS-D kann gestartet werden

 

Als Administrator einrichten der SystemDSN und BenutzerDSN

  1. Systemsteuerung starten
  2. ODBC anklicken
  3. Kartenreiter SystemDSN anklicken
  4. Auf den Button Hinzufügen klicken
  5. ADABAS-D auswählen und auf fertigstellen klicken
  6. Im nächsten Fenster wird folgendes eingetragen

          Data Source : /DB/adabas/wrk/MYDB/MYDB

          Description : DemoDB

          Server db : MYDB

          Servernode : zeus

7. à OK

Punkte1 bis 7 müssen mit jeder bereits erstellen Datenbank wiederholt werden, da sonst kein Zugriff auf die Datenbank erfolgen kann.

Anschliessend klicken wir auf den Karteireiter BenutzerDSN und führen wieder die Punkte 1 bis 7, für alle bereits erstellten Datenbanken, aus.

Auch als User muss man diese Schritte wiederholen.

Beginn der Personendatenbank

 

Welche Informationen gehören in eine Personendatenbank?

Das Zusammentragen dieser Informationen heißt Basisrelation.

Es sollten rein:

ID

Anrede

Titel

Name

Vorname

Geburtstag

Geburtsort

Geschlecht

Kinder

Familienstand

Wohnort

Postleitzahl

Straße

Hausnummer

Etagennummer

Wohnungsnummer

Passnummer

Beruf

Telefon

Email Adresse

Fax

Bankverbindung

Pkw

Führerschein

Es kommen rein:

ID

Anrede

Titel

Name

Vorname

Postleitzahl Daraus könnten extra Wohnort Tabellen werden

Straße

Hausnummer

Etagennummer

Wohnungsnummer

Beruf

Telefon

Email Adresse

Fax

Bankverbindung

 

Normalisierung

  1. Vorschlag

    Leute Anschrift Telefon Bank

     

    PLID PAID PTID PBID

    Vorname PLZ Telefon Bank

    Nachname Ort Fax BLZ

    Titel Ortsteil E-Mail Kontonummer

    Anrede Straße + Nummer URL

    PAID Etage

    PTID Wohnung

    PBID

     

  2. Vorschlag

      Leute Anschrift Orte Postfach Telefon Bank

 


 

 

PLID PAID POID PPFID PTID PBID

      Vorname Straße + Nummer PLZ PF Vorwahl Bank

      Nachname Etage Ort PLZ Tel BLZ

      Titel Wohnung Orsteil PWTID Kontonr.

      Anrede

PAID

      POID

      PPFID

      PTID

      PBID

       

       

       

      WTelefon

 


 

      PWTID

      Tel2

      Tel3

      Tel4

       

 

SQL Befehle zur Datenbankerstellung /
SQL Scripte

 

Der Befehl zu Erstellung einer Tabelle lautet:

CREATE TABLE <Tabellenname> (Spaltendefinition [,Spaltendefinition,.....] [<Tabelleneinschränkung>]);

Beispiel:

CREATE TABLE Test (

ID char(3) NOT NULL,

Vorname varchar(20),

Nachname varchar(20) NOT NULL,

Ort varchar(30) );

 

 

SQL Befehle zur Erstellung der Personendatenbank

CREATE TABLE Leute

(

PLID int PRIMARY KEY UNIQUE NOT NULL ,

Vorname varchar(20) ,

Nachname varchar(20) NOT NULL ,

Titel varchar(30) ,

Anrede varchar(5) NOT NULL ,

PBID int FOREIGN KEY(PBID) REFERENCES Bank ,

PTID int FOREIGN KEY(PTID) REFERENCES Telefon ,

POID int FOREIGN KEY(POID) REFERENCES Ort ,

PAID int FOREIGN KEY(PAID) REFERENCES Adresse ,

PPFID int FOREIGN KEY(PPFID) REFERENCES Postfach

                                  WITH NULL

)

 

CREATE TABLE Telefon

(

PTID char(3) PRIMARY KEY UNIQUE NOT NULL ,

Tel1 varchar(20) DEFAULT NULL ,

PWTID char(3) FOREIGN KEY(PWTID) REFERENCES WTelefon)

                                  WITH NULL ,

Vorwahl varchar(20) DEFAULT NULL )

 

Einfügen von Daten in eine Tabelle

Der Befehl zum Einfügen von Daten in Tabellen lautet:

INSERT INTO

Die richtige Syntax ist:

INSERT INTO <Tabelle> VALUES (*,*,*,*.....)

 

 

Einfügen von Daten einer Tabelle in eine andere Tabelle

Der Befehl zum Einfügen von Daten einer Tabelle in eine andere Tabelle lautet:

INSERT INTO SELECT

Die richtige Syntax ist:

INSERT INTO <Tabelle> SELECT FROM <Tabelle_X>