Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Relationale Datenbanken III

Ähnliche Präsentationen


Präsentation zum Thema: "Relationale Datenbanken III"—  Präsentation transkript:

1 Relationale Datenbanken III
Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

2 Beispiel Tabellen Reisebüro
Person: {[PersNr, Name, Adresse]} Kunde: {[PersNr, Kaufkraft, GebDatum]} Mitarbeiter: {[PersNr, Gehalt]} Transportmedium: {[MedienNr, Bezeichnung, Preis]} Land: {[LandNr, Name, Sprache, Währung, Vorwahl]} Reiseziel: {[ZielNr, LandNr, Name, Preis]} Beratung: {[KundeNr, MitarbeiterNr]} Buchung: {[KundeNr, MitarbeiterNr, MedienNr, ZielNr, Datum]}

3 Datentypen? PersNr : INT (ganze Zahl)
ebenso: MedienNr, LandNr, ZielNr, MitarbeiterNr Name : VARCHAR(256) (Zeichenkette, maximal 256 Zeichen) ähnlich: Sprache : VARCHAR(32) Währung : VARCHAR(3) Vorwahl : VARCHAR(6) Adresse : TINYTEXT (kleiner Textblock) Kaufkraft : ENUM('sehr gross','gross','mittel','gering') (Auswahl) ähnlich: Bezeichnung : ENUM('Zug', 'Flugzeug','Bus','Schiff','Auto','anderes') GebDatum : DATE (Datum) ebenso: Datum Gehalt : DECIMAL(10,2) (Dezimalzahl mit max. 10 Vor- und 2 Nachkommastellen) ebenso: Preis

4 Datenbank erzeugen und benutzen
CREATE DATABASE reisebuero; USE reisebuero; falls eine alte, missratene Version dieser Datenbank vorher gelöscht werden muss: DROP DATABASE reisebuero; CREATE DATABASE reisebuero; USE reisebuero;

5 Tabellen erzeugen CREATE TABLE Person (
PersNr INT NOT NULL auto_increment, Name VARCHAR(256) COLLATE latin1_german1_ci default NULL, Adresse tinytext COLLATE latin1_german1_ci, PRIMARY KEY (PersNr) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; NOT NULL: leere Werte sind verboten default NULL: standardmässig auf NULL setzen auto_increment: jeder neue Eintrag bekommt automatisch eine um 1 höhere Nummer als der letzte Eintrag PRIMARY KEY (PersNr): PersNr darf nicht leer (NULL) sein, muss eindeutig sein DEFAULT CHARSET: welche Zeichencodierung verwendet wird COLLATE: welche Textsortierreihenfolge verwendet wird ENGINE: welche Datenbankmaschine zugrunde gelegt wurde.

6 Weitere Tabellen erzeugen
CREATE TABLE Kunde ( PersNr INT NOT NULL, Kaufkraft enum('sehr gross','gross','mittel','gering') default NULL, GebDatum date default ' ', PRIMARY KEY (PersNr), FOREIGN KEY (PersNr) REFERENCES Person (PersNr) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; FOREIGN KEY: Fremdschlüssel REFERENCES: bezieht sich auf Tabelle (Element) ON DELETE CASCADE: lösche diesen Eintrag, falls der Bezug nicht mehr existiert (wird die Person gelöscht, löscht man damit auch den entsprechenden Kunden)

7 Weitere Tabellen erzeugen
CREATE TABLE Mitarbeiter ( PersNr INT NOT NULL, Gehalt decimal(10,2) NOT NULL default '0.00', PRIMARY KEY (PersNr), FOREIGN KEY (PersNr) REFERENCES Person (PersNr) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; CREATE TABLE Transportmedium ( MedienNr INT NOT NULL auto_increment, Bezeichnung enum('Zug','Flugzeug','Bus','Schiff','Auto','anderes') default NULL, Preis decimal(10,2) NOT NULL, PRIMARY KEY (MedienNr), UNIQUE (Bezeichnung) UNIQUE: Gleicher Wert darf nicht mehrfach vorkommen

8 Weitere Tabellen erzeugen
CREATE TABLE Land ( LandNr INT NOT NULL auto_increment, Name VARCHAR(256) collate latin1_german1_ci NOT NULL, Sprache VARCHAR(32) collate latin1_german1_ci NOT NULL, Waehrung VARCHAR(3) collate latin1_german1_ci NOT NULL, Vorwahl VARCHAR(6) collate latin1_german1_ci NOT NULL, PRIMARY KEY (LandNr), UNIQUE (Name) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; CREATE TABLE Reiseziel ( ZielNr INT NOT NULL auto_increment, Name VARCHAR(256) collate latin1_german1_ci default NULL, Preis decimal(10,2) NOT NULL default '0.00', LandNr INT NOT NULL default '0', PRIMARY KEY (ZielNr), FOREIGN KEY (LandNr) REFERENCES Land (LandNr) ON DELETE RESTRICT ON DELETE RESTRICT: Ein Land darf nicht gelöscht werden, solange es dort noch ein Reiseziel gibt

9 Weitere Tabellen erzeugen
CREATE TABLE Beratung ( KundeNr INT NOT NULL, MitarbeiterNr INT NOT NULL, PRIMARY KEY (KundeNr, MitarbeiterNr), FOREIGN KEY (KundeNr) REFERENCES Kunde(PersNr) ON DELETE CASCADE, FOREIGN KEY (MitarbeiterNr) REFERENCES Mitarbeiter(PersNr) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; CREATE TABLE Buchung ( KundeNr INT NOT NULL, MitarbeiterNr INT NOT NULL, MedienNr INT NOT NULL, ZielNr INT NOT NULL, PRIMARY KEY (KundeNr, MitarbeiterNr, MedienNr, ZielNr), FOREIGN KEY (KundeNr) REFERENCES Kunde(PersNr) ON DELETE CASCADE, FOREIGN KEY (MitarbeiterNr) REFERENCES Mitarbeiter(PersNr) ON DELETE CASCADE, FOREIGN KEY (MedienNr) REFERENCES Transportmedium(MedienNr) ON DELETE CASCADE FOREIGN KEY (ZielNr) REFERENCES Reiseziel(ZielNr) ON DELETE CASCADE MP 1A Ws 2011

10 Wie gibt man das jetzt wirklich ein?
Internet Explorer starten Seite aufrufen Benutzername test, Passwort mp1abe2013 eingeben Tab SQL wählen Eingeben: CREATE DATABASE test_Ihr-Vorname auf OK klicken 2. Browserfenster oder 2. Browsertab öffnen auf gehen Aktuell-Link MP 1ABe folgen Datei reisebuero.txt ansehen gesamten Dateiinhalt in die Zwischenablage kopieren zurück ins phpMyAdmin-Fenster Datenbank mit ihrem Namen wählen, Tab SQL wählen Inhalt der Zwischenablage einfügen, OK klicken. aktualisieren (mit ) In MySQL eigenes Passwort ändern: set password = password('neues Passwort'); MP 1A Ws 2011

11 Damit wir alle an einer DB arbeiten
Bei phpMyAdmin abmelden (mit ) Auf die Seite gehen Benutzername reisebuero, Passwort mp1abe2013 eingeben Tabelle "reisebuero" wählen In MySQL eigenes Passwort ändern: set password = password('neues Passwort'); MP 1A Ws 2011

12 Datensätze in Tabellen einfügen
INSERT INTO Person (Name, Adresse) VALUES ('Bruno Buess', 'Baselstrasse 33, 4142 Münchenstein'); Das Feld PersNr wird automatisch eingefüllt, weil es die Eigenschaft auto_increment hat! INSERT INTO Mitarbeiter (PersNr, Gehalt) VALUES (1, ); Aufgabe: Füllen Sie gemeinsam die verschiedenen Tabellen der Datenbank!


Herunterladen ppt "Relationale Datenbanken III"

Ähnliche Präsentationen


Google-Anzeigen