Datenbank für Skriptenverkauf

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

ER-Datenmodell und Abfragen in SQL
Datenbankdesign mit ACCESS.
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
Relationale Datenbank MySQL
Wieso gibt es diese Unterrichtseinheit?
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
MySQL.
Allgemeine Technologien II
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
SendEplanung Datenbank
SQL als Abfragesprache
SQL als Abfragesprache
Auswertung im GTDS fixe Abläufe für Standard-Aufgaben Mamma-Auswertung
Datensicherheit in DBMS
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Text-Retrieval mit Oracle Vortrag von Andreas Mück & David Diestel.
Otto-von-Guericke-Universität Magdeburg Gamal Kassem 1 Tabellenzeile mit READ lesen READ TABLE itab INDEX idx READ TABLE itab WITH KEY comp1 = f1.... Compn.
Otto-von-Guericke-Universität MagdeburgGamal Kassem Übung 7 Reports mit Datenbankzugriff.
Transaction Script Software Component Technology for Distributed Applications.
Datenintegrität Referentielle Integrität create table
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
Datenbanken 13: Objekt-Klasse-Datenbank
Datenbanken 10: Einfügen, Ändern, Löschen
Abfragen – Tipps und Tricks Buch S102ff (Informatik I, Oldenbourg-Verlag) Nach einer Vorlage von Dieter Bergmann.
Einführung MySQL mit PHP
3.5.2 Fremdschlüssel/ Referentielle Integrität (6/9)
2.2 Definition eines Datenbankschemas (SQL-DDL)
SQL in Visual FoxPro. © 1999 TMN-Systemberatung GmbH SQL Historie n SQL - Structured Query Language n In den 70er Jahren von IBM entwickelt n 1986 zum.
Datenbankentwicklung IV-LK
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Relationale Datenbanken III
O.Univ.-Prof. Dr. Dimitris Karagiannis Datenbanken administrieren mit phpMyAdmin Martin Marinschek
Datenbanken?.
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
SQL Überblick Abfragen aus einer Tabelle
Datenbanksysteme für hörer anderer Fachrichtungen
Einführung in Datenbankmodellierung und SQL
Freiwillige Feuerwehr der Stadt Perg
verstehen planen bearbeiten
Structured Query Language
Modellierungsspezialisten DRITTE NORMALFORM! „Bei der Abfrage, können wir dann alles wieder zusammenfügen!“
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
Termin Festlegung Einführung MySQL Runterladen MySQL, Pentaho Design Studio Betrachtung Pentaho
Datenbanken Eine Einführung.
Prolog: Datenbanken Inhalt - Überblick - Erstellen einer Datenbank
Dynamische Webseiten mit MySql und PHP
Dreamweaver MX Rechenzentrum Universität Hohenheim Hani Sahyoun.
Tutorium zur LV Online Research Ein Computerprogramm tut, was Du schreibst, nicht was Du willst.
PHPmyadmin Maya Kindler 6c.
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken erstellen mit PostgreSQL
Datenbanken abfragen mit SQL
SQL Lutz KleinostendarpJOBELMANN-SCHULE Datendefinition Die Organisation einer Datenbank basiert auf einer Anzahl verschiedener Objekte. Diese können physikalischer.
By Thorsten Zisler 1 SQL Datenbank Anbindung an den Supervisor.
Modellierungsspezialisten DRITTE NORMALFORM! „Bei der Abfrage, können wir dann alles wieder zusammenfügen!“
Entwicklung einer Webapplikation mittels HTML, PHP, MySQL, jQuery, und Smarty-Templates am Beispiel einer Studienarbeitsverwaltung.
PHP Schulung Beginner Newthinking Store GmbH Manuel Blechschmidt.
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
Abfragen Wiederholung Manuel Friedrich Schiller-Gymnasium Hof.
Sprachumfang von SQL Vier Kategorien DDL (Data Definition Language)
Vorlesung #5 SQL (Teil 2).
SQL Join.
Wirtschaftsinformatik
Abfragesprache SQL in ORACLE
Sichten.
Beispiele zur Datenänderung
(Structured Query Language)
 Präsentation transkript:

Datenbank für Skriptenverkauf OnLine Datenbanken MySQL Übung Datenbank für Skriptenverkauf Beim AStA 12.12.01 MySQL Übung

OnLine Datenbanken Für die Durchführung der Übung wird xampplite eingesetzt. Es beinhaltet folgende Programme: Apache (Web Server) MySQL (Datenbank Server) phpMyAdmin (Werkzeug zum Erstellen und bearbeiten von Datenbanken) Sie können diese Software downloaden von: http://www.apachefriends.org 12.12.01 MySQL Übung

Aufagabenbeschreibung Der Verkauf von Skripten beim AStA soll mit Hilfe einer Datenbank erfasst werden. Folgende Vorgänge müssen in der Datenbank abgebildet werden: Erstmalige Lieferung von Skripten Verkauf von Skripten Nachlieferung von Skripten 12.12.01 MySQL Übung

Benötigte Tabellen skripte: enthält Informationen über die Skripte (Autor, Name, Preis, Anzahl, Restbestand) lieferung: enthält Informationen über die Lieferung von Skripten verkauf: enthält Informationen über den Verkauf von Skripten 12.12.01 MySQL Übung

Tabelle skripte Struktur der Tabelle "skripte" 12.12.01 MySQL Übung

Hinweise zur Tabelle Skripte Das Feld "id" ist der Primärschlüssel in dieser Tabelle. Das Attribut "autoincrement" bedeutet, dass es von MySQL automatisch weiter gezählt wird bei jedem neuen Datensatz Das Feld "name" hat das Attribut "Unique". Es darf nur einmal in der Tabelle vorkommen Das Feld "autor" ist ein index-Feld. Das beschleunigt die Suche nach Autoren 12.12.01 MySQL Übung

Hinweise zur Tabelle Skripte Aus der Sicht einer optimalen Auslegung der Datenbank (Normalisierung) müsste eine extra Tabelle "Autoren" angelegt werden. Aus Gründen der Vereinfachung wird jedoch darauf verzichtet. 12.12.01 MySQL Übung

Tabelle Skripte erstellen 12.12.01 MySQL Übung

Tabelle Skripte erstellen SQL-Befehl zur Erstellung der Tabelle Skripte: CREATE TABLE skripte ( id SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY , name VARCHAR( 255 ) NOT NULL , autor VARCHAR( 100 ) NOT NULL , preis DECIMAL( 5, 2 ) NOT NULL , beschreibung TEXT NOT NULL , restbestand SMALLINT NOT NULL , INDEX (autor) , UNIQUE (name) ) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_german2_ci; 12.12.01 MySQL Übung

Tabelle Lieferung Struktur der Tabelle "lieferung" 12.12.01 MySQL Übung

Hinweis zur Tabelle Lieferung Das Feld "skript_id" ist ein Sekundärschlüssel und bildet die Verknüpfung zur Tabelle "skripte" 12.12.01 MySQL Übung

Tabelle Lieferung erstellen 12.12.01 MySQL Übung

Tabelle Lieferung SQL-Befehl: CREATE TABLE lieferung ( skript_id SMALLINT UNSIGNED NOT NULL , datum DATE NOT NULL DEFAULT '0000-00-00', anzahl SMALLINT UNSIGNED NOT NULL , preis DECIMAL( 5, 2 ) UNSIGNED ZEROFILL NOT NULL ) ENGINE = MYISAM ; 12.12.01 MySQL Übung

Tabelle Verkauf Struktur der Tabelle "verkauf" 12.12.01 MySQL Übung

Tabelle verkauf erstellen 12.12.01 MySQL Übung

Tabelle Verkauf erstellen SQL-Befehl zur Erstellung der Tabelle Verkauf CREATE TABLE verkauf (skript_id SMALLINT UNSIGNED NOT NULL , datum DATE NOT NULL DEFAULT '0000-00-00', anzahl SMALLINT UNSIGNED NOT NULL , erloes DECIMAL( 7, 2 ) UNSIGNED ZEROFILL NOT NULL ) ENGINE = MYISAM ; 12.12.01 MySQL Übung

Beziehung zwischen Tabellen erstellen Wählen Sie In phpMyAdmin die Registerkarte Design. verknüpfen Sie das Feld id in der Tabelle Skripte mit dem Feld skript_id in der Tabelle "lieferung". verknüpfen Sie das Feld id in der Tabelle Skripte mit dem Feld skript_id in der Tabelle "verkauf". s. Abbildung auf der nächsten Folie 12.12.01 MySQL Übung

Beziehung zwischen Tabellen erstellen 12.12.01 MySQL Übung

Lieferung von Skripten Man muss 2 Vorgänge unterscheiden Erstmalige Lieferung: Je ein Datensatz wird in die Tabellen lieferung und skripte eingefügt. Nachlieferung von vorhandenen Skripten: Ein Datensatz wird in die Tabelle lieferung eingefügt. In der Tabelle skripte wird nur der restbestand und evtl. der Preis geändert 12.12.01 MySQL Übung

Verkauf von Skripten Folgende Aktionen werden durchgeführt: Ein neuer Datensatz wird in die Tabelle verkauf eingefügt. In der Tabelle skripte wird der Restbestand um die Anzahl der verkauften Skripte vermindert 12.12.01 MySQL Übung

Datensatz in Tabelle Skripte einfügen INSERT INTO skripte (name , autor , preis , beschreibung , restbestand ) VALUES ('Einführung in die Agrarinformatik', 'Doluschitz, R.', '15.00', 'Daten- und Informationsbereitstellung sowie deren Verarbeitung und Nutzung auf unterschiedlichen Einsatzebenen in der Agrarwirtschaft.', 100 ) 12.12.01 MySQL Übung

Datensatz in Tabelle Skripte einfügen INSERT INTO skripte (name, autor, preis, beschreibung, restbestand) VALUES ('Einführung in das Agrarrecht', 'Turner, G.; Werner, K.', '12.00', 'Besondere Kapitel des Agrarrechts: Landwirtschaftliches Eigentum, Erbrecht mit Landw. Sondererbrecht, Gebrauchsüberlassungsverträge, Sicherung von Krediten Landwirtschaftliches Arbeits-, Sozial- und Steuerrecht, Agrarrecht in Europa.', 150) 12.12.01 MySQL Übung

Datensatz in Tabelle Skripte einfügen INSERT INTO skripte (name, autor, preis, beschreibung, restbestand) VALUES ('Einführung in Javascript', 'RRZN', '6.00', 'Programmieren von dynamischen HTML-Seiten mit JavaScript.', 100) 12.12.01 MySQL Übung

Datensatz in Tabelle Skripte einfügen INSERT INTO skripte (name, autor, preis, beschreibung, restbestand) VALUES ('Einführung in SPSS', 'RRZN', '7.50', 'Das Statistikpaket SPSS für Anfänger.', 80) 12.12.01 MySQL Übung

Datensatz in Tabelle Skripte einfügen INSERT INTO skripte( name, autor, preis, beschreibung, restbestand ) VALUES ('Word 2002 für Fortgeschrittene', 'RRZN', '6.00', 'Dokument- und Formatvorlagen, Verzeichnisse, Grafiken einfügen und bearbeiten,..', 100 ) 12.12.01 MySQL Übung

Datensätze in Tabelle skripte 12.12.01 MySQL Übung

Datensätze in Tabelle lieferung einfügen INSERT INTO lieferung (skript_id, datum, anzahl, preis) VALUES ('1', '2006-06-12', 100, '15'), ('2', '2006-06-12', 150, '12'), ('3', '2006-06-12', 100, '6'), ('4', '2006-06-12', 80, '7.50'), ('5', '2006-06-12', 100, '6') 12.12.01 MySQL Übung

Tabelle lieferung 12.12.01 MySQL Übung

Datensatz in Tabelle verkauf einfügen INSERT INTO verkauf (skript_id, datum, anzahl, erloes) VALUES ('2', '2006-06-13', '10', '120'); UPDATE skripte SET restbestand = restbestand - 10 where id = 2 12.12.01 MySQL Übung

Datensatz in Tabelle verkauf einfügen INSERT INTO verkauf (skript_id, datum, anzahl, erloes) VALUES ('1', '2006-06-13', '4', '60'); UPDATE skripte SET restbestand = restbestand - 4 where id = 1 12.12.01 MySQL Übung

Datensatz in Tabelle verkauf einfügen INSERT INTO verkauf (skript_id, datum, anzahl, erloes) VALUES ('3', '2005-12-13', '20', '120'); UPDATE skripte SET restbestand = restbestand - 20 where id = 3 12.12.01 MySQL Übung

Datensatz in Tabelle verkauf einfügen INSERT INTO verkauf (skript_id, datum, anzahl, erloes) VALUES ('3', '2006-12-13', '10', '60'); UPDATE skripte SET restbestand = restbestand - 10 where id = 3 12.12.01 MySQL Übung

Auswahl von Datensätzen Beispiele für die SELECT-Anweisung: Ausgabe aller Skripte: SELECT * FROM skripte ORDER BY name 12.12.01 MySQL Übung

Auswahl von Datensätzen Ausgabe von Verkaufszahlen und Erlös: (Skript-ID, Name, Anzahl und Erloes) SELECT skripte.id, skripte.name, verkauf.anzahl, verkauf.erloes FROM skripte, verkauf WHERE skripte.id = verkauf.skript_id ORDER BY skripte.name 12.12.01 MySQL Übung

Auswahl von Datensätzen Alternative Formulierung: (Verknüpfung der Tabellen mit JOIN) SELECT skripte.id, skripte.name, verkauf.anzahl, verkauf.erloes FROM skripte JOIN verkauf WHERE skripte.id = verkauf.skript_id ORDER BY skripte.id 12.12.01 MySQL Übung

Auswahl von Datensätzen Weitere Alternative Formulierung: SELECT s.id, s.name, v.anzahl, v.erloes FROM skripte as s, verkauf as v WHERE s.id = v.skript_id ORDER BY s.id Anmerkung: in diesem Beispiel werden Aliase (Kürzel) für die Tabellennamen benutzt 12.12.01 MySQL Übung

Ergebnis der Abfrage Ausgabe von Verkaufszahlen und Erlös: 12.12.01 MySQL Übung

Auswahl von Datensätzen Ausgabe der verkauften Skripte in 2005 select s.id, s.name, s.autor, v.anzahl, v.datum, v.erloes from skripte as s, verkauf as v where s.id = v.skript_id AND v.datum LIKE '2005%' ORDER BY s.id Ergebnis der Abfrage: 12.12.01 MySQL Übung

Auswahl von Datensätzen Ausgabe der Summe von Verkaufszahlen und Erlös: SELECT s.id, s.name, SUM(v.anzahl), SUM(v.erloes) FROM skripte AS s, verkauf AS v WHERE s.id = v.skript_id GROUP BY s.id 12.12.01 MySQL Übung

Auswahl von Datensätzen Ergebnis der Abfrage: Verkaufszahlen und Erlös werden pro Skript zusammengefasst 12.12.01 MySQL Übung

Auswahl von Datensätzen Übersicht über verkaufte Skripte im Jahr 2006: SELECT s.id, s.name, s.autor, v.datum, SUM( v.anzahl ) , SUM( v.erloes ) FROM skripte AS s, verkauf AS v WHERE s.id = v.skript_id AND v.datum LIKE '2006%' GROUP BY s.id  12.12.01 MySQL Übung

Auswahl von Datensätzen Ergebnis der Abfrage: . 12.12.01 MySQL Übung

Auswahl von Datensätzen Verknüpfung der Tabellen mit "LEFT OUTER JOIN": SELECT s.id, s.name, v.anzahl, v.erloes FROM skripte as s LEFT OUTER JOIN verkauf as v ON s.id = v.skript_id ORDER BY s.id 12.12.01 MySQL Übung

Ergebnis der Abfrage Hinweis: Ergebnis der Abfrage enthält auch Skripte Für die es keinen Eintrag in der Tabelle verkauf gibt (s. Zeilen 4+5) 12.12.01 MySQL Übung

Auswahl von Datensätzen Ausgabe von Skripten, für die kein Eintrag in der Verkaufstabelle existiert: SELECT s.id, s.name, s.autor, v.skript_id FROM skripte as s LEFT OUTER JOIN verkauf as v ON s.id = v.skript_id WHERE v.skript_id is NULL ORDER BY s.id 12.12.01 MySQL Übung

Ergebnis der Abfrage Ergebnis enthält nur Datensätze von nicht verkauften Skripten 12.12.01 MySQL Übung

Auswahl von Datensätzen Ausgabe von Verkaufszahlen: SELECT s.id, s.name, v.skript_id, v.anzahl, v.erloes FROM verkauf as v LEFT OUTER JOIN skripte as s ON s.id = v.skript_id ORDER BY s.id 12.12.01 MySQL Übung

Ergebnis der Abfrage Ergebnis der Abfrage enthält auch Einträge in der Tabelle verkauf Für die es keinen passenden Eintrag in der Tabelle skripte gibt Konsistenzprobleme in der DB. Evtl. Fehler bei der Eingabe der skript_id (s. Abb. Auf der nächsten Folie) 12.12.01 MySQL Übung

Ergebnis der Abfrage 12.12.01 MySQL Übung

Auswahl von Datensätzen Ausgabe von Datensätzen aus Skripten- Tabelle, mit Restbestand < 100 SELECT id, name, autor, restbestand FROM skripte WHERE restbestand < 100 ORDER BY name 12.12.01 MySQL Übung

Ergebnis der Abfrage 12.12.01 MySQL Übung

Nachlieferung von Skripten INSERT INTO lieferung (skript_id, datum, anzahl, preis) VALUES ('1', '2006-06-13', '50', '15.50'); UPDATE skripte SET restbestand = restbestand + 50, Preis = 15.50 where id = 1 Hinweis: Preis hat sich um 50 Cent erhöht! 12.12.01 MySQL Übung

Auswahl von Datensätzen Ausgabe aller Liefervorgänge: SELECT s.id, s.name, s.autor, l.datum, l.anzahl, l.preis, l.anzahl*l.preis FROM skripte as s, lieferung as l WHERE s.id = l.skript_id ORDER BY s.id 12.12.01 MySQL Übung

Auswahl von Datensätzen Ergebnis der Abfrage: 12.12.01 MySQL Übung

Auswahl von Datensätzen Ausgabe aller Liefervorgänge mit Gesamtlieferkosten pro Skript: SELECT s.id, s.name, s.autor, l.datum, sum(l.anzahl), sum(l.anzahl*l.preis) FROM skripte as s, lieferung as l WHERE s.id = l.skript_id GROUP BY s.id ORDER BY s.id 12.12.01 MySQL Übung

Auswahl von Datensätzen Ergebnis der Abfrage: 12.12.01 MySQL Übung