Händler-Datenbank (SQL-Beispiel): Unterschied zwischen den Versionen
Kowa (Diskussion | Beiträge) |
Kowa (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 9: | Zeile 9: | ||
Daher wird dieses Beispiel auch in der Vorlesung [[Kowarschick, W.: Multimedia-Datenbanksysteme|Multimedia-Datenbanksysteme]] verwendet. | Daher wird dieses Beispiel auch in der Vorlesung [[Kowarschick, W.: Multimedia-Datenbanksysteme|Multimedia-Datenbanksysteme]] verwendet. | ||
=Datenmodell/[[ER-Diagramm]] (in [[UML]]-Notation)= | ==Datenmodell/[[ER-Diagramm]] (in [[UML]]-Notation)== | ||
[[Datei:Haendler_Modell.jpg]] | [[Datei:Haendler_Modell.jpg]] | ||
Zeile 26: | Zeile 26: | ||
zum orginären Primärschlüssel <code>(hnr, wnr)</code> der Beziehung <code>liefert</code> hinzugefügt werden. | zum orginären Primärschlüssel <code>(hnr, wnr)</code> der Beziehung <code>liefert</code> hinzugefügt werden. | ||
=Datenbankschema= | ==Datenbankschema== | ||
[[Datei:Haendler_Schema.png]] | [[Datei:Haendler_Schema.png]] | ||
Zeile 92: | Zeile 92: | ||
</source> | </source> | ||
= | ==Beispielsdaten== | ||
<source lang="sql"> | <source lang="sql"> | ||
Zeile 133: | Zeile 133: | ||
</source> | </source> | ||
=SQL-Beispiele= | ==SQL-Beispiele== | ||
* [[Händler-Datenbank (SQL-Beispiel)/Identität|Identität]] | * [[Händler-Datenbank (SQL-Beispiel)/Identität|Identität]] | ||
* [[Händler-Datenbank (SQL-Beispiel)/Projektion|Projektion]] | * [[Händler-Datenbank (SQL-Beispiel)/Projektion|Projektion]] | ||
Zeile 140: | Zeile 140: | ||
* [[Händler-Datenbank (SQL-Beispiel)/Unteranfragen|Unteranfragen]] | * [[Händler-Datenbank (SQL-Beispiel)/Unteranfragen|Unteranfragen]] | ||
=Quellen= | ==Quellen== | ||
#{{Quelle|Kowarschick, W. (MMDB-Skript): Skriptum zur Vorlesung Multimedia-Datenbanksysteme}} | #{{Quelle|Kowarschick, W. (MMDB-Skript): Skriptum zur Vorlesung Multimedia-Datenbanksysteme}} | ||
#{{Quelle|Kowarschick, W.: Multimedia-Datenbanksysteme}} | #{{Quelle|Kowarschick, W.: Multimedia-Datenbanksysteme}} | ||
=Siehe auch= | ==Siehe auch== | ||
*{{Vgl|Händler2-Datenbank (SQL-Beispiel)}} (komplexere Version dieser Datenbank) | *{{Vgl|Händler2-Datenbank (SQL-Beispiel)}} (komplexere Version dieser Datenbank) |
Version vom 4. Dezember 2016, 11:27 Uhr
Dieser Artikel erfüllt die GlossarWiki-Qualitätsanforderungen:
Korrektheit: 4 (großteils überprüft) |
Umfang: 5 (wesentliche Fakten vorhanden) |
Quellenangaben: 5 (vollständig vorhanden) |
Quellenarten: 5 (ausgezeichnet) |
Konformität: 5 (ausgezeichnet) |
Das Händler-liefert-Ware-Beispiel ist das klassische Beispiel, um viele Konzepte von Datenbanksystemen und SQL zu demonstieren. Daher wird dieses Beispiel auch in der Vorlesung Multimedia-Datenbanksysteme verwendet.
Datenmodell/ER-Diagramm (in UML-Notation)
Eine Händler, der durch die Händlernummer hnr
eindeutig identifiziert werden kann und weitere Attribute, wie Name, Adresse etc. hat,
liefert bestimmte Waren. Die zugehörigen Entities (Objekte) werden durch den Entity-Typ (die Klasse) haendler
definiert.
Welche Waren es gibt, ist durch einen weiteren Entity-Typ festgelegt: ware
. Eine Ware ist durch die Warennummer wnr
eindeutig festgelgt. Weitere Attribute, wie Typ (Gemüse, Fleisch, Wurst etc.) und genaue Bezeichnung (Kohlrabi, Rinderlende, Crevelat etc.),
beschreiben die jeweilige Ware näher.
Zwischen den Entity-Typen haendler
und ware
besteht eine Beziehung: liefert
. Diese
legt fest, welcher Händler welche Ware zu welchen Konditionen liefert. Ein Lieferant liefert eine Ware normalerweise zu einem bestimmten
Preis. Zusätzlich kann eine gewisse Lieferzeit (in Tagen) angegeben werden. Es ist auch erlaubt, dass ein Händler ein und dieselbe
Ware zu mit unterschiedlichen Preisen unterschiedlich schnell liefert. Um dies zu ermöglichen, muss das Attribut preis
zum orginären Primärschlüssel (hnr, wnr)
der Beziehung liefert
hinzugefügt werden.
Datenbankschema
Dieses Schema wurde nach dem in Kowarschick (MMDB-Skript) beschriebenen Verfahren aus dem obigen ER-Diargramm erzeugt.
Datenbankschema (SQL)
/***********************************************************************
* Alte Tabellen (in der richtigen Reihenfolge) löschen
***********************************************************************/
DROP TABLE IF EXISTS liefert CASCADE;
DROP TABLE IF EXISTS ware CASCADE;
DROP TABLE IF EXISTS haendler CASCADE;
/***********************************************************************
* Tabellen gemäß relationalem Schema erzeugen
***********************************************************************/
CREATE TABLE haendler
(hnr INTEGER NOT NULL,
name VARCHAR(30) NOT NULL,
adresse VARCHAR(50),
CONSTRAINT pk_haendler
PRIMARY KEY (hnr),
CONSTRAINT unique_name_adresse
UNIQUE (name, adresse)
);
CREATE TABLE ware
(wnr INTEGER NOT NULL,
typ VARCHAR(30) NOT NULL DEFAULT 'Sonstiges',
bezeichnung VARCHAR(50) NOT NULL,
CONSTRAINT pk_ware
PRIMARY KEY (wnr),
CONSTRAINT unique_typ_bezeichnung
UNIQUE (typ, bezeichnung)
);
CREATE TABLE liefert
(hnr INTEGER NOT NULL,
wnr INTEGER NOT NULL,
preis NUMERIC(8,2) NOT NULL,
lieferzeit SMALLINT, /* Tage */
CONSTRAINT pk_liefert
PRIMARY KEY (hnr,wnr,preis),
CONSTRAINT fk_liefert_haendler
FOREIGN KEY (hnr) REFERENCES haendler (hnr),
CONSTRAINT fk_liefert_ware
FOREIGN KEY (wnr) REFERENCES ware (wnr),
CONSTRAINT check_lieferzeit
CHECK (lieferzeit >= 0)
);
Beispielsdaten
INSERT INTO haendler(hnr, name, adresse)
VALUES
(1, 'Maier', 'Königsbrunn'),
(2, 'Müller', 'Königsbrunn'),
(3, 'Maier', 'Augsburg'),
(4, 'Huber', NULL),
(5, 'Schmidt', 'Hamburg')
;
INSERT INTO ware(wnr, typ, bezeichnung)
VALUES
(1, 'CPU', 'Pentium IV 3,8'),
(2, 'CPU', 'Celeron 2,6'),
(3, 'CPU', 'Athlon XP 3000+'),
(4, 'RAM', 'SDRAM 1GB'),
(5, 'Sonstiges', 'Eieruhr')
;
INSERT INTO liefert(hnr, wnr, preis, lieferzeit)
VALUES
(1, 1, 200.00, 1),
(1, 1, 194.00, 6),
(1, 2, 100.00, NULL),
(1, 3, 150.00, 7),
(1, 4, 10.00, 1),
(1, 5, 5.00, 1),
(2, 1, 190.00, NULL),
(2, 3, 170.00, 4),
(2, 1, 160.00, 1),
(2, 2, 180.00, NULL),
(3, 1, 195.00, 2),
(3, 2, 190.00, 1),
(4, 1, 150.00, 3),
(4, 3, 180.00, 5),
(4, 3, 199.99, 1)
;
SQL-Beispiele
Quellen
- Kowarschick (MMDB-Skript): Wolfgang Kowarschick; Vorlesung Multimedia-Datenbanksysteme – Sommersemester 2018; Hochschule: Hochschule Augsburg; Adresse: Augsburg; Web-Link; 2018; Quellengüte: 4 (Skript)
- Kowarschick (MMDB): Wolfgang Kowarschick; Vorlesung „Multimedia-Datenbanksysteme“; Hochschule: Hochschule Augsburg; Adresse: Augsburg; Web-Link; 2016; Quellengüte: 3 (Vorlesung)
Siehe auch
- Händler2-Datenbank (SQL-Beispiel) (komplexere Version dieser Datenbank)