Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen."—  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 DROP DATABASE reisebuero; CREATE DATABASE reisebuero; USE reisebuero; falls eine alte, missratene Version dieser Datenbank vorher gelöscht werden muss: 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) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; 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 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; ON DELETE RESTRICT: Ein Land darf nicht gelöscht werden, solange es dort noch ein Reiseziel gibt

9 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 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; Weitere Tabellen erzeugen

10 Wie gibt man das jetzt wirklich ein? Internet Explorer starten Seite https://www.gymmuenchenstein.ch/phpMyAdmin 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 gehenwww.gymmuenchenstein.ch/weiss 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 )

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

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 Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen."

Ähnliche Präsentationen


Google-Anzeigen